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
//\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