Changeset 108794 in vbox for trunk/src/VBox/Devices/EFI/FirmwareNew/DynamicTablesPkg/Drivers/DynamicTableManagerDxe/DynamicTableManagerDxe.c
- Timestamp:
- Mar 31, 2025 11:31:09 AM (2 weeks ago)
- svn:sync-xref-src-repo-rev:
- 168237
- Location:
- trunk/src/VBox/Devices/EFI/FirmwareNew
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/Devices/EFI/FirmwareNew
-
Property svn:mergeinfo
changed from (toggle deleted branches)
to (toggle deleted branches)/vendor/edk2/current 103735-103757,103769-103776,129194-164365 /vendor/edk2/current 103735-103757,103769-103776,129194-168232
-
Property svn:mergeinfo
changed from (toggle deleted branches)
-
trunk/src/VBox/Devices/EFI/FirmwareNew/DynamicTablesPkg/Drivers/DynamicTableManagerDxe/DynamicTableManagerDxe.c
r99404 r108794 24 24 #include <SmbiosTableGenerator.h> 25 25 26 /// 27 /// Bit definitions for acceptable ACPI table presence formats. 28 /// Currently only ACPI tables present in the ACPI info list and 29 /// already installed will count towards "Table Present" during 30 /// verification routine. 31 /// 32 #define ACPI_TABLE_PRESENT_INFO_LIST BIT0 33 #define ACPI_TABLE_PRESENT_INSTALLED BIT1 34 35 /// 36 /// Order of ACPI table being verified during presence inspection. 37 /// 38 #define ACPI_TABLE_VERIFY_FADT 0 39 #define ACPI_TABLE_VERIFY_MADT 1 40 #define ACPI_TABLE_VERIFY_GTDT 2 41 #define ACPI_TABLE_VERIFY_DSDT 3 42 #define ACPI_TABLE_VERIFY_DBG2 4 43 #define ACPI_TABLE_VERIFY_SPCR 5 44 #define ACPI_TABLE_VERIFY_COUNT 6 45 46 /// 47 /// Private data structure to verify the presence of mandatory 48 /// or optional ACPI tables. 49 /// 50 typedef struct { 51 /// ESTD ID for the ACPI table of interest. 52 ESTD_ACPI_TABLE_ID EstdTableId; 53 /// Standard UINT32 ACPI signature. 54 UINT32 AcpiTableSignature; 55 /// 4 character ACPI table name (the 5th char8 is for null terminator). 56 CHAR8 AcpiTableName[sizeof (UINT32) + 1]; 57 /// Indicator on whether the ACPI table is required. 58 BOOLEAN IsMandatory; 59 /// Formats of verified presences, as defined by ACPI_TABLE_PRESENT_* 60 /// This field should be initialized to 0 and will be populated during 61 /// verification routine. 62 UINT16 Presence; 63 } ACPI_TABLE_PRESENCE_INFO; 26 #include "DynamicTableManagerDxe.h" 64 27 65 28 /// … … 67 30 /// This list also include optional ACPI tables: DBG2, SPCR. 68 31 /// 69 ACPI_TABLE_PRESENCE_INFO mAcpiVerifyTables[ACPI_TABLE_VERIFY_COUNT] = { 70 { EStdAcpiTableIdFadt, EFI_ACPI_6_2_FIXED_ACPI_DESCRIPTION_TABLE_SIGNATURE, "FADT", TRUE, 0 }, 71 { EStdAcpiTableIdMadt, EFI_ACPI_6_2_MULTIPLE_APIC_DESCRIPTION_TABLE_SIGNATURE, "MADT", TRUE, 0 }, 72 { EStdAcpiTableIdGtdt, EFI_ACPI_6_2_GENERIC_TIMER_DESCRIPTION_TABLE_SIGNATURE, "GTDT", TRUE, 0 }, 73 { EStdAcpiTableIdDsdt, EFI_ACPI_6_2_DIFFERENTIATED_SYSTEM_DESCRIPTION_TABLE_SIGNATURE, "DSDT", TRUE, 0 }, 74 { EStdAcpiTableIdDbg2, EFI_ACPI_6_2_DEBUG_PORT_2_TABLE_SIGNATURE, "DBG2", FALSE, 0 }, 75 { EStdAcpiTableIdSpcr, EFI_ACPI_6_2_SERIAL_PORT_CONSOLE_REDIRECTION_TABLE_SIGNATURE, "SPCR", FALSE, 0 }, 76 }; 32 STATIC ACPI_TABLE_PRESENCE_INFO *mAcpiVerifyTables; 33 STATIC UINT32 mAcpiVerifyTablesCount; 34 STATIC INT32 mAcpiVerifyTablesFadtIndex; 77 35 78 36 /** This macro expands to a function that retrieves the ACPI Table … … 473 431 // Check against the statically initialized ACPI tables to see if they are in ACPI info list 474 432 while (AcpiTableCount-- != 0) { 475 for (Index = 0; Index < ACPI_TABLE_VERIFY_COUNT; Index++) {433 for (Index = 0; Index < mAcpiVerifyTablesCount; Index++) { 476 434 if (AcpiTableInfo[AcpiTableCount].AcpiTableSignature == mAcpiVerifyTables[Index].AcpiTableSignature) { 477 435 mAcpiVerifyTables[Index].Presence |= ACPI_TABLE_PRESENT_INFO_LIST; … … 492 450 } 493 451 494 for (Index = 0; Index < ACPI_TABLE_VERIFY_COUNT; Index++) {452 for (Index = 0; Index < mAcpiVerifyTablesCount; Index++) { 495 453 Handle = 0; 496 454 InstalledTableIndex = 0; … … 512 470 // Reset the return Status value to EFI_SUCCESS. We do not fully care if the table look up has failed. 513 471 Status = EFI_SUCCESS; 514 for (Index = 0; Index < ACPI_TABLE_VERIFY_COUNT; Index++) {472 for (Index = 0; Index < mAcpiVerifyTablesCount; Index++) { 515 473 if (mAcpiVerifyTables[Index].Presence == 0) { 516 474 if (mAcpiVerifyTables[Index].IsMandatory) { … … 624 582 625 583 // Add the FADT Table first. 626 if ((mAcpiVerifyTables[ACPI_TABLE_VERIFY_FADT].Presence & ACPI_TABLE_PRESENT_INSTALLED) == 0) { 584 if ((mAcpiVerifyTablesFadtIndex >= 0) && 585 ((mAcpiVerifyTables[mAcpiVerifyTablesFadtIndex].Presence & ACPI_TABLE_PRESENT_INSTALLED) == 0)) 586 { 627 587 // FADT is not yet installed 628 588 for (Idx = 0; Idx < AcpiTableCount; Idx++) { … … 786 746 )); 787 747 748 Status = GetAcpiTablePresenceInfo ( 749 &mAcpiVerifyTables, 750 &mAcpiVerifyTablesCount, 751 &mAcpiVerifyTablesFadtIndex 752 ); 753 if (EFI_ERROR (Status)) { 754 ASSERT_EFI_ERROR (Status); 755 return Status; 756 } 757 788 758 Status = ProcessAcpiTables (TableFactoryProtocol, CfgMgrProtocol); 789 759 if (EFI_ERROR (Status)) {
Note:
See TracChangeset
for help on using the changeset viewer.