From 67fc78d026490ea4c375eeb19724abb40e7be8f2 Mon Sep 17 00:00:00 2001 From: Neo Hsueh Date: Fri, 2 Jun 2023 13:05:11 -0500 Subject: MdeModulePkg/Bus: Fix port multiplier port in AhciPei PEIM If there is no port multiplier, PortMultiplierPort should be converted to 0 to follow AHCI spec. The same logic already applied in AtaAtapiPassThruDxe driver. Signed-off-by: Neo Hsueh Acked-by: Abner Chang Reviewed-by: Hao A Wu --- MdeModulePkg/Bus/Ata/AhciPei/AhciPeiPassThru.c | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/MdeModulePkg/Bus/Ata/AhciPei/AhciPeiPassThru.c b/MdeModulePkg/Bus/Ata/AhciPei/AhciPeiPassThru.c index cd55272c96..7bd04661d0 100644 --- a/MdeModulePkg/Bus/Ata/AhciPei/AhciPeiPassThru.c +++ b/MdeModulePkg/Bus/Ata/AhciPei/AhciPeiPassThru.c @@ -3,6 +3,7 @@ mode at PEI phase. Copyright (c) 2019, Intel Corporation. All rights reserved.
+ Copyright (C) 2023 Advanced Micro Devices, Inc. All rights reserved.
SPDX-License-Identifier: BSD-2-Clause-Patent @@ -92,6 +93,15 @@ AhciPassThruExecute ( { EFI_STATUS Status; + if (PortMultiplierPort == 0xFFFF) { + // + // If there is no port multiplier, PortMultiplierPort will be 0xFFFF + // according to UEFI spec. Here, we convert its value to 0 to follow + // AHCI spec. + // + PortMultiplierPort = 0; + } + switch (Packet->Protocol) { case EFI_ATA_PASS_THRU_PROTOCOL_ATA_NON_DATA: Status = AhciNonDataTransfer ( -- cgit v1.2.3