Branch: refs/heads/master
  Home:   https://github.com/tianocore/edk2
  Commit: b1e55f561b4f125124304e640fbd823c648de836
      
https://github.com/tianocore/edk2/commit/b1e55f561b4f125124304e640fbd823c648de836
  Author: Pierre Gondois <[email protected]>
  Date:   2025-06-11 (Wed, 11 Jun 2025)

  Changed paths:
    M DynamicTablesPkg/Library/Acpi/Common/AcpiSratLib/X64/X64SratGenerator.c

  Log Message:
  -----------
  DynamicTablesPkg: X64SratGenerator: Fix ProximityDomain bits

ProximityDomain31To8[0] is overwritten by the ProximityDomain
at bits [17-24] and [25-31]. Populate ProximityDomain31To8[1]
and ProximityDomain31To8[2] instead.

Signed-off-by: Pierre Gondois <[email protected]>


  Commit: 1b7d687dc6a99b1d70d07934c9872569e0798898
      
https://github.com/tianocore/edk2/commit/1b7d687dc6a99b1d70d07934c9872569e0798898
  Author: Pierre Gondois <[email protected]>
  Date:   2025-06-11 (Wed, 11 Jun 2025)

  Changed paths:
    M DynamicTablesPkg/DynamicTables.dsc.inc
    M DynamicTablesPkg/DynamicTablesPkg.dec
    M DynamicTablesPkg/DynamicTablesPkg.dsc
    A DynamicTablesPkg/Include/Library/MetadataObjLib.h
    A DynamicTablesPkg/Library/Common/MetadataObjLib/MetadataObj.c
    A DynamicTablesPkg/Library/Common/MetadataObjLib/MetadataObj.h
    A DynamicTablesPkg/Library/Common/MetadataObjLib/MetadataObjLib.inf

  Log Message:
  -----------
  DynamicTablesPkg: Add MetaDataObjLib library

The DynamicTablesPkg allows to generate firmware tables based on
information provided by a user or another source of information
(a device tree for instance).

Some information might be implicitly generated by generators.
For instance, for ACPI tables, AML names or Uids are created by
generators, but not provided by the user or another source of
information.

Some generators might need to cross-reference object/generated data
that was previous generated for an object by another generator.
For instance, there are three different generators creating serial
ports in the AML namespace. These 3 generators must ensure not to use
an Id which was not already created by another generator.
Another example would be a generator needing to reference the AML
path of a serial port. As the AML path is dynamically generated, this
is currently not possible to do.

Add a MetaDataObjLib library to keep track of the meta-data previously
generated for an object.

Signed-off-by: Pierre Gondois <[email protected]>


  Commit: d15e48853c6ace628d98dac8b5f905f40c50a887
      
https://github.com/tianocore/edk2/commit/d15e48853c6ace628d98dac8b5f905f40c50a887
  Author: Pierre Gondois <[email protected]>
  Date:   2025-06-11 (Wed, 11 Jun 2025)

  Changed paths:
    M DynamicTablesPkg/DynamicTables.dsc.inc
    M DynamicTablesPkg/DynamicTablesPkg.dec
    M DynamicTablesPkg/DynamicTablesPkg.dsc
    A DynamicTablesPkg/Include/Library/MetadataHandlerLib.h
    A DynamicTablesPkg/Library/Common/MetadataHandlerLib/MetadataHandler.c
    A DynamicTablesPkg/Library/Common/MetadataHandlerLib/MetadataHandler.h
    A DynamicTablesPkg/Library/Common/MetadataHandlerLib/MetadataHandlerLib.inf
    A 
DynamicTablesPkg/Library/Common/MetadataHandlerLib/MetadataProximityDomain.c
    A DynamicTablesPkg/Library/Common/MetadataHandlerLib/MetadataUid.c

  Log Message:
  -----------
  DynamicTablesPkg: Add MetadataHandlerLib library

Built on top of the MetadataObjLib, this library aims to
provide functions for each METADATA_ID to:
- Generate new Metadata on the fly: the caller provides
  minimal information for a METADATA_ID, and the library
  generates the missing information.
- Validate all the Metadata objects for a METADATA_ID.
  For instance, _UID must be unique for a _HID/_CID/EISAID.

This patch also adds support for generation/validation of:
- UIDs:
For each EISAID or NameId, UIDs must be unique. The generation
if UIDs is done by a per-EISAID/NameId incrementing counter.
The validation of the Metadata consists in checking for the
uniqueness of the UID per EISAID/NameId.

