]> git.proxmox.com Git - mirror_edk2.git/blobdiff - MdeModulePkg/Bus/Ata/AhciPei/AhciMode.c
MdeModulePkg/AhciPei: Fix device cannot be found in non-S3 path
[mirror_edk2.git] / MdeModulePkg / Bus / Ata / AhciPei / AhciMode.c
index 7287f8290e9edf9625dca50afb405fc43d84433e..8c491bd138656e2d62463cfd84337f405a0204cc 100644 (file)
@@ -1713,7 +1713,7 @@ AhciModeInitialization (
   MaxPortNumber = MIN (MaxPortNumber, (UINT8)(UINTN)(HighBitSet32(PortImplementBitMap) + 1));\r
   MaxPortNumber = MIN (MaxPortNumber, AhciGetNumberOfPortsFromMap (Private->PortBitMap));\r
 \r
-  PortInitializeBitMap = Private->PortBitMap;\r
+  PortInitializeBitMap = Private->PortBitMap & PortImplementBitMap;\r
   AhciRegisters        = &Private->AhciRegisters;\r
   DeviceIndex          = 0;\r
   //\r
@@ -1721,6 +1721,13 @@ AhciModeInitialization (
   //\r
   for (PortIndex = 1; PortIndex <= MaxPortNumber; PortIndex ++) {\r
     Status = AhciGetPortFromMap (PortInitializeBitMap, PortIndex, &Port);\r
+    if (EFI_ERROR (Status)) {\r
+      //\r
+      // No more available port, just break out of the loop.\r
+      //\r
+      break;\r
+    }\r
+\r
     if ((PortImplementBitMap & (BIT0 << Port)) != 0) {\r
       //\r
       // Initialize FIS Base Address Register and Command List Base Address\r