Reviewed-by: Jordan Justen <jordan.l.jus...@intel.com>

On 2014-11-17 08:16:35, Laszlo Ersek wrote:
> The ACPI payload that OVMF downloads from QEMU via fw_cfg depends on the
> PCI enumaration and resource assignment performed by
> MdeModulePkg/Bus/Pci/PciBusDxe.
> 
> Namely, although the ACPI payload is pre-generated in qemu during machine
> initialization, in
> 
>   main()                                            [vl.c]
>     qemu_run_machine_init_done_notifiers()
>       pc_guest_info_machine_done()                  [hw/i386/pc.c]
>         acpi_setup()                                [hw/i386/acpi-build.c]
>           acpi_build()
>           acpi_add_rom_blob()
>             rom_add_blob(... acpi_build_update ...) [hw/core/loader.c]
>               fw_cfg_add_file_callback()            [hw/nvram/fw_cfg.c]
> 
> the ACPI data is rebuilt at the first time any of the related fw_cfg files
> are read, through the acpi_build_update() fw_cfg read-callback function:
> 
>   fw_cfg_read()                                     [hw/nvram/fw_cfg.c]
>     acpi_build_update()                             [hw/i386/acpi-build.c]
>       acpi_build()
> 
> (See qemu commit d87072ceeccf4f84a64d4bc59124bcd64286c070 and its
> containing series.)
> 
> For this reason we must not dispatch AcpiPlatformDxe before PciBusDxe
> completes the enumeration.
> 
> Luckily, the PI Specification 1.3 defines
> EFI_PCI_ENUMERATION_COMPLETE_GUID in Volume 5, "10.9 End of PCI
> Enumeration Overview", as an indicia to inform the platform when the PCI
> enumeration process has completed. PciBusDxe installs this protocol at the
> end of the PciEnumerator() function.
> 
> Let's add this GUID to the Depex section of AcpiPlatformDxe, in order to
> state the dependency explicitly.
> 
> On Xen, and on older QEMU where the linker/loader fw_cfg interface is
> unavailable, this introduces a harmless ordering constraint -- we'll
> always include PciBusDxe in OVMF, so the dependency will always be
> satisfied.
> 
> I tested this change as follows:
> 
> - I dumped the ACPI tables in a Fedora 20 guest, before and after the
>   change, and compared them. The only thing that actually changed was the
>   FACS address. (Which I promptly tested with S3 suspend/resume.) Plus, of
>   course, the FACP checksum changed, because the FACP links the FACS.
> 
> - Tested S3 in my Windows Server 2008 R2 and Windows Server 2012 R2 guests.
> 
> Contributed-under: TianoCore Contribution Agreement 1.0
> Signed-off-by: Laszlo Ersek <ler...@redhat.com>
> ---
>  OvmfPkg/AcpiPlatformDxe/AcpiPlatformDxe.inf | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/OvmfPkg/AcpiPlatformDxe/AcpiPlatformDxe.inf 
> b/OvmfPkg/AcpiPlatformDxe/AcpiPlatformDxe.inf
> index 3229d71..c6dced2 100644
> --- a/OvmfPkg/AcpiPlatformDxe/AcpiPlatformDxe.inf
> +++ b/OvmfPkg/AcpiPlatformDxe/AcpiPlatformDxe.inf
> @@ -66,5 +66,5 @@
>    gUefiOvmfPkgTokenSpaceGuid.PcdOvmfFdBaseAddress
>  
>  [Depex]
> -  gEfiAcpiTableProtocolGuid
> +  gEfiAcpiTableProtocolGuid AND gEfiPciEnumerationCompleteProtocolGuid
>  
> -- 
> 1.8.3.1
> 
> 
> ------------------------------------------------------------------------------
> Download BIRT iHub F-Type - The Free Enterprise-Grade BIRT Server
> from Actuate! Instantly Supercharge Your Business Reports and Dashboards
> with Interactivity, Sharing, Native Excel Exports, App Integration & more
> Get technology previously reserved for billion-dollar corporations, FREE
> http://pubads.g.doubleclick.net/gampad/clk?id=157005751&iu=/4140/ostg.clktrk
> _______________________________________________
> edk2-devel mailing list
> edk2-devel@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/edk2-devel

------------------------------------------------------------------------------
Download BIRT iHub F-Type - The Free Enterprise-Grade BIRT Server
from Actuate! Instantly Supercharge Your Business Reports and Dashboards
with Interactivity, Sharing, Native Excel Exports, App Integration & more
Get technology previously reserved for billion-dollar corporations, FREE
http://pubads.g.doubleclick.net/gampad/clk?id=157005751&iu=/4140/ostg.clktrk
_______________________________________________
edk2-devel mailing list
edk2-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/edk2-devel

Reply via email to