- ProximityDomains:
Proximity Domain Ids are generated by a counter, starting
from 0.
The validation of the Metadata consists in checking for
the uniqueness of the proximity domain Ids.

Signed-off-by: Pierre Gondois <[email protected]>


  Commit: 771b45250724c9bee6210f041ec137ff27411c78
      
https://github.com/tianocore/edk2/commit/771b45250724c9bee6210f041ec137ff27411c78
  Author: Pierre Gondois <[email protected]>
  Date:   2025-06-11 (Wed, 11 Jun 2025)

  Changed paths:
    M DynamicTablesPkg/Drivers/DynamicTableFactoryDxe/DynamicTableFactoryDxe.c
    M DynamicTablesPkg/Drivers/DynamicTableFactoryDxe/DynamicTableFactoryDxe.inf
    M DynamicTablesPkg/Drivers/DynamicTableManagerDxe/DynamicTableManagerDxe.c
    M DynamicTablesPkg/Drivers/DynamicTableManagerDxe/DynamicTableManagerDxe.inf
    A DynamicTablesPkg/Include/MetadataHelpers.h
    M DynamicTablesPkg/Include/Protocol/DynamicTableFactoryProtocol.h

  Log Message:
  -----------
  DynamicTablesPkg: Add GetMetadataRoot() cb to DynamicTableFactory protocol

The newly added MetadataObjLib allows to store information either:
- generated by the DynamictTablesPkg framework
- provided by a ConfigurationManager
- parsed from another source of information

This information might be subject to validation/verification.
This step can only be done once the firmware tables generated
by the DynamictTablesPkg have been generated.

Add a new GetMetadataRoot() callback to the
EDKII_DYNAMIC_TABLE_FACTORY_PROTOCOL. This callback allows
to fetch the Metadata Root, allowing to access all the Metadata
information generated. This Metadata is then validated by the
DynamicTableManagerDxe.

Signed-off-by: Pierre Gondois <[email protected]>


  Commit: 24d89d099f4e1d30e9f91ef2e436efbe76f1f59d
      
https://github.com/tianocore/edk2/commit/24d89d099f4e1d30e9f91ef2e436efbe76f1f59d
  Author: Pierre Gondois <[email protected]>
  Date:   2025-06-11 (Wed, 11 Jun 2025)

  Changed paths:
    M 
DynamicTablesPkg/Library/Acpi/Common/AcpiSsdtCpuTopologyLib/SsdtCpuTopologyGenerator.c
    M 
DynamicTablesPkg/Library/Acpi/Common/AcpiSsdtCpuTopologyLib/SsdtCpuTopologyLib.inf

  Log Message:
  -----------
  DynamicTablesPkg: SsdtCpuTopologyLib: Use MetadataObjLib for cluster _UID

The processor containers might have an associated _UID:
- in their SSDT topology representation
- in their PPTT representation, in the "ACPI Processor ID" field

The _UID of the processor containers is independently generated
by the PPTT and SSDT CPU topology generators. Make use of the newly
created MetadataObjLib to generate a unique and common per-processor
container _UID values.

Signed-off-by: Pierre Gondois <[email protected]>


  Commit: dbdf94f68ad4301f67fb758f0a4ae41f1f646ede
      
https://github.com/tianocore/edk2/commit/dbdf94f68ad4301f67fb758f0a4ae41f1f646ede
  Author: Pierre Gondois <[email protected]>
  Date:   2025-06-11 (Wed, 11 Jun 2025)

  Changed paths:
    M DynamicTablesPkg/Library/Acpi/Common/AcpiPpttLib/AcpiPpttLib.inf
    M DynamicTablesPkg/Library/Acpi/Common/AcpiPpttLib/PpttGenerator.c

  Log Message:
  -----------
  DynamicTablesPkg: AcpiPpttLib: Use MetadataObjLib for cluster _UID

The processor containers might have an associated _UID:
- in their SSDT topology representation
- in their PPTT representation, in the "ACPI Processor ID" field

The _UID of the processor containers is independently generated
by the PPTT and SSDT CPU topology generators. Make use of the newly
created MetadataObjLib to generate a unique and common per-processor
container _UID values.

Signed-off-by: Pierre Gondois <[email protected]>


  Commit: d5a215ce714ef9f3f32052c3133dea99a99ebeb9
      
