From 959f71c801b447186413532166d3fb2ad9a590da Mon Sep 17 00:00:00 2001 From: Zhi Jin Date: Mon, 15 Jan 2024 16:56:44 +0800 Subject: MdeModulePkg: Optimize CoreConnectSingleController CoreConnectSingleController() searches for the Driver Family Override Protocol drivers by looping and checking each Driver Binding Handles. This loop can be skipped by checking if any Driver Family Override Protocol installed in the platform first, to improve the performance. Cc: Ray Ni Reviewed-by: Liming Gao Reviewed-by: Michael D Kinney Signed-off-by: Zhi Jin --- MdeModulePkg/Core/Dxe/Hand/DriverSupport.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) (limited to 'MdeModulePkg/Core') diff --git a/MdeModulePkg/Core/Dxe/Hand/DriverSupport.c b/MdeModulePkg/Core/Dxe/Hand/DriverSupport.c index 0b824c62b7..64d7474f15 100644 --- a/MdeModulePkg/Core/Dxe/Hand/DriverSupport.c +++ b/MdeModulePkg/Core/Dxe/Hand/DriverSupport.c @@ -497,7 +497,12 @@ CoreConnectSingleController ( // // Add the Driver Family Override Protocol drivers for ControllerHandle // - while (TRUE) { + Status = CoreLocateProtocol ( + &gEfiDriverFamilyOverrideProtocolGuid, + NULL, + (VOID **)&DriverFamilyOverride + ); + while (!EFI_ERROR (Status) && (DriverFamilyOverride != NULL)) { HighestIndex = DriverBindingHandleCount; HighestVersion = 0; for (Index = 0; Index < DriverBindingHandleCount; Index++) { -- cgit