Signed-off-by: Feng Tian <feng.tian@intel.com>
Reviewed-by: Liming Gao <liming.gao@intel.com>
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@13932
6f19259b-4bc3-4df7-8a09-
765794883524
return EFI_OUT_OF_RESOURCES;\r
}\r
\r
return EFI_OUT_OF_RESOURCES;\r
}\r
\r
- for (Port = 0; Port < MaxPortNumber; Port ++) {\r
+ for (Port = 0; Port < EFI_AHCI_MAX_PORTS; Port ++) {\r
if ((PortImplementBitMap & (BIT0 << Port)) != 0) {\r
if ((PortImplementBitMap & (BIT0 << Port)) != 0) {\r
+ //\r
+ // According to AHCI spec, MaxPortNumber should be equal or greater than the number of implemented ports.\r
+ //\r
+ if ((MaxPortNumber--) == 0) {\r
+ //\r
+ // Should never be here.\r
+ //\r
+ ASSERT (FALSE);\r
+ return EFI_SUCCESS;\r
+ }\r
+\r
IdeInit->NotifyPhase (IdeInit, EfiIdeBeforeChannelEnumeration, Port);\r
\r
//\r
IdeInit->NotifyPhase (IdeInit, EfiIdeBeforeChannelEnumeration, Port);\r
\r
//\r
#define EFI_AHCI_IS_OFFSET 0x0008\r
#define EFI_AHCI_PI_OFFSET 0x000C\r
\r
#define EFI_AHCI_IS_OFFSET 0x0008\r
#define EFI_AHCI_PI_OFFSET 0x000C\r
\r
+#define EFI_AHCI_MAX_PORTS 32\r
+\r
typedef struct {\r
UINT32 Lower32;\r
UINT32 Upper32;\r
typedef struct {\r
UINT32 Lower32;\r
UINT32 Upper32;\r