On Wed, Mar 24, 2021 at 02:33 PM, Laszlo Ersek wrote: > > >> >>> >>>> Hi all, >>>> Would it be acceptable/feasible for AcpiTableDxe or AcpiPlatformDxe (in >>>> MdeModulePkg) to use `EfiGetSystemConfigurationTable` to get the RSDP >>>> and then install the tables? It's a solution that uses the regular >>>> UefiLib, so it avoids platform-specific quirks (and as I see it, if RSDP >>>> is in the configuration table, we probably always want those tables). >>> >>> I'm sorry, I don't understand how this would help. >> >> As I understand it, the issue is that this patchset changes MdeModulePkg >> to do platform-specific parsing. >> >> Perhaps it would be an acceptable solution for platforms to retrieve the >> tables, then add >> RSDP/them to the configuration table to be installed by >> AcpiTableDxe/AcpiPlatformDxe. >> This allows MdeModulePkg to abstract away the parsing, only installing >> tables >> available to it. > > But this is already the best approach, and already what's happening -- > when you call EFI_ACPI_TABLE_PROTOCOL.InstallAcpiTable() from the > platform's AcpiPlatformDxe, that's *how* you tell AcpiTableDxe in > MdeModulePkg to pick up the table and hook it into the RSDT / XSDT / > wherever, and also to manage RSD PTR as a UEFI configuration table. > > Are you (more or less) proposing a new EFI_ACPI_TABLE_PROTOCOL member > function for taking a forest of ACPI tables, passed in by RSD PTR? Yes. I thought the implementation of AcpiPlatformDxe in MdeModulePkg could take it, so it will install ACPI tables from flash or from memory. Regarding UefiPayloadPkg: gEfiAcpiTableGuid is not a HOB. It's an entry in gUefiSystemTableInfoGuid (which is a HOB) that was installed in the config table. Therefore, retrieving its GUID as a HOB in AcpiTableDxe fails. To make this patchset work in UefiPayloadPkg (actually a fork), I have to add AcpiTableDxe to its FDF, drop patch 2/2 and make `InstallAcpiTableFromHob` do `Status = EfiGetSystemConfigurationTable (&gEfiAcpiTableGuid, (VOID **) &Rsdp);`. Then, this patchset works: "acpiview" shell command shows tables from QEMU + coreboot, as well as a BGRT.