MdeModulePkg/AtaAtapiPassThru: valid ports transverse algo of AHCI controller is updated to handle inconsecutive case

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
This commit is contained in:
erictian 2012-11-09 06:39:56 +00:00
parent f3b4867f94
commit 6b13aa602a
2 changed files with 14 additions and 1 deletions

View File

@ -2202,8 +2202,19 @@ AhciModeInitialization (
return EFI_OUT_OF_RESOURCES;
}
for (Port = 0; Port < MaxPortNumber; Port ++) {
for (Port = 0; Port < EFI_AHCI_MAX_PORTS; Port ++) {
if ((PortImplementBitMap & (BIT0 << Port)) != 0) {
//
// According to AHCI spec, MaxPortNumber should be equal or greater than the number of implemented ports.
//
if ((MaxPortNumber--) == 0) {
//
// Should never be here.
//
ASSERT (FALSE);
return EFI_SUCCESS;
}
IdeInit->NotifyPhase (IdeInit, EfiIdeBeforeChannelEnumeration, Port);
//

View File

@ -26,6 +26,8 @@
#define EFI_AHCI_IS_OFFSET 0x0008
#define EFI_AHCI_PI_OFFSET 0x000C
#define EFI_AHCI_MAX_PORTS 32
typedef struct {
UINT32 Lower32;
UINT32 Upper32;