When a UEFI_DRIVER attempts to open a protocol interface with BY_DRIVER
attribute that it already has open with BY_DRIVER attribute,
OpenProtocol() returns EFI_ALREADY_STARTED. This is not an error. The
UEFI-2.7 spec currently says,

> EFI_ALREADY_STARTED -- Attributes is BY_DRIVER and there is an item on
>                        the open list with an attribute of BY_DRIVER
>                        whose agent handle is the same as AgentHandle.

Downgrade the log mask for this one condition to DEBUG_INFO, in
SataControllerStart(). This will match the log mask of the other two
informative messages in this function.

(ported from commit 5dfba97)

Cc: Jian J Wang <jian.j.w...@intel.com>
Cc: Liming Gao <gaolim...@byosoft.com.cn>
Cc: Hao A Wu <hao.a...@intel.com>
Cc: Ray Ni <ray...@intel.com>
Cc: Laszlo Ersek <ler...@redhat.com>
Signed-off-by: Pedro Falcato <pedro.falc...@gmail.com>
---
 .../Bus/Pci/SataControllerDxe/SataController.c    | 15 +++++++++++++--
 1 file changed, 13 insertions(+), 2 deletions(-)

diff --git a/MdeModulePkg/Bus/Pci/SataControllerDxe/SataController.c 
b/MdeModulePkg/Bus/Pci/SataControllerDxe/SataController.c
index d67a3e69f649..277bc6182db6 100644
--- a/MdeModulePkg/Bus/Pci/SataControllerDxe/SataController.c
+++ b/MdeModulePkg/Bus/Pci/SataControllerDxe/SataController.c
@@ -358,10 +358,12 @@ SataControllerStart (
   UINTN                             TotalCount;
   UINT64                            Supports;
   UINT8                             MaxPortNumber;
+  UINTN                             BailLogMask;
 
   DEBUG ((DEBUG_INFO, "SataControllerStart start\n"));
 
-  Private = NULL;
+  Private     = NULL;
+  BailLogMask = DEBUG_ERROR;
 
   //
   // Now test and open PCI I/O Protocol
@@ -375,6 +377,15 @@ SataControllerStart (
                   EFI_OPEN_PROTOCOL_BY_DRIVER
                   );
   if (EFI_ERROR (Status)) {
+    if (Status == EFI_ALREADY_STARTED) {
+      //
+      // This is an expected condition for OpenProtocol() / BY_DRIVER, in a
+      // DriverBindingStart() member function; degrade the log mask to
+      // DEBUG_INFO in order to reduce log pollution.
+      //
+      BailLogMask = DEBUG_INFO;
+    }
+
     goto Bail;
   }
 
@@ -555,7 +566,7 @@ FreeSataPrivate:
 ClosePciIo:
   gBS->CloseProtocol (Controller, &gEfiPciIoProtocolGuid, 
This->DriverBindingHandle, Controller);
 Bail:
-  DEBUG ((DEBUG_ERROR, "SataControllerStart error return status = %r\n", 
Status));
+  DEBUG ((BailLogMask, "SataControllerStart error return status = %r\n", 
Status));
   return Status;
 }
 
-- 
2.40.1



-=-=-=-=-=-=-=-=-=-=-=-
Groups.io Links: You receive all messages sent to this group.
View/Reply Online (#104407): https://edk2.groups.io/g/devel/message/104407
Mute This Topic: https://groups.io/mt/98787855/21656
Group Owner: devel+ow...@edk2.groups.io
Unsubscribe: https://edk2.groups.io/g/devel/unsub [arch...@mail-archive.com]
-=-=-=-=-=-=-=-=-=-=-=-


Reply via email to