mirror of
https://github.com/acidanthera/audk.git
synced 2025-07-01 10:54:27 +02:00
Remove 0xc8000 check when searching PNP header. Remove the check about the size of Init code when validating if PCI 3.0 OPROM is successfully started.
Signed-off-by: Li Elvin <elvin.li@intel.com> Reviewed-by: Ni Ruiyu <ruiyu.ni@intel.com> git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@13944 6f19259b-4bc3-4df7-8a09-765794883524
This commit is contained in:
parent
926704714e
commit
22921b02ab
@ -1500,54 +1500,52 @@ UpdateBevBcvTable (
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (PciPtr >= (EFI_LEGACY_EXPANSION_ROM_HEADER *) ((UINTN) 0xc8000)) {
|
while (TRUE) {
|
||||||
while (TRUE) {
|
Status = FindNextPnpExpansionHeader (Private, Instance, &PnpPtr);
|
||||||
Status = FindNextPnpExpansionHeader (Private, Instance, &PnpPtr);
|
Instance = NOT_FIRST_INSTANCE;
|
||||||
Instance = NOT_FIRST_INSTANCE;
|
if (EFI_ERROR (Status)) {
|
||||||
if (EFI_ERROR (Status)) {
|
break;
|
||||||
break;
|
}
|
||||||
}
|
//
|
||||||
//
|
// There can be additional $PnP headers within the OPROM.
|
||||||
// There can be additional $PnP headers within the OPROM.
|
// Example: SCSI can have one per drive.
|
||||||
// Example: SCSI can have one per drive.
|
//
|
||||||
//
|
BbsTable[BbsIndex].BootPriority = BBS_UNPRIORITIZED_ENTRY;
|
||||||
BbsTable[BbsIndex].BootPriority = BBS_UNPRIORITIZED_ENTRY;
|
BbsTable[BbsIndex].DeviceType = DeviceType;
|
||||||
BbsTable[BbsIndex].DeviceType = DeviceType;
|
BbsTable[BbsIndex].Bus = (UINT32) Bus;
|
||||||
BbsTable[BbsIndex].Bus = (UINT32) Bus;
|
BbsTable[BbsIndex].Device = (UINT32) Device;
|
||||||
BbsTable[BbsIndex].Device = (UINT32) Device;
|
BbsTable[BbsIndex].Function = (UINT32) Function;
|
||||||
BbsTable[BbsIndex].Function = (UINT32) Function;
|
BbsTable[BbsIndex].StatusFlags.OldPosition = 0;
|
||||||
BbsTable[BbsIndex].StatusFlags.OldPosition = 0;
|
BbsTable[BbsIndex].StatusFlags.Reserved1 = 0;
|
||||||
BbsTable[BbsIndex].StatusFlags.Reserved1 = 0;
|
BbsTable[BbsIndex].StatusFlags.Enabled = 0;
|
||||||
BbsTable[BbsIndex].StatusFlags.Enabled = 0;
|
BbsTable[BbsIndex].StatusFlags.Failed = 0;
|
||||||
BbsTable[BbsIndex].StatusFlags.Failed = 0;
|
BbsTable[BbsIndex].StatusFlags.MediaPresent = 0;
|
||||||
BbsTable[BbsIndex].StatusFlags.MediaPresent = 0;
|
BbsTable[BbsIndex].StatusFlags.Reserved2 = 0;
|
||||||
BbsTable[BbsIndex].StatusFlags.Reserved2 = 0;
|
BbsTable[BbsIndex].Class = PnpPtr->Class;
|
||||||
BbsTable[BbsIndex].Class = PnpPtr->Class;
|
BbsTable[BbsIndex].SubClass = PnpPtr->SubClass;
|
||||||
BbsTable[BbsIndex].SubClass = PnpPtr->SubClass;
|
BbsTable[BbsIndex].DescStringOffset = PnpPtr->ProductNamePointer;
|
||||||
BbsTable[BbsIndex].DescStringOffset = PnpPtr->ProductNamePointer;
|
BbsTable[BbsIndex].DescStringSegment = mBbsRomSegment;
|
||||||
BbsTable[BbsIndex].DescStringSegment = mBbsRomSegment;
|
BbsTable[BbsIndex].MfgStringOffset = PnpPtr->MfgPointer;
|
||||||
BbsTable[BbsIndex].MfgStringOffset = PnpPtr->MfgPointer;
|
BbsTable[BbsIndex].MfgStringSegment = mBbsRomSegment;
|
||||||
BbsTable[BbsIndex].MfgStringSegment = mBbsRomSegment;
|
BbsTable[BbsIndex].BootHandlerSegment = mBbsRomSegment;
|
||||||
BbsTable[BbsIndex].BootHandlerSegment = mBbsRomSegment;
|
|
||||||
|
|
||||||
//
|
//
|
||||||
// Have seen case where PXE base code have PnP expansion ROM
|
// Have seen case where PXE base code have PnP expansion ROM
|
||||||
// header but no Bcv or Bev vectors.
|
// header but no Bcv or Bev vectors.
|
||||||
//
|
//
|
||||||
if (PnpPtr->Bcv != 0) {
|
if (PnpPtr->Bcv != 0) {
|
||||||
BbsTable[BbsIndex].BootHandlerOffset = PnpPtr->Bcv;
|
BbsTable[BbsIndex].BootHandlerOffset = PnpPtr->Bcv;
|
||||||
++BbsIndex;
|
++BbsIndex;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (PnpPtr->Bev != 0) {
|
if (PnpPtr->Bev != 0) {
|
||||||
BbsTable[BbsIndex].BootHandlerOffset = PnpPtr->Bev;
|
BbsTable[BbsIndex].BootHandlerOffset = PnpPtr->Bev;
|
||||||
BbsTable[BbsIndex].DeviceType = BBS_BEV_DEVICE;
|
BbsTable[BbsIndex].DeviceType = BBS_BEV_DEVICE;
|
||||||
++BbsIndex;
|
++BbsIndex;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((PnpPtr == (LEGACY_PNP_EXPANSION_HEADER *) PciPtr) || (PnpPtr > (LEGACY_PNP_EXPANSION_HEADER *) RomEnd)) {
|
if ((PnpPtr == (LEGACY_PNP_EXPANSION_HEADER *) PciPtr) || (PnpPtr > (LEGACY_PNP_EXPANSION_HEADER *) RomEnd)) {
|
||||||
break;
|
break;
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -2557,10 +2555,10 @@ LegacyBiosInstallRom (
|
|||||||
//
|
//
|
||||||
// The ROM could have updated it's size so we need to read again.
|
// The ROM could have updated it's size so we need to read again.
|
||||||
//
|
//
|
||||||
if ((((EFI_LEGACY_EXPANSION_ROM_HEADER *) RuntimeAddress)->Signature != PCI_EXPANSION_ROM_HEADER_SIGNATURE) &&
|
if (((EFI_LEGACY_EXPANSION_ROM_HEADER *) RuntimeAddress)->Signature != PCI_EXPANSION_ROM_HEADER_SIGNATURE) {
|
||||||
(((EFI_LEGACY_EXPANSION_ROM_HEADER *) InitAddress)->Size512 == 0)) {
|
|
||||||
//
|
//
|
||||||
// The INIT function didn't copy the RUNTIME code to RuntimeAddress
|
// Now we check the signature (0xaa55) to judge whether the run-time code is truly generated by INIT function.
|
||||||
|
// If signature is not valid, that means the INIT function didn't copy the run-time code to RuntimeAddress.
|
||||||
//
|
//
|
||||||
*RuntimeImageLength = 0;
|
*RuntimeImageLength = 0;
|
||||||
} else {
|
} else {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user