Changeset 90907 in vbox for trunk/src/VBox/Devices/EFI/Firmware
- Timestamp:
- Aug 26, 2021 10:17:06 AM (4 years ago)
- svn:sync-xref-src-repo-rev:
- 146543
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/Devices/EFI/Firmware/MdeModulePkg/Universal/Acpi/AcpiPlatformDxe/AcpiPlatform.c
r80721 r90907 150 150 #ifdef VBOX 151 151 152 /* Disables the old code only copying a selection of tables, missing out a bunch of things available in the XSDT/RSDT. */ 153 # define ACPI_NO_STATIC_TABLES_SELECTION 1 154 152 155 # define ACPI_RSD_PTR SIGNATURE_64('R', 'S', 'D', ' ', 'P', 'T', 'R', ' ') 153 156 # define EBDA_BASE (0x9FC0 << 4) … … 180 183 } 181 184 185 #ifndef ACPI_NO_STATIC_TABLES_SELECTION 182 186 VOID *FindSignature(VOID* Start, UINT32 Signature, BOOLEAN NoChecksum) 183 187 { … … 198 202 return NULL; 199 203 } 204 #endif 200 205 201 206 VOID … … 204 209 UINT32 Table = 0; 205 210 EFI_ACPI_2_0_ROOT_SYSTEM_DESCRIPTION_POINTER *RsdPtr; 211 #ifndef ACPI_NO_STATIC_TABLES_SELECTION 206 212 VOID *TablesPage; 213 #else 214 EFI_ACPI_DESCRIPTION_HEADER *RsdtTbl; 215 #endif 216 UINT64 *PtrTbl; 217 UINT32 Index; 218 219 RsdPtr = (EFI_ACPI_2_0_ROOT_SYSTEM_DESCRIPTION_POINTER*)FindAcpiRsdPtr(); 220 ASSERT(RsdPtr != NULL); 221 222 #ifndef ACPI_NO_STATIC_TABLES_SELECTION 207 223 #define FLAG_OPTIONAL 1<<0 208 224 #define FLAG_NO_CHECKSUM 1<<1 … … 227 243 { SIGNATURE_32('M', 'C', 'F', 'G'), FLAG_OPTIONAL, "MCFG"} 228 244 }; 229 UINT32 Index; 230 231 RsdPtr = (EFI_ACPI_2_0_ROOT_SYSTEM_DESCRIPTION_POINTER*)FindAcpiRsdPtr(); 232 ASSERT(RsdPtr != NULL); 233 TablesPage = (VOID*)(UINTN)((RsdPtr->RsdtAddress) & ~0xfff); 245 246 TablesPage = (VOID *)(UINTN)((RsdPtr->RsdtAddress) & ~0xfff); 234 247 DEBUG((DEBUG_INFO, "TablesPage:%p\n", TablesPage)); 235 248 … … 253 266 Tables[Table++] = Ptr; 254 267 } 268 #else 269 RsdtTbl = (EFI_ACPI_DESCRIPTION_HEADER*)(UINTN)RsdPtr->XsdtAddress; 270 DEBUG((DEBUG_INFO, "RsdtTbl:%p\n", RsdtTbl)); 271 272 PtrTbl = (UINT64 *)(RsdtTbl + 1); 273 for (Index = 0; Index < (RsdtTbl->Length - sizeof(*RsdtTbl)) / sizeof(UINT64); Index++) 274 { 275 EFI_ACPI_DESCRIPTION_HEADER *Header = (EFI_ACPI_DESCRIPTION_HEADER *)(UINTN)*PtrTbl++; 276 DEBUG ((DEBUG_VERBOSE, "Table %p found \"%-4.4a\" size 0x%x\n", Header, (CONST CHAR8 *)&Header->Signature, Header->Length)); 277 278 if (Header->Signature == SIGNATURE_32('F', 'A', 'C', 'P')) 279 { 280 /* Add the DSDT pointer from there. */ 281 EFI_ACPI_2_0_FIXED_ACPI_DESCRIPTION_TABLE *Fadt = (EFI_ACPI_2_0_FIXED_ACPI_DESCRIPTION_TABLE *)Header; 282 DEBUG((DEBUG_INFO, "Found FACP: DSDT 0x%x FACS 0x%x XDsdt %p XFacs %p\n", Fadt->Dsdt, Fadt->FirmwareCtrl, Fadt->XDsdt, Fadt->XFirmwareCtrl)); 283 Tables[Table++] = (VOID *)(UINTN)Fadt->FirmwareCtrl; 284 Tables[Table++] = (VOID *)(UINTN)Fadt->Dsdt; 285 } 286 287 Tables[Table++] = Header; 288 } 289 #endif 255 290 256 291 #if 0 … … 270 305 #endif 271 306 272 DEBUG((DEBUG_INFO, "We found %d tables from %d\n", Table, TablesSize));307 DEBUG((DEBUG_INFO, "We found %d tables (max allowed %d)\n", Table, TablesSize)); 273 308 Tables[Table] = NULL; 274 309 } … … 298 333 EFI_ACPI_TABLE_PROTOCOL *AcpiTable; 299 334 #ifdef VBOX 335 # ifndef ACPI_NO_STATIC_TABLES_SELECTION 300 336 VOID *VBoxTables[10]; 337 # else 338 VOID *VBoxTables[128]; 339 # endif 301 340 #else 302 341 EFI_FIRMWARE_VOLUME2_PROTOCOL *FwVol;
Note:
See TracChangeset
for help on using the changeset viewer.