https://github.com/tianocore/edk2/commit/d5a215ce714ef9f3f32052c3133dea99a99ebeb9
  Author: Pierre Gondois <[email protected]>
  Date:   2025-06-11 (Wed, 11 Jun 2025)

  Changed paths:
    M DynamicTablesPkg/DynamicTables.dsc.inc
    M DynamicTablesPkg/DynamicTablesPkg.dec
    M DynamicTablesPkg/DynamicTablesPkg.dsc
    A DynamicTablesPkg/Include/Library/CmObjHelperLib.h
    A DynamicTablesPkg/Library/Common/CmObjHelperLib/CmObjHelperLib.c
    A DynamicTablesPkg/Library/Common/CmObjHelperLib/CmObjHelperLib.inf

  Log Message:
  -----------
  DynamicTablesPkg: Add CmObjHelperLib

Some generators share some logic in how they handle CmObj.
In an effort to factorize this code, create a CmObjHelperLib,
aiming to host the common CmObj manipulation logic.

Start by adding a CheckAcpiTablePresent() function, allowing
to check if an ACPI table is in the list of the tables to
install.

Signed-off-by: Pierre Gondois <[email protected]>


  Commit: 8375d2ea6073b3d0681b0d043ba2539a46765d6e
      
https://github.com/tianocore/edk2/commit/8375d2ea6073b3d0681b0d043ba2539a46765d6e
  Author: Pierre Gondois <[email protected]>
  Date:   2025-06-11 (Wed, 11 Jun 2025)

  Changed paths:
    M DynamicTablesPkg/Library/Acpi/Common/AcpiPpttLib/AcpiPpttLib.inf
    M DynamicTablesPkg/Library/Acpi/Common/AcpiPpttLib/PpttGenerator.c
    M 
DynamicTablesPkg/Library/Acpi/Common/AcpiSsdtCpuTopologyLib/SsdtCpuTopologyGenerator.c
    M 
DynamicTablesPkg/Library/Acpi/Common/AcpiSsdtCpuTopologyLib/SsdtCpuTopologyGenerator.h
    M 
DynamicTablesPkg/Library/Acpi/Common/AcpiSsdtCpuTopologyLib/SsdtCpuTopologyLib.inf

  Log Message:
  -----------
  DynamicTablesPkg: Check cluster's VALID bit based on SSDT Topology table

The ACPI specification v6.5, sTable 5.158: Processor Structure Flags
states that:
"""
The processor container will have a matching ID
value returned through the _UID method. As not every pro-
cessor hierarchy node structure in PPTT may have a matching
processor container, this flag indicates whether the ACPI pro-
cessor ID points to valid entry. Where a valid entry is possible
the ACPI Processor ID and _UID method are mandatory.
"""

And in:
Table 5.157: Processor Hierarchy Node Structure
"""
If the processor structure rep-
resents a group of associated processors, the structure might
match a processor container in the name space. In that case
this entry will match the value of the _UID method of the as-
sociated processor container. Where there is a match it must
be represented. The flags field, described in Processor Struc-
ture Flags, includes a bit to describe whether the ACPI pro-
cessor ID is valid.
"""

The DynamicTablesPkg currently creates a processor container:
- in the SSDT CPU Topology generator, with the _HID=ACPI0010,
  and with a valid _UID
- in the PPTT table
for each CM_ARCH_COMMON_PROC_HIERARCHY_INFO structure.
Thus:
- all the processor containers should have the VALID bit set
  if the SSDT CPU Topology table is present.
- if the SSDT CPU Topology table is present, but there is no
  PPTT table, then the state of the VALID bit is ignored.

A contrario, an example where the VALID bit should not be set
would be if:
- the SSDT CPU Topology generator is absent
- no processor container is created in the SSDT topology,
  i.e. if a flat hierarchy is created.

Signed-off-by: Pierre Gondois <[email protected]>


  Commit: 317ef447473a3c8e3e1bc280906779259739e580
      
https://github.com/tianocore/edk2/commit/317ef447473a3c8e3e1bc280906779259739e580
  Author: Pierre Gondois <[email protected]>
  Date:   2025-06-11 (Wed, 11 Jun 2025)

  Changed paths:
    M DynamicTablesPkg/Include/ArchCommonNameSpaceObjects.h
    M DynamicTablesPkg/Include/ArmNameSpaceObjects.h
    M DynamicTablesPkg/Include/X64NameSpaceObjects.h
    M 
DynamicTablesPkg/Library/Common/TableHelperLib/ConfigurationManagerObjectParser.c

  Log Message:
  -----------
  DynamicTablesPkg: Rework ProximityDomain handling

