MdeModulePkg/SataControllerDxe: Log expected errors at DEBUG_INFO level

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)

Signed-off-by: Pedro Falcato <pedro.falcato@gmail.com>
Reviewed-by: Laszlo Ersek <lersek@redhat.com>
Reviewed-by: Hao A Wu <hao.a.wu@intel.com>
This commit is contained in:
Pedro Falcato 2023-06-01 18:27:30 +01:00 committed by mergify[bot]
parent 5e8958472c
commit 897a2b447e
1 changed files with 13 additions and 2 deletions

View File

@ -358,10 +358,12 @@ SataControllerStart (
UINTN TotalCount; UINTN TotalCount;
UINT64 Supports; UINT64 Supports;
UINT8 MaxPortNumber; UINT8 MaxPortNumber;
UINTN BailLogMask;
DEBUG ((DEBUG_INFO, "SataControllerStart start\n")); DEBUG ((DEBUG_INFO, "SataControllerStart start\n"));
Private = NULL; Private = NULL;
BailLogMask = DEBUG_ERROR;
// //
// Now test and open PCI I/O Protocol // Now test and open PCI I/O Protocol
@ -375,6 +377,15 @@ SataControllerStart (
EFI_OPEN_PROTOCOL_BY_DRIVER EFI_OPEN_PROTOCOL_BY_DRIVER
); );
if (EFI_ERROR (Status)) { 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; goto Bail;
} }
@ -555,7 +566,7 @@ FreeSataPrivate:
ClosePciIo: ClosePciIo:
gBS->CloseProtocol (Controller, &gEfiPciIoProtocolGuid, This->DriverBindingHandle, Controller); gBS->CloseProtocol (Controller, &gEfiPciIoProtocolGuid, This->DriverBindingHandle, Controller);
Bail: Bail:
DEBUG ((DEBUG_ERROR, "SataControllerStart error return status = %r\n", Status)); DEBUG ((BailLogMask, "SataControllerStart error return status = %r\n", Status));
return Status; return Status;
} }