Re: [edk2] [PATCH v3] OvmfPkg: AcpiPlatformDxe: download ACPI tables from QEMU

Subject: Re: [edk2] [PATCH v3] OvmfPkg: AcpiPlatformDxe: download ACPI tables from QEMU

From: Laszlo Ersek <lersek@redhat.com>

To: "Jordan Justen (GMail address)" <jljusten@gmail.com>

Date: 2014-03-28 08:18:08

On 03/27/14 22:00, Laszlo Ersek wrote:
> On 03/27/14 19:05, Jordan Justen wrote:
>> On Tue, Mar 25, 2014 at 4:58 PM, Laszlo Ersek  wrote:

>>> - The patch causes a regression in PCI resource allocation for some guest
>>>   RAM sizes (eg. 2560MB) when OVMF runs on qemu v1.7.0 precisely, and the
>>>   "pc-i440fx-1.7" (ie. default) machine type is selected. This bug has
>>>   been fixed in qemu v1.7.1 (commit 03bc4f6 -- "piix: fix 32bit pci
>>>   hole").
>>
>> Doesn't this cause a hang in certain situations? Could you more
>> clearly indicate the symptom seen on 1.7.0?
> 
> I hope this one's clear enough :) :
> 
> http://thread.gmane.org/gmane.comp.emulators.qemu/257366/focus=257529
> 
> Dependent on guest, it may cause a nonfunctional display (blank screen),
> but (as linked above) some Linux guests like to crash too.

Please see also, from the v1 discussion:

http://thread.gmane.org/gmane.comp.bios.tianocore.devel/4881/focus=5021

What we have reached with qemu commit 03bc4f6 is this:

              > (2) PCI resource alloc
             /
  (1) memmap
        ||
   (X) qemu
           \
            > (3) ACPI
                      \
                       > (4) guest OS access -- matches (2) by way of
                                                code duplication
                                                between (1) and (X)

The "code duplication" here means that after stable 1.7.x commit
03bc4f6, and 2.0 commit ddaaefb4, it's not only OVMF that allocates the
PCI bars for the devices starting right above the top of the low memory,
but also qemu advertises the same range in the _CRS that it exports to
the guest OS (which OVMF passes through blindly).

Qemu 1.7.0 exports a _CRS that doesn't cover all of the PCI bars that
OVMF allocates, for some guest RAM sizes (because OVMF starts mapping
just above the top of low RAM, like always, but qemu-1.7.0 starts the
_CRS higher than that). Accesses to a subset of the bars (ie. those that
would fall outside (== below) the qemu-exported _CRS) wouldn't reach the
devices.

Laszlo

------------------------------------------------------------------------------
_______________________________________________
edk2-devel mailing list
edk2-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/edk2-devel