The SRAT/HMAT/SLIT tables describe the relations between
ProximityDomain IDs. These proximity domains might represent
memory domains, CPUs, IO, etc.

ProximityDomain IDs are mere IDs. They don't represent anything
and could be generated by the DynamicTablesPkg framework. These
IDs are currently hard-coded by the ConfigurationManager developer.

In order to:
- avoid the developer to keep track of the used ProximityDomain IDs
- have a better internal representation of the relation between
  CPUs sharing the same ProximityDomain ID
allow the developer to use Tokens pointing to ProximityDomain
structures.

Signed-off-by: Pierre Gondois <[email protected]>


  Commit: 52531b20d6118ba248add53bc78cc4e877f43a16
      
https://github.com/tianocore/edk2/commit/52531b20d6118ba248add53bc78cc4e877f43a16
  Author: Pierre Gondois <[email protected]>
  Date:   2025-06-11 (Wed, 11 Jun 2025)

  Changed paths:
    M DynamicTablesPkg/Include/ArchCommonNameSpaceObjects.h
    M 
DynamicTablesPkg/Library/Common/TableHelperLib/ConfigurationManagerObjectParser.c

  Log Message:
  -----------
  DynamicTablesPkg: Add HMAT/SLIT related objects

Add the following objects:
- EArchCommonObjProxDomainInfo
- EArchCommonObjProxDomainRelationInfo
- EArchCommonObjSystemLocalityInfo
- EArchCommonObjMemoryProxDomainAttrInfo
- EArchCommonObjMemoryLatBwInfo
- EArchCommonObjMemoryCacheInfo
allowing to generate HMAT/SLIT tables.

Signed-off-by: Pierre Gondois <[email protected]>


  Commit: 2ccdb29f9a5c9a69384e6b1ca5f87f85a50e72e8
      
https://github.com/tianocore/edk2/commit/2ccdb29f9a5c9a69384e6b1ca5f87f85a50e72e8
  Author: Pierre Gondois <[email protected]>
  Date:   2025-06-11 (Wed, 11 Jun 2025)

  Changed paths:
    M DynamicTablesPkg/Include/Library/CmObjHelperLib.h
    M DynamicTablesPkg/Library/Common/CmObjHelperLib/CmObjHelperLib.c

  Log Message:
  -----------
  DynamicTablesPkg: Add GetProximityDomainId() to CmObjHelperLib

Proximity domains Ids should now be described using the
CM_ARCH_COMMON_PROXIMITY_DOMAIN_INFO object. This adds a level
of indirection: a Token allows to retrieve a
CM_ARCH_COMMON_PROXIMITY_DOMAIN_INFO object, and this object might
either have a hard-coded Id, or rely on the MetadataObjLib to
generate an Id.

Add a GetProximityDomainId () function to the CmObjHelperLib to
factorize this level of abstraction and allow other generators
to re-use the logic.

Signed-off-by: Pierre Gondois <[email protected]>


  Commit: 5a00ea00e94c3bd6397bc43ee56e67cea789928b
      
https://github.com/tianocore/edk2/commit/5a00ea00e94c3bd6397bc43ee56e67cea789928b
  Author: Pierre Gondois <[email protected]>
  Date:   2025-06-11 (Wed, 11 Jun 2025)

  Changed paths:
    M DynamicTablesPkg/Library/Acpi/Common/AcpiSratLib/AcpiSratLib.inf
    M DynamicTablesPkg/Library/Acpi/Common/AcpiSratLib/Arm/ArmSratGenerator.c
    M DynamicTablesPkg/Library/Acpi/Common/AcpiSratLib/SratGenerator.c
    M DynamicTablesPkg/Library/Acpi/Common/AcpiSratLib/X64/X64SratGenerator.c

  Log Message:
  -----------
  DynamicTablesPkg: AcpiSratLib: Handle new ProximityDomainInfo CmObj

Following the addition of the CM_ARCH_COMMON_PROXIMITY_DOMAIN_INFO
object, rework the Srat Generator.
A Warning message is issued when the Original ProximityDomain
fields are used.

Signed-off-by: Pierre Gondois <[email protected]>


Compare: https://github.com/tianocore/edk2/compare/980da7e0eb49...5a00ea00e94c

To unsubscribe from these emails, change your notification settings at 
https://github.com/tianocore/edk2/settings/notifications


_______________________________________________
edk2-commits mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/edk2-commits

Reply via email to