audk/DynamicTablesPkg/Library/Acpi/Arm
Pierre Gondois 18f463edba DynamicTablesPkg/SsdtCpuTopology: Allow multi-packages topologies
The topology of a platform is represented in ACPI using the PPTT
table. It is possible to append information to CPUs/processor
containers using their associated AML nodes in a SSDT
table.
A platform might have multiple 'physical packages' (or top-level
nodes) in their PPTT topology representation. It can be assumed
from [1] that a 'physical packages' is always a 'top-level node',
and conversely.

The SSDT topology generator doesn't support having multiple top-level
nodes. The top-level node is also not generated in the SSDT topology
representation.
Add support to generate multiple top-level nodes in the SSDT topology
generator and generate an AML node for this top-level node. This will
allow to have matching PPTT and SSDT topology representations. Prior
to this patch, this top-level AML node was not generated.

Also factorize the flag checking in CheckProcNode() and add more
checks.

This patch takes inspiration from the discussion at:
- v1: https://edk2.groups.io/g/devel/message/99410
- v2: https://edk2.groups.io/g/devel/message/99615

[1]
ACPI 6.5, 5.2.30.1 Processor hierarchy node structure (Type 0):
- "Multiple trees may be described, covering for example multiple
  packages. For the root of a tree, the parent pointer should be 0.""
- "Each valid processor must belong to exactly one package. That is,
  the leaf must itself be a physical package or have an ancestor
  marked as a physical package."

Suggested-by: Jeff Brasen <jbrasen@nvidia.com>
Signed-off-by: Pierre Gondois <pierre.gondois@arm.com>
Reviewed-by: Jeff Brasen <jbrasen@nvidia.com>
Reviewed-by: Sami Mujawar <sami.mujawar@arm.com>
2023-04-25 10:52:24 +00:00
..
AcpiDbg2LibArm DynamicTablesPkg: Fix serial port namespace path in DBG2 2022-03-15 14:33:03 +00:00
AcpiFadtLibArm DynamicTablesPkg: Add support to specify FADT minor revision 2022-07-15 18:07:49 +00:00
AcpiGtdtLibArm DynamicTablesPkg: Apply uncrustify changes 2021-12-07 17:24:28 +00:00
AcpiIortLibArm DynamicTablesPkg: Fix using RmrNodeCount unitlitialised 2022-08-06 06:56:50 +00:00
AcpiMadtLibArm DynamicTablesPkg: Apply uncrustify changes 2021-12-07 17:24:28 +00:00
AcpiMcfgLibArm DynamicTablesPkg: Apply uncrustify changes 2021-12-07 17:24:28 +00:00
AcpiPcctLibArm DynamicTablesPkg: Add PCCT Generator 2022-10-31 12:32:32 +00:00
AcpiPpttLibArm DynamicTablesPkg/AcpiPpttLibArm: Fix debug macro arguments 2022-09-09 01:42:39 +00:00
AcpiRawLibArm DynamicTablesPkg: Apply uncrustify changes 2021-12-07 17:24:28 +00:00
AcpiSpcrLibArm DynamicTablesPkg: Apply uncrustify changes 2021-12-07 17:24:28 +00:00
AcpiSratLibArm DynamicTablesPkg: Apply uncrustify changes 2021-12-07 17:24:28 +00:00
AcpiSsdtCmn600LibArm DynamicTablesPkg: Remove duplicated words 2022-12-13 14:30:20 +00:00
AcpiSsdtCpuTopologyLibArm DynamicTablesPkg/SsdtCpuTopology: Allow multi-packages topologies 2023-04-25 10:52:24 +00:00
AcpiSsdtPcieLibArm DynamicTablesPkg: Fix Ssdt PCI generation comments 2022-10-31 12:32:32 +00:00
AcpiSsdtSerialPortLibArm DynamicTablesPkg: Remove duplicated words 2022-12-13 14:30:20 +00:00