[edk2-devel] [PATCH 0/3] MdeModulePkg: use pool allocations for ACPI tables

Ard Biesheuvel posted 3 patches 3 years, 6 months ago
Failed in applying to current master (apply log)
There is a newer version of this series
.../Universal/Acpi/AcpiTableDxe/AcpiTable.h   |   4 +-
.../Universal/Acpi/AcpiTableDxe/AcpiSdt.c     |   4 +-
.../Acpi/AcpiTableDxe/AcpiTableProtocol.c     | 216 +++++++++++-------
3 files changed, 143 insertions(+), 81 deletions(-)
[edk2-devel] [PATCH 0/3] MdeModulePkg: use pool allocations for ACPI tables
Posted by Ard Biesheuvel 3 years, 6 months ago
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@intel.com>
Cc: Liming Gao <gaoliming@byosoft.com.cn>
Cc: Jian J Wang <jian.j.wang@intel.com>
Cc: Hao A Wu <hao.a.wu@intel.com>
Cc: Sami Mujawar <sami.mujawar@arm.com>
Cc: Laszlo Ersek <lersek@redhat.com>
Cc: Leif Lindholm <leif@nuviainc.com>

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



-=-=-=-=-=-=-=-=-=-=-=-
Groups.io Links: You receive all messages sent to this group.
View/Reply Online (#66323): https://edk2.groups.io/g/devel/message/66323
Mute This Topic: https://groups.io/mt/77553421/1787277
Group Owner: devel+owner@edk2.groups.io
Unsubscribe: https://edk2.groups.io/g/devel/unsub [importer@patchew.org]
-=-=-=-=-=-=-=-=-=-=-=-


[edk2-devel] FW: [PATCH 0/3] MdeModulePkg: use pool allocations for ACPI tables
Posted by Wu, Hao A 3 years, 6 months ago
Forward to Liming's latest mail address.

Best Regards,
Hao Wu

-----Original Message-----
From: Ard Biesheuvel <ard.biesheuvel@arm.com> 
Sent: Friday, October 16, 2020 11:49 PM
To: devel@edk2.groups.io
Cc: Ard Biesheuvel <ard.biesheuvel@arm.com>; Bi, Dandan <dandan.bi@intel.com>; Liming Gao <gaoliming@byosoft.com.cn>; Wang, Jian J <jian.j.wang@intel.com>; Wu, Hao A <hao.a.wu@intel.com>; Sami Mujawar <sami.mujawar@arm.com>; Laszlo Ersek <lersek@redhat.com>; Leif Lindholm <leif@nuviainc.com>
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@intel.com>
Cc: Liming Gao <gaoliming@byosoft.com.cn>
Cc: Jian J Wang <jian.j.wang@intel.com>
Cc: Hao A Wu <hao.a.wu@intel.com>
Cc: Sami Mujawar <sami.mujawar@arm.com>
Cc: Laszlo Ersek <lersek@redhat.com>
Cc: Leif Lindholm <leif@nuviainc.com>

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



-=-=-=-=-=-=-=-=-=-=-=-
Groups.io Links: You receive all messages sent to this group.
View/Reply Online (#66360): https://edk2.groups.io/g/devel/message/66360
Mute This Topic: https://groups.io/mt/77649891/1787277
Group Owner: devel+owner@edk2.groups.io
Unsubscribe: https://edk2.groups.io/g/devel/unsub [importer@patchew.org]
-=-=-=-=-=-=-=-=-=-=-=-


Re: [edk2-devel] [PATCH 0/3] MdeModulePkg: use pool allocations for ACPI tables
Posted by Wu, Hao A 3 years, 6 months ago
Just realized that the right mail address was used for Liming.
Please ignore the previous mail, really sorry for the noise.

Best Regards,
Hao Wu

> -----Original Message-----
> From: devel@edk2.groups.io <devel@edk2.groups.io> On Behalf Of Wu, Hao A
> Sent: Monday, October 19, 2020 9:28 AM
> To: Liming Gao (Byosoft address) <gaoliming@byosoft.com.cn>
> Cc: devel@edk2.groups.io; ard.biesheuvel@arm.com
> Subject: [edk2-devel] FW: [PATCH 0/3] MdeModulePkg: use pool allocations for
> ACPI tables
> 
> Forward to Liming's latest mail address.
> 
> Best Regards,
> Hao Wu
> 
> -----Original Message-----
> From: Ard Biesheuvel <ard.biesheuvel@arm.com>
> Sent: Friday, October 16, 2020 11:49 PM
> To: devel@edk2.groups.io
> Cc: Ard Biesheuvel <ard.biesheuvel@arm.com>; Bi, Dandan
> <dandan.bi@intel.com>; Liming Gao <gaoliming@byosoft.com.cn>; Wang, Jian
> J <jian.j.wang@intel.com>; Wu, Hao A <hao.a.wu@intel.com>; Sami Mujawar
> <sami.mujawar@arm.com>; Laszlo Ersek <lersek@redhat.com>; Leif Lindholm
> <leif@nuviainc.com>
> 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@intel.com>
> Cc: Liming Gao <gaoliming@byosoft.com.cn>
> Cc: Jian J Wang <jian.j.wang@intel.com>
> Cc: Hao A Wu <hao.a.wu@intel.com>
> Cc: Sami Mujawar <sami.mujawar@arm.com>
> Cc: Laszlo Ersek <lersek@redhat.com>
> Cc: Leif Lindholm <leif@nuviainc.com>
> 
> 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
> 
> 
> 
> 
> 



-=-=-=-=-=-=-=-=-=-=-=-
Groups.io Links: You receive all messages sent to this group.
View/Reply Online (#66366): https://edk2.groups.io/g/devel/message/66366
Mute This Topic: https://groups.io/mt/77650256/1787277
Group Owner: devel+owner@edk2.groups.io
Unsubscribe: https://edk2.groups.io/g/devel/unsub [importer@patchew.org]
-=-=-=-=-=-=-=-=-=-=-=-