Some ConIn or ConOut device may not in the first root bridge, so connect all root bridge before detect ConIn and ConOut device.
Cc: Guo Dong <guo.d...@intel.com> Cc: Ray Ni <ray...@intel.com> Cc: Maurice Ma <maurice...@intel.com> Cc: Benjamin You <benjamin....@intel.com> Cc: Sean Rhodes <sean@starlabs.systems> Signed-off-by: Zhiguang Liu <zhiguang....@intel.com> --- .../PlatformBootManagerLib.inf | 1 + .../PlatformBootManagerLib/PlatformConsole.c | 52 ++++++------------- 2 files changed, 18 insertions(+), 35 deletions(-) diff --git a/UefiPayloadPkg/Library/PlatformBootManagerLib/PlatformBootManagerLib.inf b/UefiPayloadPkg/Library/PlatformBootManagerLib/PlatformBootManagerLib.inf index acf2880d22..9f58c460cd 100644 --- a/UefiPayloadPkg/Library/PlatformBootManagerLib/PlatformBootManagerLib.inf +++ b/UefiPayloadPkg/Library/PlatformBootManagerLib/PlatformBootManagerLib.inf @@ -61,6 +61,7 @@ gEfiSmmAccess2ProtocolGuid gUniversalPayloadPlatformBootManagerOverrideProtocolGuid gEfiSerialIoProtocolGuid + gEfiPciRootBridgeIoProtocolGuid [Pcd] gEfiMdePkgTokenSpaceGuid.PcdPlatformBootTimeOut diff --git a/UefiPayloadPkg/Library/PlatformBootManagerLib/PlatformConsole.c b/UefiPayloadPkg/Library/PlatformBootManagerLib/PlatformConsole.c index 5e1c77d866..e4a9f5f0f9 100644 --- a/UefiPayloadPkg/Library/PlatformBootManagerLib/PlatformConsole.c +++ b/UefiPayloadPkg/Library/PlatformBootManagerLib/PlatformConsole.c @@ -38,9 +38,6 @@ SPDX-License-Identifier: BSD-2-Clause-Patent 0 \ } -#define gPciRootBridge \ - PNPID_DEVICE_PATH_NODE(0x0A03) - #define gPnp16550ComPort \ PNPID_DEVICE_PATH_NODE(0x0501) @@ -64,19 +61,6 @@ ACPI_HID_DEVICE_PATH gPnpPs2KeyboardDeviceNode = gPnpPs2Keyboard; ACPI_HID_DEVICE_PATH gPnp16550ComPortDeviceNode = gPnp16550ComPort; VENDOR_DEVICE_PATH gTerminalTypeDeviceNode = gPcAnsiTerminal; -// -// Predefined platform root bridge -// -PLATFORM_ROOT_BRIDGE_DEVICE_PATH gPlatformRootBridge0 = { - gPciRootBridge, - gEndEntire -}; - -EFI_DEVICE_PATH_PROTOCOL *gPlatformRootBridges[] = { - (EFI_DEVICE_PATH_PROTOCOL *)&gPlatformRootBridge0, - NULL -}; - BOOLEAN mDetectDisplayOnly; /** @@ -456,32 +440,26 @@ DetectAndPreparePlatformPciDevicePaths ( } /** - The function will connect root bridge + The function will connect one root bridge - @return EFI_SUCCESS Connect RootBridge successfully. + @param[in] Handle - The root bridge handle + @param[in] Instance - The instance of the root bridge + @param[in] Context - The context of the callback + + @return EFI_SUCCESS Connect RootBridge successfully. **/ EFI_STATUS -ConnectRootBridge ( - VOID +EFIAPI +ConnectOneRootBridge ( + IN EFI_HANDLE Handle, + IN VOID *Instance, + IN VOID *Context ) { EFI_STATUS Status; - EFI_HANDLE RootHandle; - - // - // Make all the PCI_IO protocols on PCI Seg 0 show up - // - Status = gBS->LocateDevicePath ( - &gEfiDevicePathProtocolGuid, - &gPlatformRootBridges[0], - &RootHandle - ); - if (EFI_ERROR (Status)) { - return Status; - } - Status = gBS->ConnectController (RootHandle, NULL, NULL, FALSE); + Status = gBS->ConnectController (Handle, NULL, NULL, FALSE); if (EFI_ERROR (Status)) { return Status; } @@ -500,7 +478,11 @@ PlatformConsoleInit ( VOID ) { - ConnectRootBridge (); + VisitAllInstancesOfProtocol ( + &gEfiPciRootBridgeIoProtocolGuid, + ConnectOneRootBridge, + NULL + ); // // Do platform specific PCI Device check and add them to ConOut, ConIn, ErrOut -- 2.32.0.windows.2 -=-=-=-=-=-=-=-=-=-=-=- Groups.io Links: You receive all messages sent to this group. View/Reply Online (#89639): https://edk2.groups.io/g/devel/message/89639 Mute This Topic: https://groups.io/mt/91007799/21656 Group Owner: devel+ow...@edk2.groups.io Unsubscribe: https://edk2.groups.io/g/devel/unsub [arch...@mail-archive.com] -=-=-=-=-=-=-=-=-=-=-=-