[edk2] [PATCH 4/5] OvmfPkg/PlatformBootManagerLib: hoist PciAcpiInitialization()

Laszlo Ersek posted 5 patches 6 years, 9 months ago
[edk2] [PATCH 4/5] OvmfPkg/PlatformBootManagerLib: hoist PciAcpiInitialization()
Posted by Laszlo Ersek 6 years, 9 months ago
  PlatformBootManagerAfterConsole()
                              <--------------------------------+
    PlatformBdsConnectSequence()                               |
      ConnectDevicesFromQemu() / EfiBootManagerConnectAll()    |
      PciAcpiInitialization() ---------------------------------+
    TryRunningQemuKernel()

Functionally this is a no-op:

- PciAcpiInitialization() iterates over PciIo protocol instances, which
  are available just the same at the new call site.

- The PCI interrupt line register exists only to inform system software
  (it doesn't affect hardware) and UEFI drivers don't use PCI interrupts
  anyway.

(More background in commits 2e70cf8ade0d and 5218c27950c4.)

This change will let us move TryRunningQemuKernel() between
PciAcpiInitialization() and PlatformBdsConnectSequence() in the next
patch.

Cc: "Gabriel L. Somlo" <gsomlo@gmail.com>
Cc: Ard Biesheuvel <ard.biesheuvel@linaro.org>
Cc: Jordan Justen <jordan.l.justen@intel.com>
Contributed-under: TianoCore Contribution Agreement 1.1
Signed-off-by: Laszlo Ersek <lersek@redhat.com>
---
 OvmfPkg/Library/PlatformBootManagerLib/BdsPlatform.c | 7 +++++--
 1 file changed, 5 insertions(+), 2 deletions(-)

diff --git a/OvmfPkg/Library/PlatformBootManagerLib/BdsPlatform.c b/OvmfPkg/Library/PlatformBootManagerLib/BdsPlatform.c
index b155639f3c97..b624b8f22535 100644
--- a/OvmfPkg/Library/PlatformBootManagerLib/BdsPlatform.c
+++ b/OvmfPkg/Library/PlatformBootManagerLib/BdsPlatform.c
@@ -1356,14 +1356,12 @@ PlatformBdsConnectSequence (
     //
     // Just use the simple policy to connect all devices
     //
     DEBUG ((DEBUG_INFO, "EfiBootManagerConnectAll\n"));
     EfiBootManagerConnectAll ();
   }
-
-  PciAcpiInitialization ();
 }
 
 /**
   Save the S3 boot script.
 
   Note that DxeSmmReadyToLock must be signaled after this function returns;
@@ -1443,12 +1441,17 @@ PlatformBootManagerAfterConsole (
 
   //
   // Logo show
   //
   BootLogoEnableLogo ();
 
+  //
+  // Set PCI Interrupt Line registers and ACPI SCI_EN
+  //
+  PciAcpiInitialization ();
+
   //
   // Perform some platform specific connect sequence
   //
   PlatformBdsConnectSequence ();
 
   //
-- 
2.14.1.3.gb7cf6e02401b


_______________________________________________
edk2-devel mailing list
edk2-devel@lists.01.org
https://lists.01.org/mailman/listinfo/edk2-devel
Re: [edk2] [PATCH 4/5] OvmfPkg/PlatformBootManagerLib: hoist PciAcpiInitialization()
Posted by Gabriel L. Somlo 6 years, 9 months ago
On Thu, Mar 15, 2018 at 08:02:57PM +0100, Laszlo Ersek wrote:
>   PlatformBootManagerAfterConsole()
>                               <--------------------------------+
>     PlatformBdsConnectSequence()                               |
>       ConnectDevicesFromQemu() / EfiBootManagerConnectAll()    |
>       PciAcpiInitialization() ---------------------------------+
>     TryRunningQemuKernel()
> 
> Functionally this is a no-op:
> 
> - PciAcpiInitialization() iterates over PciIo protocol instances, which
>   are available just the same at the new call site.
> 
> - The PCI interrupt line register exists only to inform system software
>   (it doesn't affect hardware) and UEFI drivers don't use PCI interrupts
>   anyway.
> 
> (More background in commits 2e70cf8ade0d and 5218c27950c4.)
> 
> This change will let us move TryRunningQemuKernel() between
> PciAcpiInitialization() and PlatformBdsConnectSequence() in the next
> patch.
> 
> Cc: "Gabriel L. Somlo" <gsomlo@gmail.com>
> Cc: Ard Biesheuvel <ard.biesheuvel@linaro.org>
> Cc: Jordan Justen <jordan.l.justen@intel.com>
> Contributed-under: TianoCore Contribution Agreement 1.1
> Signed-off-by: Laszlo Ersek <lersek@redhat.com>
> ---
>  OvmfPkg/Library/PlatformBootManagerLib/BdsPlatform.c | 7 +++++--
>  1 file changed, 5 insertions(+), 2 deletions(-)
> 
> diff --git a/OvmfPkg/Library/PlatformBootManagerLib/BdsPlatform.c b/OvmfPkg/Library/PlatformBootManagerLib/BdsPlatform.c
> index b155639f3c97..b624b8f22535 100644
> --- a/OvmfPkg/Library/PlatformBootManagerLib/BdsPlatform.c
> +++ b/OvmfPkg/Library/PlatformBootManagerLib/BdsPlatform.c
> @@ -1356,14 +1356,12 @@ PlatformBdsConnectSequence (
>      //
>      // Just use the simple policy to connect all devices
>      //
>      DEBUG ((DEBUG_INFO, "EfiBootManagerConnectAll\n"));
>      EfiBootManagerConnectAll ();
>    }
> -
> -  PciAcpiInitialization ();
>  }
>  
>  /**
>    Save the S3 boot script.
>  
>    Note that DxeSmmReadyToLock must be signaled after this function returns;
> @@ -1443,12 +1441,17 @@ PlatformBootManagerAfterConsole (
>  
>    //
>    // Logo show
>    //
>    BootLogoEnableLogo ();
>  
> +  //
> +  // Set PCI Interrupt Line registers and ACPI SCI_EN
> +  //
> +  PciAcpiInitialization ();
> +

Acked-by: Gabriel Somlo <gsomlo@gmail.com>

>    //
>    // Perform some platform specific connect sequence
>    //
>    PlatformBdsConnectSequence ();
>  
>    //
> -- 
> 2.14.1.3.gb7cf6e02401b
> 
> 
_______________________________________________
edk2-devel mailing list
edk2-devel@lists.01.org
https://lists.01.org/mailman/listinfo/edk2-devel