FW: [PATCH 0/3] MdeModulePkg: use pool allocations for ACPI tables


Wu, Hao A
 

Forward to Liming's latest mail address.

Best Regards,
Hao Wu

-----Original Message-----
From: Ard Biesheuvel <ard.biesheuvel@...>
Sent: Friday, October 16, 2020 11:49 PM
To: devel@edk2.groups.io
Cc: Ard Biesheuvel <ard.biesheuvel@...>; Bi, Dandan <dandan.bi@...>; Liming Gao <gaoliming@...>; Wang, Jian J <jian.j.wang@...>; Wu, Hao A <hao.a.wu@...>; Sami Mujawar <sami.mujawar@...>; Laszlo Ersek <lersek@...>; Leif Lindholm <leif@...>
Subject: [PATCH 0/3] MdeModulePkg: use pool allocations for ACPI tables

Currently, the AcpiTableDxe memory allocator uses page based allocations, for which the only reason seems to be that it permits the use of a memory limit, which is necessary for ACPI 1.0 tables that need to reside in the first 4 GB of memory.

That requirement does not exist on AArch64, and since page based allocations are rounded up to 64 KB multiples, this wastes some memory in a way that can easily be avoided. So let's use the existing 'mAcpiTableAllocType'
policy variable, and switch to pool allocations if it is set to 'AllocateAnyPages'

Example output from Linux booting on ArmVirtQemu:

Before:
ACPI: RSDP 0x0000000078510000 000024 (v02 BOCHS )
ACPI: XSDT 0x0000000078500000 00004C (v01 BOCHS BXPCFACP 00000001 01000013)
ACPI: FACP 0x00000000784C0000 00010C (v05 BOCHS BXPCFACP 00000001 BXPC 00000001)
ACPI: DSDT 0x00000000784D0000 0014BB (v02 BOCHS BXPCDSDT 00000001 BXPC 00000001)
ACPI: APIC 0x00000000784B0000 0000A8 (v03 BOCHS BXPCAPIC 00000001 BXPC 00000001)
ACPI: GTDT 0x00000000784A0000 000060 (v02 BOCHS BXPCGTDT 00000001 BXPC 00000001)
ACPI: MCFG 0x0000000078490000 00003C (v01 BOCHS BXPCMCFG 00000001 BXPC 00000001)
ACPI: SPCR 0x0000000078480000 000050 (v02 BOCHS BXPCSPCR 00000001 BXPC 00000001)

After:
ACPI: RSDP 0x000000007C030018 000024 (v02 BOCHS )
ACPI: XSDT 0x000000007C03FE98 00004C (v01 BOCHS BXPCFACP 00000001 01000013)
ACPI: FACP 0x000000007C03FA98 00010C (v05 BOCHS BXPCFACP 00000001 BXPC 00000001)
ACPI: DSDT 0x000000007C037518 0014BB (v02 BOCHS BXPCDSDT 00000001 BXPC 00000001)
ACPI: APIC 0x000000007C03FC18 0000A8 (v03 BOCHS BXPCAPIC 00000001 BXPC 00000001)
ACPI: GTDT 0x000000007C03FD18 000060 (v02 BOCHS BXPCGTDT 00000001 BXPC 00000001)
ACPI: MCFG 0x000000007C03FE18 00003C (v01 BOCHS BXPCMCFG 00000001 BXPC 00000001)
ACPI: SPCR 0x000000007C03FF98 000050 (v02 BOCHS BXPCSPCR 00000001 BXPC 00000001)

Cc: Dandan Bi <dandan.bi@...>
Cc: Liming Gao <gaoliming@...>
Cc: Jian J Wang <jian.j.wang@...>
Cc: Hao A Wu <hao.a.wu@...>
Cc: Sami Mujawar <sami.mujawar@...>
Cc: Laszlo Ersek <lersek@...>
Cc: Leif Lindholm <leif@...>

Ard Biesheuvel (3):
MdeModulePkg/AcpiTableDxe: use pool allocations when possible
MdeModulePkg/AcpiTableDxe: use pool allocation for RSDT/XSDT if
possible
MdeModulePkg/AcpiTableDxe: use pool allocation for RSDP if possible

.../Universal/Acpi/AcpiTableDxe/AcpiTable.h | 4 +-
.../Universal/Acpi/AcpiTableDxe/AcpiSdt.c | 4 +-
.../Acpi/AcpiTableDxe/AcpiTableProtocol.c | 216 +++++++++++-------
3 files changed, 143 insertions(+), 81 deletions(-)

--
2.17.1

Join devel@edk2.groups.io to automatically receive all group messages.