IntelSiliconPkg/IntelVTd: update PlatformVtdPolicy
1. Handle flexible exception list format. 1.1 Handle DeviceScope based device info. 1.2 Handle PciDeviceId based device info. 2. Reorg the PCI_DEVICE_INFORMATION 2.1 Merge data pointer reduce allocation times 2.2 Add PCI device id to PCI_DEVICE_INFORMATION 2.3 Rename PciDescriptor to avoid confusing. 3. Fix the debug message too long issue. Cc: Star Zeng <star.zeng@intel.com> Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Jiewen Yao <jiewen.yao@intel.com> Reviewed-by: Star Zeng <star.zeng@intel.com>
This commit is contained in:
@@ -33,16 +33,16 @@ CreateExtContextEntry (
|
||||
VTD_EXT_ROOT_ENTRY *ExtRootEntry;
|
||||
VTD_EXT_CONTEXT_ENTRY *ExtContextEntryTable;
|
||||
VTD_EXT_CONTEXT_ENTRY *ExtContextEntry;
|
||||
VTD_SOURCE_ID *PciDescriptor;
|
||||
VTD_SOURCE_ID *PciSourceId;
|
||||
VTD_SOURCE_ID SourceId;
|
||||
UINTN MaxBusNumber;
|
||||
UINTN EntryTablePages;
|
||||
|
||||
MaxBusNumber = 0;
|
||||
for (Index = 0; Index < mVtdUnitInformation[VtdIndex].PciDeviceInfo.PciDescriptorNumber; Index++) {
|
||||
PciDescriptor = &mVtdUnitInformation[VtdIndex].PciDeviceInfo.PciDescriptors[Index];
|
||||
if (PciDescriptor->Bits.Bus > MaxBusNumber) {
|
||||
MaxBusNumber = PciDescriptor->Bits.Bus;
|
||||
for (Index = 0; Index < mVtdUnitInformation[VtdIndex].PciDeviceInfo.PciDeviceDataNumber; Index++) {
|
||||
PciSourceId = &mVtdUnitInformation[VtdIndex].PciDeviceInfo.PciDeviceData[Index].PciSourceId;
|
||||
if (PciSourceId->Bits.Bus > MaxBusNumber) {
|
||||
MaxBusNumber = PciSourceId->Bits.Bus;
|
||||
}
|
||||
}
|
||||
DEBUG ((DEBUG_INFO," MaxBusNumber - 0x%x\n", MaxBusNumber));
|
||||
@@ -58,12 +58,12 @@ CreateExtContextEntry (
|
||||
mVtdUnitInformation[VtdIndex].ExtRootEntryTable = (VTD_EXT_ROOT_ENTRY *)Buffer;
|
||||
Buffer = (UINT8 *)Buffer + EFI_PAGES_TO_SIZE (RootPages);
|
||||
|
||||
for (Index = 0; Index < mVtdUnitInformation[VtdIndex].PciDeviceInfo.PciDescriptorNumber; Index++) {
|
||||
PciDescriptor = &mVtdUnitInformation[VtdIndex].PciDeviceInfo.PciDescriptors[Index];
|
||||
for (Index = 0; Index < mVtdUnitInformation[VtdIndex].PciDeviceInfo.PciDeviceDataNumber; Index++) {
|
||||
PciSourceId = &mVtdUnitInformation[VtdIndex].PciDeviceInfo.PciDeviceData[Index].PciSourceId;
|
||||
|
||||
SourceId.Bits.Bus = PciDescriptor->Bits.Bus;
|
||||
SourceId.Bits.Device = PciDescriptor->Bits.Device;
|
||||
SourceId.Bits.Function = PciDescriptor->Bits.Function;
|
||||
SourceId.Bits.Bus = PciSourceId->Bits.Bus;
|
||||
SourceId.Bits.Device = PciSourceId->Bits.Device;
|
||||
SourceId.Bits.Function = PciSourceId->Bits.Function;
|
||||
|
||||
ExtRootEntry = &mVtdUnitInformation[VtdIndex].ExtRootEntryTable[SourceId.Index.RootIndex];
|
||||
if (ExtRootEntry->Bits.LowerPresent == 0) {
|
||||
|
Reference in New Issue
Block a user