mirror of
https://github.com/acidanthera/audk.git
synced 2025-07-24 22:24:37 +02:00
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:
parent
f3b4867f94
commit
6b13aa602a
@ -2202,8 +2202,19 @@ AhciModeInitialization (
|
|||||||
return EFI_OUT_OF_RESOURCES;
|
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) {
|
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);
|
IdeInit->NotifyPhase (IdeInit, EfiIdeBeforeChannelEnumeration, Port);
|
||||||
|
|
||||||
//
|
//
|
||||||
|
@ -26,6 +26,8 @@
|
|||||||
#define EFI_AHCI_IS_OFFSET 0x0008
|
#define EFI_AHCI_IS_OFFSET 0x0008
|
||||||
#define EFI_AHCI_PI_OFFSET 0x000C
|
#define EFI_AHCI_PI_OFFSET 0x000C
|
||||||
|
|
||||||
|
#define EFI_AHCI_MAX_PORTS 32
|
||||||
|
|
||||||
typedef struct {
|
typedef struct {
|
||||||
UINT32 Lower32;
|
UINT32 Lower32;
|
||||||
UINT32 Upper32;
|
UINT32 Upper32;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user