* [edk2][PATCH V1 1/1] MdePkg/IndustryStandard: add definitions for MPAM ACPI specification @ 2023-01-25 0:39 Rohit Mathew 2023-01-29 5:39 ` 回复: " gaoliming 2023-03-29 9:56 ` Sami Mujawar 0 siblings, 2 replies; 7+ messages in thread From: Rohit Mathew @ 2023-01-25 0:39 UTC (permalink / raw) To: devel Cc: Michael D Kinney, Sami Mujawar, Liming Gao, Zhiguang Liu, Thomas Abraham, Swatisri Kantamsetti add definitions, macros and types for elements associated with MPAM ACPI 2.0 specification. Signed-off-by: Rohit Mathew <rohit.mathew@arm.com> --- MdePkg/Include/IndustryStandard/Acpi64.h | 7 +- MdePkg/Include/IndustryStandard/Mpam.h | 229 ++++++++++++++++++++ 2 files changed, 235 insertions(+), 1 deletion(-) github link: https://github.com/rohit-arm/edk2/tree/mpam_acpi diff --git a/MdePkg/Include/IndustryStandard/Acpi64.h b/MdePkg/Include/IndustryStandard/Acpi64.h index 575ca0430c..2be9525979 100644 --- a/MdePkg/Include/IndustryStandard/Acpi64.h +++ b/MdePkg/Include/IndustryStandard/Acpi64.h @@ -2,7 +2,7 @@ ACPI 6.4 definitions from the ACPI Specification Revision 6.4 Jan, 2021. Copyright (c) 2017 - 2022, Intel Corporation. All rights reserved.<BR> - Copyright (c) 2019 - 2021, ARM Ltd. All rights reserved.<BR> + Copyright (c) 2019 - 2023, ARM Limited. All rights reserved.<BR> SPDX-License-Identifier: BSD-2-Clause-Patent **/ @@ -3157,6 +3157,11 @@ typedef struct { /// #define EFI_ACPI_6_4_XEN_PROJECT_TABLE_SIGNATURE SIGNATURE_32('X', 'E', 'N', 'V') +/// +/// "MPAM" Memory System Resource Partitioning and Monitoring Table +/// +#define EFI_ACPI_MEMORY_SYSTEM_RESOURCE_PARTITIONING_AND_MONITORING_TABLE_SIGNATURE SIGNATURE_32('M', 'P', 'A', 'M') + #pragma pack() #endif diff --git a/MdePkg/Include/IndustryStandard/Mpam.h b/MdePkg/Include/IndustryStandard/Mpam.h new file mode 100644 index 0000000000..8e6e72ea28 --- /dev/null +++ b/MdePkg/Include/IndustryStandard/Mpam.h @@ -0,0 +1,229 @@ +/** @file + ACPI for Memory System Resource Partitioning and Monitoring 2.0 (MPAM) as + specified in ARM spec DEN0065 + + Copyright (c) 2023, Arm Limited. All rights reserved. + + SPDX-License-Identifier: BSD-2-Clause-Patent + + @par Specification Reference: + - [1] ACPI for Memory System Resource Partitioning and Monitoring 2.0 + (https://developer.arm.com/documentation/den0065/latest) + + @par Glossary: + - MPAM - Memory System Resource Partitioning And Monitoring + - MSC - Memory System Component + - PCC - Platform Communication Channel + - RIS - Resource Instance Selection + - SMMU - Arm System Memory Management Unit + **/ + +#ifndef MPAM_H_ +#define MPAM_H_ + +#include <IndustryStandard/Acpi.h> + +/// +/// MPAM Revision +/// +#define EFI_ACPI_MEMORY_SYSTEM_RESOURCE_PARTITIONING_AND_MONITORING_TABLE_REVISION (0x01) + +/// +/// MPAM Interrupt mode +/// +#define EFI_ACPI_MPAM_INTERRUPT_LEVEL_TRIGGERED (0x0) +#define EFI_ACPI_MPAM_INTERRUPT_EDGE_TRIGGERED (0x1) + +/// +/// MPAM Interrupt type +/// +#define EFI_ACPI_MPAM_INTERRUPT_WIRED (0x0) + +/// +/// MPAM Interrupt affinity type +/// +#define EFI_ACPI_MPAM_PROCESSOR_AFFINITY (0x0) +#define EFI_ACPI_MPAM_PROCESSOR_CONTAINER_AFFINITY (0x1) + +/// +/// MPAM MSC affinity valid +/// +#define EFI_ACPI_MPAM_AFFINITY_NOT_VALID (0x0) +#define EFI_ACPI_MPAM_AFFINITY_VALID (0x1) + +/// +/// MPAM Interrupt flag - bit positions +/// +#define EFI_ACPI_MPAM_INTERRUPT_MODE_POS (0x0) +#define EFI_ACPI_MPAM_INTERRUPT_TYPE_POS (0x1) +#define EFI_ACPI_MPAM_AFFINITY_TYPE_POS (0x3) +#define EFI_ACPI_MPAM_AFFINITY_VALID_POS (0x4) +#define EFI_ACPI_MPAM_RESERVED_POS (0x5) + +/// +/// MPAM Location types +/// as described in document [1], table 11 +/// +#define EFI_ACPI_MPAM_LOCATION_PROCESSOR_CACHE (0x0) +#define EFI_ACPI_MPAM_LOCATION_MEMORY (0x1) +#define EFI_ACPI_MPAM_LOCATION_SMMU (0x2) +#define EFI_ACPI_MPAM_LOCATION_MEMORY_CACHE (0x3) +#define EFI_ACPI_MPAM_LOCATION_ACPI_DEVICE (0x4) +#define EFI_ACPI_MPAM_LOCATION_INTERCONNECT (0x5) +#define EFI_ACPI_MPAM_LOCATION_UNKNOWN (0xFF) + +/// +/// MPAM Interface types +/// +#define EFI_ACPI_MPAM_INTERFACE_MMIO (0x0) +#define EFI_ACPI_MPAM_INTERFACE_PCC (0x0A) + +#pragma pack(1) + +/// +/// MPAM MSC generic locator descriptor +/// as described in document [1], table 12 +/// +typedef struct { + UINT64 Descriptor1; + UINT32 Descriptor2; +} EFI_ACPI_MPAM_GENERIC_LOCATOR; + +/// +/// MPAM processor cache locator descriptor +/// as described in document [1], table 13 +/// +typedef struct { + UINT64 CacheReference; + UINT32 Reserved; +} EFI_ACPI_MPAM_CACHE_LOCATOR; + +/// +/// MPAM memory locator descriptor +/// as described in document [1], table 14 +/// +typedef struct { + UINT64 ProximityDomain; + UINT32 Reserved; +} EFI_ACPI_MPAM_MEMORY_LOCATOR; + +/// +/// MPAM SMMU locator descriptor +/// as described in document [1], table 15 +/// +typedef struct { + UINT64 SmmuInterface; + UINT32 Reserved; +} EFI_ACPI_MPAM_SMMU_LOCATOR; + +/// +/// MPAM memory-side cache locator descriptor +/// as described in Document [1], table 16 +/// +typedef struct { + UINT8 Reserved[7]; + UINT8 Level; + UINT32 Reference; +} EFI_ACPI_MPAM_MEMORY_CACHE_LOCATOR; + +/// +/// MPAM ACPI device locator descriptor +/// as described in document [1], table 17 +/// +typedef struct { + UINT64 AcpiHardwareId; + UINT32 AcpiUniqueId; +} EFI_ACPI_MPAM_ACPI_LOCATOR; + +/// +/// MPAM interconnect locator descriptor +/// as described in document [1], table 18 +/// +typedef struct { + UINT64 InterconnectDescTblOff; + UINT32 Reserved; +} EFI_ACPI_MPAM_INTERCONNECT_LOCATOR; + +/// +/// MPAM interconnect descriptor +/// as described in document [1], table 19 +/// +typedef struct { + UINT32 SourceID; + UINT32 DestinationID; + UINT8 LinkType; + UINT8 Reserved[3]; +} EFI_ACPI_MPAM_INTERCONNECT_DESCRIPTOR; + +/// +/// MPAM interconnect descriptor table +/// as described in document [1], table 20 +/// +typedef struct { + UINT8 Signature[16]; + UINT32 NumDescriptors; +} EFI_ACPI_MPAM_INTERCONNECT_DESCRIPTOR_TABLE; + +/// +/// MPAM resource locator +/// +typedef union { + EFI_ACPI_MPAM_CACHE_LOCATOR CacheLocator; + EFI_ACPI_MPAM_MEMORY_LOCATOR MemoryLocator; + EFI_ACPI_MPAM_SMMU_LOCATOR SmmuLocator; + EFI_ACPI_MPAM_MEMORY_CACHE_LOCATOR MemCacheLocator; + EFI_ACPI_MPAM_ACPI_LOCATOR AcpiLocator; + EFI_ACPI_MPAM_INTERCONNECT_LOCATOR InterconnectIfcLocator; + EFI_ACPI_MPAM_GENERIC_LOCATOR GenericLocator; +} EFI_ACPI_MPAM_LOCATOR; + +/// +/// MPAM MSC node body +/// as described document [1], table 4 +/// +typedef struct { + UINT16 Length; + UINT8 InterfaceType; + UINT8 Reserved; + UINT32 Identifier; + UINT64 BaseAddress; + UINT32 MmioSize; + UINT32 OverflowInterrupt; + UINT32 OverflowInterruptFlags; + UINT32 Reserved1; + UINT32 OverflowInterruptAffinity; + UINT32 ErrorInterrupt; + UINT32 ErrorInterruptFlags; + UINT32 Reserved2; + UINT32 ErrorInterruptAffinity; + UINT32 MaxNrdyUsec; + UINT64 HIDLinkedDevice; + UINT32 InstanceIDLinkedDevice; + UINT32 NumResources; +} EFI_ACPI_MPAM_MSC_NODE; + +/// +/// MPAM MSC resource +/// as described in document [1], table 9 +/// +typedef struct { + UINT32 Identifier; + UINT8 RisIndex; + UINT16 Reserved1; + UINT8 LocatorType; + EFI_ACPI_MPAM_LOCATOR Locator; + UINT32 NumDependencies; +} EFI_ACPI_MPAM_MSC_RESOURCE; + +/// +/// MPAM Function dependency descriptor +/// as described in document [1], table 10 +/// +typedef struct { + UINT32 Producer; + UINT32 Reserved; +} EFI_ACPI_MPAM_FUNCTIONAL_DEPENDENCY_DESCRIPTOR; + +#pragma pack() + +#endif -- 2.25.1 ^ permalink raw reply related [flat|nested] 7+ messages in thread
* 回复: [edk2][PATCH V1 1/1] MdePkg/IndustryStandard: add definitions for MPAM ACPI specification 2023-01-25 0:39 [edk2][PATCH V1 1/1] MdePkg/IndustryStandard: add definitions for MPAM ACPI specification Rohit Mathew @ 2023-01-29 5:39 ` gaoliming 2023-02-13 21:01 ` Rohit Mathew [not found] ` <17437E1124F9F6B0.21535@groups.io> 2023-03-29 9:56 ` Sami Mujawar 1 sibling, 2 replies; 7+ messages in thread From: gaoliming @ 2023-01-29 5:39 UTC (permalink / raw) To: 'Rohit Mathew', devel Cc: 'Michael D Kinney', 'Sami Mujawar', 'Zhiguang Liu', 'Thomas Abraham', 'Swatisri Kantamsetti' Acked-by: Liming Gao <gaoliming@byosoft.com.cn> > -----邮件原件----- > 发件人: Rohit Mathew <rohit.mathew@arm.com> > 发送时间: 2023年1月25日 8:39 > 收件人: devel@edk2.groups.io > 抄送: Michael D Kinney <michael.d.kinney@intel.com>; Sami Mujawar > <sami.mujawar@arm.com>; Liming Gao <gaoliming@byosoft.com.cn>; > Zhiguang Liu <ZhiguangLiu@arm.com>; Thomas Abraham > <thomas.abraham@arm.com>; Swatisri Kantamsetti <swatisrik@nvidia.com> > 主题: [edk2][PATCH V1 1/1] MdePkg/IndustryStandard: add definitions for > MPAM ACPI specification > > add definitions, macros and types for elements associated with MPAM > ACPI 2.0 specification. > > Signed-off-by: Rohit Mathew <rohit.mathew@arm.com> > --- > MdePkg/Include/IndustryStandard/Acpi64.h | 7 +- > MdePkg/Include/IndustryStandard/Mpam.h | 229 > ++++++++++++++++++++ > 2 files changed, 235 insertions(+), 1 deletion(-) > > github link: > https://github.com/rohit-arm/edk2/tree/mpam_acpi > > diff --git a/MdePkg/Include/IndustryStandard/Acpi64.h > b/MdePkg/Include/IndustryStandard/Acpi64.h > index 575ca0430c..2be9525979 100644 > --- a/MdePkg/Include/IndustryStandard/Acpi64.h > +++ b/MdePkg/Include/IndustryStandard/Acpi64.h > @@ -2,7 +2,7 @@ > ACPI 6.4 definitions from the ACPI Specification Revision 6.4 Jan, 2021. > > Copyright (c) 2017 - 2022, Intel Corporation. All rights reserved.<BR> > - Copyright (c) 2019 - 2021, ARM Ltd. All rights reserved.<BR> > + Copyright (c) 2019 - 2023, ARM Limited. All rights reserved.<BR> > > SPDX-License-Identifier: BSD-2-Clause-Patent > **/ > @@ -3157,6 +3157,11 @@ typedef struct { > /// > #define EFI_ACPI_6_4_XEN_PROJECT_TABLE_SIGNATURE > SIGNATURE_32('X', 'E', 'N', 'V') > > +/// > +/// "MPAM" Memory System Resource Partitioning and Monitoring Table > +/// > +#define > EFI_ACPI_MEMORY_SYSTEM_RESOURCE_PARTITIONING_AND_MONITORIN > G_TABLE_SIGNATURE SIGNATURE_32('M', 'P', 'A', 'M') > + > #pragma pack() > > #endif > diff --git a/MdePkg/Include/IndustryStandard/Mpam.h > b/MdePkg/Include/IndustryStandard/Mpam.h > new file mode 100644 > index 0000000000..8e6e72ea28 > --- /dev/null > +++ b/MdePkg/Include/IndustryStandard/Mpam.h > @@ -0,0 +1,229 @@ > +/** @file > + ACPI for Memory System Resource Partitioning and Monitoring 2.0 (MPAM) > as > + specified in ARM spec DEN0065 > + > + Copyright (c) 2023, Arm Limited. All rights reserved. > + > + SPDX-License-Identifier: BSD-2-Clause-Patent > + > + @par Specification Reference: > + - [1] ACPI for Memory System Resource Partitioning and Monitoring 2.0 > + (https://developer.arm.com/documentation/den0065/latest) > + > + @par Glossary: > + - MPAM - Memory System Resource Partitioning And Monitoring > + - MSC - Memory System Component > + - PCC - Platform Communication Channel > + - RIS - Resource Instance Selection > + - SMMU - Arm System Memory Management Unit > + **/ > + > +#ifndef MPAM_H_ > +#define MPAM_H_ > + > +#include <IndustryStandard/Acpi.h> > + > +/// > +/// MPAM Revision > +/// > +#define > EFI_ACPI_MEMORY_SYSTEM_RESOURCE_PARTITIONING_AND_MONITORIN > G_TABLE_REVISION (0x01) > + > +/// > +/// MPAM Interrupt mode > +/// > +#define EFI_ACPI_MPAM_INTERRUPT_LEVEL_TRIGGERED (0x0) > +#define EFI_ACPI_MPAM_INTERRUPT_EDGE_TRIGGERED (0x1) > + > +/// > +/// MPAM Interrupt type > +/// > +#define EFI_ACPI_MPAM_INTERRUPT_WIRED (0x0) > + > +/// > +/// MPAM Interrupt affinity type > +/// > +#define EFI_ACPI_MPAM_PROCESSOR_AFFINITY (0x0) > +#define EFI_ACPI_MPAM_PROCESSOR_CONTAINER_AFFINITY (0x1) > + > +/// > +/// MPAM MSC affinity valid > +/// > +#define EFI_ACPI_MPAM_AFFINITY_NOT_VALID (0x0) > +#define EFI_ACPI_MPAM_AFFINITY_VALID (0x1) > + > +/// > +/// MPAM Interrupt flag - bit positions > +/// > +#define EFI_ACPI_MPAM_INTERRUPT_MODE_POS (0x0) > +#define EFI_ACPI_MPAM_INTERRUPT_TYPE_POS (0x1) > +#define EFI_ACPI_MPAM_AFFINITY_TYPE_POS (0x3) > +#define EFI_ACPI_MPAM_AFFINITY_VALID_POS (0x4) > +#define EFI_ACPI_MPAM_RESERVED_POS (0x5) > + > +/// > +/// MPAM Location types > +/// as described in document [1], table 11 > +/// > +#define EFI_ACPI_MPAM_LOCATION_PROCESSOR_CACHE (0x0) > +#define EFI_ACPI_MPAM_LOCATION_MEMORY (0x1) > +#define EFI_ACPI_MPAM_LOCATION_SMMU (0x2) > +#define EFI_ACPI_MPAM_LOCATION_MEMORY_CACHE (0x3) > +#define EFI_ACPI_MPAM_LOCATION_ACPI_DEVICE (0x4) > +#define EFI_ACPI_MPAM_LOCATION_INTERCONNECT (0x5) > +#define EFI_ACPI_MPAM_LOCATION_UNKNOWN (0xFF) > + > +/// > +/// MPAM Interface types > +/// > +#define EFI_ACPI_MPAM_INTERFACE_MMIO (0x0) > +#define EFI_ACPI_MPAM_INTERFACE_PCC (0x0A) > + > +#pragma pack(1) > + > +/// > +/// MPAM MSC generic locator descriptor > +/// as described in document [1], table 12 > +/// > +typedef struct { > + UINT64 Descriptor1; > + UINT32 Descriptor2; > +} EFI_ACPI_MPAM_GENERIC_LOCATOR; > + > +/// > +/// MPAM processor cache locator descriptor > +/// as described in document [1], table 13 > +/// > +typedef struct { > + UINT64 CacheReference; > + UINT32 Reserved; > +} EFI_ACPI_MPAM_CACHE_LOCATOR; > + > +/// > +/// MPAM memory locator descriptor > +/// as described in document [1], table 14 > +/// > +typedef struct { > + UINT64 ProximityDomain; > + UINT32 Reserved; > +} EFI_ACPI_MPAM_MEMORY_LOCATOR; > + > +/// > +/// MPAM SMMU locator descriptor > +/// as described in document [1], table 15 > +/// > +typedef struct { > + UINT64 SmmuInterface; > + UINT32 Reserved; > +} EFI_ACPI_MPAM_SMMU_LOCATOR; > + > +/// > +/// MPAM memory-side cache locator descriptor > +/// as described in Document [1], table 16 > +/// > +typedef struct { > + UINT8 Reserved[7]; > + UINT8 Level; > + UINT32 Reference; > +} EFI_ACPI_MPAM_MEMORY_CACHE_LOCATOR; > + > +/// > +/// MPAM ACPI device locator descriptor > +/// as described in document [1], table 17 > +/// > +typedef struct { > + UINT64 AcpiHardwareId; > + UINT32 AcpiUniqueId; > +} EFI_ACPI_MPAM_ACPI_LOCATOR; > + > +/// > +/// MPAM interconnect locator descriptor > +/// as described in document [1], table 18 > +/// > +typedef struct { > + UINT64 InterconnectDescTblOff; > + UINT32 Reserved; > +} EFI_ACPI_MPAM_INTERCONNECT_LOCATOR; > + > +/// > +/// MPAM interconnect descriptor > +/// as described in document [1], table 19 > +/// > +typedef struct { > + UINT32 SourceID; > + UINT32 DestinationID; > + UINT8 LinkType; > + UINT8 Reserved[3]; > +} EFI_ACPI_MPAM_INTERCONNECT_DESCRIPTOR; > + > +/// > +/// MPAM interconnect descriptor table > +/// as described in document [1], table 20 > +/// > +typedef struct { > + UINT8 Signature[16]; > + UINT32 NumDescriptors; > +} EFI_ACPI_MPAM_INTERCONNECT_DESCRIPTOR_TABLE; > + > +/// > +/// MPAM resource locator > +/// > +typedef union { > + EFI_ACPI_MPAM_CACHE_LOCATOR CacheLocator; > + EFI_ACPI_MPAM_MEMORY_LOCATOR MemoryLocator; > + EFI_ACPI_MPAM_SMMU_LOCATOR SmmuLocator; > + EFI_ACPI_MPAM_MEMORY_CACHE_LOCATOR MemCacheLocator; > + EFI_ACPI_MPAM_ACPI_LOCATOR AcpiLocator; > + EFI_ACPI_MPAM_INTERCONNECT_LOCATOR InterconnectIfcLocator; > + EFI_ACPI_MPAM_GENERIC_LOCATOR GenericLocator; > +} EFI_ACPI_MPAM_LOCATOR; > + > +/// > +/// MPAM MSC node body > +/// as described document [1], table 4 > +/// > +typedef struct { > + UINT16 Length; > + UINT8 InterfaceType; > + UINT8 Reserved; > + UINT32 Identifier; > + UINT64 BaseAddress; > + UINT32 MmioSize; > + UINT32 OverflowInterrupt; > + UINT32 OverflowInterruptFlags; > + UINT32 Reserved1; > + UINT32 OverflowInterruptAffinity; > + UINT32 ErrorInterrupt; > + UINT32 ErrorInterruptFlags; > + UINT32 Reserved2; > + UINT32 ErrorInterruptAffinity; > + UINT32 MaxNrdyUsec; > + UINT64 HIDLinkedDevice; > + UINT32 InstanceIDLinkedDevice; > + UINT32 NumResources; > +} EFI_ACPI_MPAM_MSC_NODE; > + > +/// > +/// MPAM MSC resource > +/// as described in document [1], table 9 > +/// > +typedef struct { > + UINT32 Identifier; > + UINT8 RisIndex; > + UINT16 Reserved1; > + UINT8 LocatorType; > + EFI_ACPI_MPAM_LOCATOR Locator; > + UINT32 NumDependencies; > +} EFI_ACPI_MPAM_MSC_RESOURCE; > + > +/// > +/// MPAM Function dependency descriptor > +/// as described in document [1], table 10 > +/// > +typedef struct { > + UINT32 Producer; > + UINT32 Reserved; > +} EFI_ACPI_MPAM_FUNCTIONAL_DEPENDENCY_DESCRIPTOR; > + > +#pragma pack() > + > +#endif > -- > 2.25.1 ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [edk2][PATCH V1 1/1] MdePkg/IndustryStandard: add definitions for MPAM ACPI specification 2023-01-29 5:39 ` 回复: " gaoliming @ 2023-02-13 21:01 ` Rohit Mathew [not found] ` <17437E1124F9F6B0.21535@groups.io> 1 sibling, 0 replies; 7+ messages in thread From: Rohit Mathew @ 2023-02-13 21:01 UTC (permalink / raw) To: devel@edk2.groups.io Cc: 'Michael D Kinney', Sami Mujawar, 'Zhiguang Liu', Thomas Abraham, 'Swatisri Kantamsetti', nd, gaoliming Hi all, Gentle reminder on the patch. Thanks, Rohit > -----Original Message----- > From: gaoliming <gaoliming@byosoft.com.cn> > Sent: 29 January 2023 05:39 > To: Rohit Mathew <Rohit.Mathew@arm.com>; devel@edk2.groups.io > Cc: 'Michael D Kinney' <michael.d.kinney@intel.com>; Sami Mujawar > <Sami.Mujawar@arm.com>; 'Zhiguang Liu' <ZhiguangLiu@arm.com>; > Thomas Abraham <thomas.abraham@arm.com>; 'Swatisri Kantamsetti' > <swatisrik@nvidia.com> > Subject: 回复: [edk2][PATCH V1 1/1] MdePkg/IndustryStandard: add > definitions for MPAM ACPI specification > > Acked-by: Liming Gao <gaoliming@byosoft.com.cn> > > > -----邮件原件----- > > 发件人: Rohit Mathew <rohit.mathew@arm.com> > > 发送时间: 2023年1月25日 8:39 > > 收件人: devel@edk2.groups.io > > 抄送: Michael D Kinney <michael.d.kinney@intel.com>; Sami Mujawar > > <sami.mujawar@arm.com>; Liming Gao <gaoliming@byosoft.com.cn>; > > Zhiguang Liu <ZhiguangLiu@arm.com>; Thomas Abraham > > <thomas.abraham@arm.com>; Swatisri Kantamsetti > <swatisrik@nvidia.com> > > 主题: [edk2][PATCH V1 1/1] MdePkg/IndustryStandard: add definitions for > > MPAM ACPI specification > > > > add definitions, macros and types for elements associated with MPAM > > ACPI 2.0 specification. > > > > Signed-off-by: Rohit Mathew <rohit.mathew@arm.com> > > --- > > MdePkg/Include/IndustryStandard/Acpi64.h | 7 +- > > MdePkg/Include/IndustryStandard/Mpam.h | 229 > > ++++++++++++++++++++ > > 2 files changed, 235 insertions(+), 1 deletion(-) > > > > github link: > > https://github.com/rohit-arm/edk2/tree/mpam_acpi > > > > diff --git a/MdePkg/Include/IndustryStandard/Acpi64.h > > b/MdePkg/Include/IndustryStandard/Acpi64.h > > index 575ca0430c..2be9525979 100644 > > --- a/MdePkg/Include/IndustryStandard/Acpi64.h > > +++ b/MdePkg/Include/IndustryStandard/Acpi64.h > > @@ -2,7 +2,7 @@ > > ACPI 6.4 definitions from the ACPI Specification Revision 6.4 Jan, > 2021. > > > > Copyright (c) 2017 - 2022, Intel Corporation. All rights > > reserved.<BR> > > - Copyright (c) 2019 - 2021, ARM Ltd. All rights reserved.<BR> > > + Copyright (c) 2019 - 2023, ARM Limited. All rights reserved.<BR> > > > > SPDX-License-Identifier: BSD-2-Clause-Patent **/ @@ -3157,6 > > +3157,11 @@ typedef struct { /// #define > > EFI_ACPI_6_4_XEN_PROJECT_TABLE_SIGNATURE > > SIGNATURE_32('X', 'E', 'N', 'V') > > > > +/// > > +/// "MPAM" Memory System Resource Partitioning and Monitoring Table > > +/// #define > > > EFI_ACPI_MEMORY_SYSTEM_RESOURCE_PARTITIONING_AND_MONITORIN > > G_TABLE_SIGNATURE SIGNATURE_32('M', 'P', 'A', 'M') > > + > > #pragma pack() > > > > #endif > > diff --git a/MdePkg/Include/IndustryStandard/Mpam.h > > b/MdePkg/Include/IndustryStandard/Mpam.h > > new file mode 100644 > > index 0000000000..8e6e72ea28 > > --- /dev/null > > +++ b/MdePkg/Include/IndustryStandard/Mpam.h > > @@ -0,0 +1,229 @@ > > +/** @file > > + ACPI for Memory System Resource Partitioning and Monitoring 2.0 > > +(MPAM) > > as > > + specified in ARM spec DEN0065 > > + > > + Copyright (c) 2023, Arm Limited. All rights reserved. > > + > > + SPDX-License-Identifier: BSD-2-Clause-Patent > > + > > + @par Specification Reference: > > + - [1] ACPI for Memory System Resource Partitioning and Monitoring 2.0 > > + (https://developer.arm.com/documentation/den0065/latest) > > + > > + @par Glossary: > > + - MPAM - Memory System Resource Partitioning And Monitoring > > + - MSC - Memory System Component > > + - PCC - Platform Communication Channel > > + - RIS - Resource Instance Selection > > + - SMMU - Arm System Memory Management Unit **/ > > + > > +#ifndef MPAM_H_ > > +#define MPAM_H_ > > + > > +#include <IndustryStandard/Acpi.h> > > + > > +/// > > +/// MPAM Revision > > +/// > > +#define > > > EFI_ACPI_MEMORY_SYSTEM_RESOURCE_PARTITIONING_AND_MONITORIN > > G_TABLE_REVISION (0x01) > > + > > +/// > > +/// MPAM Interrupt mode > > +/// > > +#define EFI_ACPI_MPAM_INTERRUPT_LEVEL_TRIGGERED (0x0) > > +#define EFI_ACPI_MPAM_INTERRUPT_EDGE_TRIGGERED (0x1) > > + > > +/// > > +/// MPAM Interrupt type > > +/// > > +#define EFI_ACPI_MPAM_INTERRUPT_WIRED (0x0) > > + > > +/// > > +/// MPAM Interrupt affinity type > > +/// > > +#define EFI_ACPI_MPAM_PROCESSOR_AFFINITY (0x0) > > +#define EFI_ACPI_MPAM_PROCESSOR_CONTAINER_AFFINITY (0x1) > > + > > +/// > > +/// MPAM MSC affinity valid > > +/// > > +#define EFI_ACPI_MPAM_AFFINITY_NOT_VALID (0x0) > > +#define EFI_ACPI_MPAM_AFFINITY_VALID (0x1) > > + > > +/// > > +/// MPAM Interrupt flag - bit positions /// #define > > +EFI_ACPI_MPAM_INTERRUPT_MODE_POS (0x0) #define > > +EFI_ACPI_MPAM_INTERRUPT_TYPE_POS (0x1) > > +#define EFI_ACPI_MPAM_AFFINITY_TYPE_POS (0x3) > > +#define EFI_ACPI_MPAM_AFFINITY_VALID_POS (0x4) > > +#define EFI_ACPI_MPAM_RESERVED_POS (0x5) > > + > > +/// > > +/// MPAM Location types > > +/// as described in document [1], table 11 /// #define > > +EFI_ACPI_MPAM_LOCATION_PROCESSOR_CACHE (0x0) > > +#define EFI_ACPI_MPAM_LOCATION_MEMORY (0x1) > > +#define EFI_ACPI_MPAM_LOCATION_SMMU (0x2) > > +#define EFI_ACPI_MPAM_LOCATION_MEMORY_CACHE (0x3) > > +#define EFI_ACPI_MPAM_LOCATION_ACPI_DEVICE (0x4) > > +#define EFI_ACPI_MPAM_LOCATION_INTERCONNECT (0x5) > > +#define EFI_ACPI_MPAM_LOCATION_UNKNOWN (0xFF) > > + > > +/// > > +/// MPAM Interface types > > +/// > > +#define EFI_ACPI_MPAM_INTERFACE_MMIO (0x0) > > +#define EFI_ACPI_MPAM_INTERFACE_PCC (0x0A) > > + > > +#pragma pack(1) > > + > > +/// > > +/// MPAM MSC generic locator descriptor /// as described in document > > +[1], table 12 /// typedef struct { > > + UINT64 Descriptor1; > > + UINT32 Descriptor2; > > +} EFI_ACPI_MPAM_GENERIC_LOCATOR; > > + > > +/// > > +/// MPAM processor cache locator descriptor /// as described in > > +document [1], table 13 /// typedef struct { > > + UINT64 CacheReference; > > + UINT32 Reserved; > > +} EFI_ACPI_MPAM_CACHE_LOCATOR; > > + > > +/// > > +/// MPAM memory locator descriptor > > +/// as described in document [1], table 14 /// typedef struct { > > + UINT64 ProximityDomain; > > + UINT32 Reserved; > > +} EFI_ACPI_MPAM_MEMORY_LOCATOR; > > + > > +/// > > +/// MPAM SMMU locator descriptor > > +/// as described in document [1], table 15 /// typedef struct { > > + UINT64 SmmuInterface; > > + UINT32 Reserved; > > +} EFI_ACPI_MPAM_SMMU_LOCATOR; > > + > > +/// > > +/// MPAM memory-side cache locator descriptor /// as described in > > +Document [1], table 16 /// typedef struct { > > + UINT8 Reserved[7]; > > + UINT8 Level; > > + UINT32 Reference; > > +} EFI_ACPI_MPAM_MEMORY_CACHE_LOCATOR; > > + > > +/// > > +/// MPAM ACPI device locator descriptor /// as described in document > > +[1], table 17 /// typedef struct { > > + UINT64 AcpiHardwareId; > > + UINT32 AcpiUniqueId; > > +} EFI_ACPI_MPAM_ACPI_LOCATOR; > > + > > +/// > > +/// MPAM interconnect locator descriptor /// as described in document > > +[1], table 18 /// typedef struct { > > + UINT64 InterconnectDescTblOff; > > + UINT32 Reserved; > > +} EFI_ACPI_MPAM_INTERCONNECT_LOCATOR; > > + > > +/// > > +/// MPAM interconnect descriptor > > +/// as described in document [1], table 19 /// typedef struct { > > + UINT32 SourceID; > > + UINT32 DestinationID; > > + UINT8 LinkType; > > + UINT8 Reserved[3]; > > +} EFI_ACPI_MPAM_INTERCONNECT_DESCRIPTOR; > > + > > +/// > > +/// MPAM interconnect descriptor table /// as described in document > > +[1], table 20 /// typedef struct { > > + UINT8 Signature[16]; > > + UINT32 NumDescriptors; > > +} EFI_ACPI_MPAM_INTERCONNECT_DESCRIPTOR_TABLE; > > + > > +/// > > +/// MPAM resource locator > > +/// > > +typedef union { > > + EFI_ACPI_MPAM_CACHE_LOCATOR CacheLocator; > > + EFI_ACPI_MPAM_MEMORY_LOCATOR MemoryLocator; > > + EFI_ACPI_MPAM_SMMU_LOCATOR SmmuLocator; > > + EFI_ACPI_MPAM_MEMORY_CACHE_LOCATOR MemCacheLocator; > > + EFI_ACPI_MPAM_ACPI_LOCATOR AcpiLocator; > > + EFI_ACPI_MPAM_INTERCONNECT_LOCATOR InterconnectIfcLocator; > > + EFI_ACPI_MPAM_GENERIC_LOCATOR GenericLocator; > > +} EFI_ACPI_MPAM_LOCATOR; > > + > > +/// > > +/// MPAM MSC node body > > +/// as described document [1], table 4 /// typedef struct { > > + UINT16 Length; > > + UINT8 InterfaceType; > > + UINT8 Reserved; > > + UINT32 Identifier; > > + UINT64 BaseAddress; > > + UINT32 MmioSize; > > + UINT32 OverflowInterrupt; > > + UINT32 OverflowInterruptFlags; > > + UINT32 Reserved1; > > + UINT32 OverflowInterruptAffinity; > > + UINT32 ErrorInterrupt; > > + UINT32 ErrorInterruptFlags; > > + UINT32 Reserved2; > > + UINT32 ErrorInterruptAffinity; > > + UINT32 MaxNrdyUsec; > > + UINT64 HIDLinkedDevice; > > + UINT32 InstanceIDLinkedDevice; > > + UINT32 NumResources; > > +} EFI_ACPI_MPAM_MSC_NODE; > > + > > +/// > > +/// MPAM MSC resource > > +/// as described in document [1], table 9 /// typedef struct { > > + UINT32 Identifier; > > + UINT8 RisIndex; > > + UINT16 Reserved1; > > + UINT8 LocatorType; > > + EFI_ACPI_MPAM_LOCATOR Locator; > > + UINT32 NumDependencies; > > +} EFI_ACPI_MPAM_MSC_RESOURCE; > > + > > +/// > > +/// MPAM Function dependency descriptor /// as described in document > > +[1], table 10 /// typedef struct { > > + UINT32 Producer; > > + UINT32 Reserved; > > +} EFI_ACPI_MPAM_FUNCTIONAL_DEPENDENCY_DESCRIPTOR; > > + > > +#pragma pack() > > + > > +#endif > > -- > > 2.25.1 > > ^ permalink raw reply [flat|nested] 7+ messages in thread
[parent not found: <17437E1124F9F6B0.21535@groups.io>]
* Re: [edk2-devel] [edk2][PATCH V1 1/1] MdePkg/IndustryStandard: add definitions for MPAM ACPI specification [not found] ` <17437E1124F9F6B0.21535@groups.io> @ 2023-03-27 14:32 ` Rohit Mathew 2023-03-27 15:02 ` Michael D Kinney 0 siblings, 1 reply; 7+ messages in thread From: Rohit Mathew @ 2023-03-27 14:32 UTC (permalink / raw) To: devel@edk2.groups.io, Rohit Mathew Cc: 'Michael D Kinney', Sami Mujawar, 'Zhiguang Liu', Thomas Abraham, 'Swatisri Kantamsetti', nd, gaoliming Hi all, Gentle reminder on the patch. Regards, Rohit > -----Original Message----- > From: devel@edk2.groups.io <devel@edk2.groups.io> On Behalf Of Rohit > Mathew via groups.io > Sent: Monday, February 13, 2023 9:01 PM > To: devel@edk2.groups.io > Cc: 'Michael D Kinney' <michael.d.kinney@intel.com>; Sami Mujawar > <Sami.Mujawar@arm.com>; 'Zhiguang Liu' <ZhiguangLiu@arm.com>; Thomas > Abraham <thomas.abraham@arm.com>; 'Swatisri Kantamsetti' > <swatisrik@nvidia.com>; nd <nd@arm.com>; gaoliming > <gaoliming@byosoft.com.cn> > Subject: Re: [edk2-devel] [edk2][PATCH V1 1/1] MdePkg/IndustryStandard: > add definitions for MPAM ACPI specification > > Hi all, > > Gentle reminder on the patch. > > Thanks, > Rohit > > > -----Original Message----- > > From: gaoliming <gaoliming@byosoft.com.cn> > > Sent: 29 January 2023 05:39 > > To: Rohit Mathew <Rohit.Mathew@arm.com>; devel@edk2.groups.io > > Cc: 'Michael D Kinney' <michael.d.kinney@intel.com>; Sami Mujawar > > <Sami.Mujawar@arm.com>; 'Zhiguang Liu' <ZhiguangLiu@arm.com>; > Thomas > > Abraham <thomas.abraham@arm.com>; 'Swatisri Kantamsetti' > > <swatisrik@nvidia.com> > > Subject: 回复: [edk2][PATCH V1 1/1] MdePkg/IndustryStandard: add > > definitions for MPAM ACPI specification > > > > Acked-by: Liming Gao <gaoliming@byosoft.com.cn> > > > > > -----邮件原件----- > > > 发件人: Rohit Mathew <rohit.mathew@arm.com> > > > 发送时间: 2023年1月25日 8:39 > > > 收件人: devel@edk2.groups.io > > > 抄送: Michael D Kinney <michael.d.kinney@intel.com>; Sami Mujawar > > > <sami.mujawar@arm.com>; Liming Gao <gaoliming@byosoft.com.cn>; > > > Zhiguang Liu <ZhiguangLiu@arm.com>; Thomas Abraham > > > <thomas.abraham@arm.com>; Swatisri Kantamsetti > > <swatisrik@nvidia.com> > > > 主题: [edk2][PATCH V1 1/1] MdePkg/IndustryStandard: add definitions > > > for MPAM ACPI specification > > > > > > add definitions, macros and types for elements associated with MPAM > > > ACPI 2.0 specification. > > > > > > Signed-off-by: Rohit Mathew <rohit.mathew@arm.com> > > > --- > > > MdePkg/Include/IndustryStandard/Acpi64.h | 7 +- > > > MdePkg/Include/IndustryStandard/Mpam.h | 229 > > > ++++++++++++++++++++ > > > 2 files changed, 235 insertions(+), 1 deletion(-) > > > > > > github link: > > > https://github.com/rohit-arm/edk2/tree/mpam_acpi > > > > > > diff --git a/MdePkg/Include/IndustryStandard/Acpi64.h > > > b/MdePkg/Include/IndustryStandard/Acpi64.h > > > index 575ca0430c..2be9525979 100644 > > > --- a/MdePkg/Include/IndustryStandard/Acpi64.h > > > +++ b/MdePkg/Include/IndustryStandard/Acpi64.h > > > @@ -2,7 +2,7 @@ > > > ACPI 6.4 definitions from the ACPI Specification Revision 6.4 > > > Jan, > > 2021. > > > > > > Copyright (c) 2017 - 2022, Intel Corporation. All rights > > > reserved.<BR> > > > - Copyright (c) 2019 - 2021, ARM Ltd. All rights reserved.<BR> > > > + Copyright (c) 2019 - 2023, ARM Limited. All rights reserved.<BR> > > > > > > SPDX-License-Identifier: BSD-2-Clause-Patent **/ @@ -3157,6 > > > +3157,11 @@ typedef struct { /// #define > > > EFI_ACPI_6_4_XEN_PROJECT_TABLE_SIGNATURE > > > SIGNATURE_32('X', 'E', 'N', 'V') > > > > > > +/// > > > +/// "MPAM" Memory System Resource Partitioning and Monitoring Table > > > +/// #define > > > > > EFI_ACPI_MEMORY_SYSTEM_RESOURCE_PARTITIONING_AND_MONITORIN > > > G_TABLE_SIGNATURE SIGNATURE_32('M', 'P', 'A', 'M') > > > + > > > #pragma pack() > > > > > > #endif > > > diff --git a/MdePkg/Include/IndustryStandard/Mpam.h > > > b/MdePkg/Include/IndustryStandard/Mpam.h > > > new file mode 100644 > > > index 0000000000..8e6e72ea28 > > > --- /dev/null > > > +++ b/MdePkg/Include/IndustryStandard/Mpam.h > > > @@ -0,0 +1,229 @@ > > > +/** @file > > > + ACPI for Memory System Resource Partitioning and Monitoring 2.0 > > > +(MPAM) > > > as > > > + specified in ARM spec DEN0065 > > > + > > > + Copyright (c) 2023, Arm Limited. All rights reserved. > > > + > > > + SPDX-License-Identifier: BSD-2-Clause-Patent > > > + > > > + @par Specification Reference: > > > + - [1] ACPI for Memory System Resource Partitioning and Monitoring 2.0 > > > + (https://developer.arm.com/documentation/den0065/latest) > > > + > > > + @par Glossary: > > > + - MPAM - Memory System Resource Partitioning And Monitoring > > > + - MSC - Memory System Component > > > + - PCC - Platform Communication Channel > > > + - RIS - Resource Instance Selection > > > + - SMMU - Arm System Memory Management Unit **/ > > > + > > > +#ifndef MPAM_H_ > > > +#define MPAM_H_ > > > + > > > +#include <IndustryStandard/Acpi.h> > > > + > > > +/// > > > +/// MPAM Revision > > > +/// > > > +#define > > > > > EFI_ACPI_MEMORY_SYSTEM_RESOURCE_PARTITIONING_AND_MONITORIN > > > G_TABLE_REVISION (0x01) > > > + > > > +/// > > > +/// MPAM Interrupt mode > > > +/// > > > +#define EFI_ACPI_MPAM_INTERRUPT_LEVEL_TRIGGERED (0x0) > > > +#define EFI_ACPI_MPAM_INTERRUPT_EDGE_TRIGGERED (0x1) > > > + > > > +/// > > > +/// MPAM Interrupt type > > > +/// > > > +#define EFI_ACPI_MPAM_INTERRUPT_WIRED (0x0) > > > + > > > +/// > > > +/// MPAM Interrupt affinity type > > > +/// > > > +#define EFI_ACPI_MPAM_PROCESSOR_AFFINITY (0x0) > > > +#define EFI_ACPI_MPAM_PROCESSOR_CONTAINER_AFFINITY (0x1) > > > + > > > +/// > > > +/// MPAM MSC affinity valid > > > +/// > > > +#define EFI_ACPI_MPAM_AFFINITY_NOT_VALID (0x0) > > > +#define EFI_ACPI_MPAM_AFFINITY_VALID (0x1) > > > + > > > +/// > > > +/// MPAM Interrupt flag - bit positions /// #define > > > +EFI_ACPI_MPAM_INTERRUPT_MODE_POS (0x0) #define > > > +EFI_ACPI_MPAM_INTERRUPT_TYPE_POS (0x1) > > > +#define EFI_ACPI_MPAM_AFFINITY_TYPE_POS (0x3) > > > +#define EFI_ACPI_MPAM_AFFINITY_VALID_POS (0x4) > > > +#define EFI_ACPI_MPAM_RESERVED_POS (0x5) > > > + > > > +/// > > > +/// MPAM Location types > > > +/// as described in document [1], table 11 /// #define > > > +EFI_ACPI_MPAM_LOCATION_PROCESSOR_CACHE (0x0) > > > +#define EFI_ACPI_MPAM_LOCATION_MEMORY (0x1) > > > +#define EFI_ACPI_MPAM_LOCATION_SMMU (0x2) > > > +#define EFI_ACPI_MPAM_LOCATION_MEMORY_CACHE (0x3) > > > +#define EFI_ACPI_MPAM_LOCATION_ACPI_DEVICE (0x4) > > > +#define EFI_ACPI_MPAM_LOCATION_INTERCONNECT (0x5) > > > +#define EFI_ACPI_MPAM_LOCATION_UNKNOWN (0xFF) > > > + > > > +/// > > > +/// MPAM Interface types > > > +/// > > > +#define EFI_ACPI_MPAM_INTERFACE_MMIO (0x0) > > > +#define EFI_ACPI_MPAM_INTERFACE_PCC (0x0A) > > > + > > > +#pragma pack(1) > > > + > > > +/// > > > +/// MPAM MSC generic locator descriptor /// as described in > > > +document [1], table 12 /// typedef struct { > > > + UINT64 Descriptor1; > > > + UINT32 Descriptor2; > > > +} EFI_ACPI_MPAM_GENERIC_LOCATOR; > > > + > > > +/// > > > +/// MPAM processor cache locator descriptor /// as described in > > > +document [1], table 13 /// typedef struct { > > > + UINT64 CacheReference; > > > + UINT32 Reserved; > > > +} EFI_ACPI_MPAM_CACHE_LOCATOR; > > > + > > > +/// > > > +/// MPAM memory locator descriptor > > > +/// as described in document [1], table 14 /// typedef struct { > > > + UINT64 ProximityDomain; > > > + UINT32 Reserved; > > > +} EFI_ACPI_MPAM_MEMORY_LOCATOR; > > > + > > > +/// > > > +/// MPAM SMMU locator descriptor > > > +/// as described in document [1], table 15 /// typedef struct { > > > + UINT64 SmmuInterface; > > > + UINT32 Reserved; > > > +} EFI_ACPI_MPAM_SMMU_LOCATOR; > > > + > > > +/// > > > +/// MPAM memory-side cache locator descriptor /// as described in > > > +Document [1], table 16 /// typedef struct { > > > + UINT8 Reserved[7]; > > > + UINT8 Level; > > > + UINT32 Reference; > > > +} EFI_ACPI_MPAM_MEMORY_CACHE_LOCATOR; > > > + > > > +/// > > > +/// MPAM ACPI device locator descriptor /// as described in > > > +document [1], table 17 /// typedef struct { > > > + UINT64 AcpiHardwareId; > > > + UINT32 AcpiUniqueId; > > > +} EFI_ACPI_MPAM_ACPI_LOCATOR; > > > + > > > +/// > > > +/// MPAM interconnect locator descriptor /// as described in > > > +document [1], table 18 /// typedef struct { > > > + UINT64 InterconnectDescTblOff; > > > + UINT32 Reserved; > > > +} EFI_ACPI_MPAM_INTERCONNECT_LOCATOR; > > > + > > > +/// > > > +/// MPAM interconnect descriptor > > > +/// as described in document [1], table 19 /// typedef struct { > > > + UINT32 SourceID; > > > + UINT32 DestinationID; > > > + UINT8 LinkType; > > > + UINT8 Reserved[3]; > > > +} EFI_ACPI_MPAM_INTERCONNECT_DESCRIPTOR; > > > + > > > +/// > > > +/// MPAM interconnect descriptor table /// as described in document > > > +[1], table 20 /// typedef struct { > > > + UINT8 Signature[16]; > > > + UINT32 NumDescriptors; > > > +} EFI_ACPI_MPAM_INTERCONNECT_DESCRIPTOR_TABLE; > > > + > > > +/// > > > +/// MPAM resource locator > > > +/// > > > +typedef union { > > > + EFI_ACPI_MPAM_CACHE_LOCATOR CacheLocator; > > > + EFI_ACPI_MPAM_MEMORY_LOCATOR MemoryLocator; > > > + EFI_ACPI_MPAM_SMMU_LOCATOR SmmuLocator; > > > + EFI_ACPI_MPAM_MEMORY_CACHE_LOCATOR MemCacheLocator; > > > + EFI_ACPI_MPAM_ACPI_LOCATOR AcpiLocator; > > > + EFI_ACPI_MPAM_INTERCONNECT_LOCATOR InterconnectIfcLocator; > > > + EFI_ACPI_MPAM_GENERIC_LOCATOR GenericLocator; > > > +} EFI_ACPI_MPAM_LOCATOR; > > > + > > > +/// > > > +/// MPAM MSC node body > > > +/// as described document [1], table 4 /// typedef struct { > > > + UINT16 Length; > > > + UINT8 InterfaceType; > > > + UINT8 Reserved; > > > + UINT32 Identifier; > > > + UINT64 BaseAddress; > > > + UINT32 MmioSize; > > > + UINT32 OverflowInterrupt; > > > + UINT32 OverflowInterruptFlags; > > > + UINT32 Reserved1; > > > + UINT32 OverflowInterruptAffinity; > > > + UINT32 ErrorInterrupt; > > > + UINT32 ErrorInterruptFlags; > > > + UINT32 Reserved2; > > > + UINT32 ErrorInterruptAffinity; > > > + UINT32 MaxNrdyUsec; > > > + UINT64 HIDLinkedDevice; > > > + UINT32 InstanceIDLinkedDevice; > > > + UINT32 NumResources; > > > +} EFI_ACPI_MPAM_MSC_NODE; > > > + > > > +/// > > > +/// MPAM MSC resource > > > +/// as described in document [1], table 9 /// typedef struct { > > > + UINT32 Identifier; > > > + UINT8 RisIndex; > > > + UINT16 Reserved1; > > > + UINT8 LocatorType; > > > + EFI_ACPI_MPAM_LOCATOR Locator; > > > + UINT32 NumDependencies; > > > +} EFI_ACPI_MPAM_MSC_RESOURCE; > > > + > > > +/// > > > +/// MPAM Function dependency descriptor /// as described in > > > +document [1], table 10 /// typedef struct { > > > + UINT32 Producer; > > > + UINT32 Reserved; > > > +} EFI_ACPI_MPAM_FUNCTIONAL_DEPENDENCY_DESCRIPTOR; > > > + > > > +#pragma pack() > > > + > > > +#endif > > > -- > > > 2.25.1 > > > > > > > > > ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [edk2-devel] [edk2][PATCH V1 1/1] MdePkg/IndustryStandard: add definitions for MPAM ACPI specification 2023-03-27 14:32 ` [edk2-devel] " Rohit Mathew @ 2023-03-27 15:02 ` Michael D Kinney 0 siblings, 0 replies; 7+ messages in thread From: Michael D Kinney @ 2023-03-27 15:02 UTC (permalink / raw) To: Rohit Mathew, devel@edk2.groups.io Cc: Sami Mujawar, 'Zhiguang Liu', Thomas Abraham, 'Swatisri Kantamsetti', nd, Gao, Liming, Kinney, Michael D Reviewed-by: Michael D Kinney <michael.d.kinney@intel.com> > -----Original Message----- > From: Rohit Mathew <Rohit.Mathew@arm.com> > Sent: Monday, March 27, 2023 7:33 AM > To: devel@edk2.groups.io; Rohit Mathew <Rohit.Mathew@arm.com> > Cc: Kinney, Michael D <michael.d.kinney@intel.com>; Sami Mujawar <Sami.Mujawar@arm.com>; 'Zhiguang Liu' <ZhiguangLiu@intel.com>; > Thomas Abraham <thomas.abraham@arm.com>; 'Swatisri Kantamsetti' <swatisrik@nvidia.com>; nd <nd@arm.com>; Gao, Liming > <gaoliming@byosoft.com.cn> > Subject: RE: [edk2-devel] [edk2][PATCH V1 1/1] MdePkg/IndustryStandard: add definitions for MPAM ACPI specification > > Hi all, > > Gentle reminder on the patch. > > Regards, > Rohit > > > -----Original Message----- > > From: devel@edk2.groups.io <devel@edk2.groups.io> On Behalf Of Rohit > > Mathew via groups.io > > Sent: Monday, February 13, 2023 9:01 PM > > To: devel@edk2.groups.io > > Cc: 'Michael D Kinney' <michael.d.kinney@intel.com>; Sami Mujawar > > <Sami.Mujawar@arm.com>; 'Zhiguang Liu' <ZhiguangLiu@arm.com>; Thomas > > Abraham <thomas.abraham@arm.com>; 'Swatisri Kantamsetti' > > <swatisrik@nvidia.com>; nd <nd@arm.com>; gaoliming > > <gaoliming@byosoft.com.cn> > > Subject: Re: [edk2-devel] [edk2][PATCH V1 1/1] MdePkg/IndustryStandard: > > add definitions for MPAM ACPI specification > > > > Hi all, > > > > Gentle reminder on the patch. > > > > Thanks, > > Rohit > > > > > -----Original Message----- > > > From: gaoliming <gaoliming@byosoft.com.cn> > > > Sent: 29 January 2023 05:39 > > > To: Rohit Mathew <Rohit.Mathew@arm.com>; devel@edk2.groups.io > > > Cc: 'Michael D Kinney' <michael.d.kinney@intel.com>; Sami Mujawar > > > <Sami.Mujawar@arm.com>; 'Zhiguang Liu' <ZhiguangLiu@arm.com>; > > Thomas > > > Abraham <thomas.abraham@arm.com>; 'Swatisri Kantamsetti' > > > <swatisrik@nvidia.com> > > > Subject: 回复: [edk2][PATCH V1 1/1] MdePkg/IndustryStandard: add > > > definitions for MPAM ACPI specification > > > > > > Acked-by: Liming Gao <gaoliming@byosoft.com.cn> > > > > > > > -----邮件原件----- > > > > 发件人: Rohit Mathew <rohit.mathew@arm.com> > > > > 发送时间: 2023年1月25日 8:39 > > > > 收件人: devel@edk2.groups.io > > > > 抄送: Michael D Kinney <michael.d.kinney@intel.com>; Sami Mujawar > > > > <sami.mujawar@arm.com>; Liming Gao <gaoliming@byosoft.com.cn>; > > > > Zhiguang Liu <ZhiguangLiu@arm.com>; Thomas Abraham > > > > <thomas.abraham@arm.com>; Swatisri Kantamsetti > > > <swatisrik@nvidia.com> > > > > 主题: [edk2][PATCH V1 1/1] MdePkg/IndustryStandard: add definitions > > > > for MPAM ACPI specification > > > > > > > > add definitions, macros and types for elements associated with MPAM > > > > ACPI 2.0 specification. > > > > > > > > Signed-off-by: Rohit Mathew <rohit.mathew@arm.com> > > > > --- > > > > MdePkg/Include/IndustryStandard/Acpi64.h | 7 +- > > > > MdePkg/Include/IndustryStandard/Mpam.h | 229 > > > > ++++++++++++++++++++ > > > > 2 files changed, 235 insertions(+), 1 deletion(-) > > > > > > > > github link: > > > > https://github.com/rohit-arm/edk2/tree/mpam_acpi > > > > > > > > diff --git a/MdePkg/Include/IndustryStandard/Acpi64.h > > > > b/MdePkg/Include/IndustryStandard/Acpi64.h > > > > index 575ca0430c..2be9525979 100644 > > > > --- a/MdePkg/Include/IndustryStandard/Acpi64.h > > > > +++ b/MdePkg/Include/IndustryStandard/Acpi64.h > > > > @@ -2,7 +2,7 @@ > > > > ACPI 6.4 definitions from the ACPI Specification Revision 6.4 > > > > Jan, > > > 2021. > > > > > > > > Copyright (c) 2017 - 2022, Intel Corporation. All rights > > > > reserved.<BR> > > > > - Copyright (c) 2019 - 2021, ARM Ltd. All rights reserved.<BR> > > > > + Copyright (c) 2019 - 2023, ARM Limited. All rights reserved.<BR> > > > > > > > > SPDX-License-Identifier: BSD-2-Clause-Patent **/ @@ -3157,6 > > > > +3157,11 @@ typedef struct { /// #define > > > > EFI_ACPI_6_4_XEN_PROJECT_TABLE_SIGNATURE > > > > SIGNATURE_32('X', 'E', 'N', 'V') > > > > > > > > +/// > > > > +/// "MPAM" Memory System Resource Partitioning and Monitoring Table > > > > +/// #define > > > > > > > EFI_ACPI_MEMORY_SYSTEM_RESOURCE_PARTITIONING_AND_MONITORIN > > > > G_TABLE_SIGNATURE SIGNATURE_32('M', 'P', 'A', 'M') > > > > + > > > > #pragma pack() > > > > > > > > #endif > > > > diff --git a/MdePkg/Include/IndustryStandard/Mpam.h > > > > b/MdePkg/Include/IndustryStandard/Mpam.h > > > > new file mode 100644 > > > > index 0000000000..8e6e72ea28 > > > > --- /dev/null > > > > +++ b/MdePkg/Include/IndustryStandard/Mpam.h > > > > @@ -0,0 +1,229 @@ > > > > +/** @file > > > > + ACPI for Memory System Resource Partitioning and Monitoring 2.0 > > > > +(MPAM) > > > > as > > > > + specified in ARM spec DEN0065 > > > > + > > > > + Copyright (c) 2023, Arm Limited. All rights reserved. > > > > + > > > > + SPDX-License-Identifier: BSD-2-Clause-Patent > > > > + > > > > + @par Specification Reference: > > > > + - [1] ACPI for Memory System Resource Partitioning and Monitoring 2.0 > > > > + (https://developer.arm.com/documentation/den0065/latest) > > > > + > > > > + @par Glossary: > > > > + - MPAM - Memory System Resource Partitioning And Monitoring > > > > + - MSC - Memory System Component > > > > + - PCC - Platform Communication Channel > > > > + - RIS - Resource Instance Selection > > > > + - SMMU - Arm System Memory Management Unit **/ > > > > + > > > > +#ifndef MPAM_H_ > > > > +#define MPAM_H_ > > > > + > > > > +#include <IndustryStandard/Acpi.h> > > > > + > > > > +/// > > > > +/// MPAM Revision > > > > +/// > > > > +#define > > > > > > > EFI_ACPI_MEMORY_SYSTEM_RESOURCE_PARTITIONING_AND_MONITORIN > > > > G_TABLE_REVISION (0x01) > > > > + > > > > +/// > > > > +/// MPAM Interrupt mode > > > > +/// > > > > +#define EFI_ACPI_MPAM_INTERRUPT_LEVEL_TRIGGERED (0x0) > > > > +#define EFI_ACPI_MPAM_INTERRUPT_EDGE_TRIGGERED (0x1) > > > > + > > > > +/// > > > > +/// MPAM Interrupt type > > > > +/// > > > > +#define EFI_ACPI_MPAM_INTERRUPT_WIRED (0x0) > > > > + > > > > +/// > > > > +/// MPAM Interrupt affinity type > > > > +/// > > > > +#define EFI_ACPI_MPAM_PROCESSOR_AFFINITY (0x0) > > > > +#define EFI_ACPI_MPAM_PROCESSOR_CONTAINER_AFFINITY (0x1) > > > > + > > > > +/// > > > > +/// MPAM MSC affinity valid > > > > +/// > > > > +#define EFI_ACPI_MPAM_AFFINITY_NOT_VALID (0x0) > > > > +#define EFI_ACPI_MPAM_AFFINITY_VALID (0x1) > > > > + > > > > +/// > > > > +/// MPAM Interrupt flag - bit positions /// #define > > > > +EFI_ACPI_MPAM_INTERRUPT_MODE_POS (0x0) #define > > > > +EFI_ACPI_MPAM_INTERRUPT_TYPE_POS (0x1) > > > > +#define EFI_ACPI_MPAM_AFFINITY_TYPE_POS (0x3) > > > > +#define EFI_ACPI_MPAM_AFFINITY_VALID_POS (0x4) > > > > +#define EFI_ACPI_MPAM_RESERVED_POS (0x5) > > > > + > > > > +/// > > > > +/// MPAM Location types > > > > +/// as described in document [1], table 11 /// #define > > > > +EFI_ACPI_MPAM_LOCATION_PROCESSOR_CACHE (0x0) > > > > +#define EFI_ACPI_MPAM_LOCATION_MEMORY (0x1) > > > > +#define EFI_ACPI_MPAM_LOCATION_SMMU (0x2) > > > > +#define EFI_ACPI_MPAM_LOCATION_MEMORY_CACHE (0x3) > > > > +#define EFI_ACPI_MPAM_LOCATION_ACPI_DEVICE (0x4) > > > > +#define EFI_ACPI_MPAM_LOCATION_INTERCONNECT (0x5) > > > > +#define EFI_ACPI_MPAM_LOCATION_UNKNOWN (0xFF) > > > > + > > > > +/// > > > > +/// MPAM Interface types > > > > +/// > > > > +#define EFI_ACPI_MPAM_INTERFACE_MMIO (0x0) > > > > +#define EFI_ACPI_MPAM_INTERFACE_PCC (0x0A) > > > > + > > > > +#pragma pack(1) > > > > + > > > > +/// > > > > +/// MPAM MSC generic locator descriptor /// as described in > > > > +document [1], table 12 /// typedef struct { > > > > + UINT64 Descriptor1; > > > > + UINT32 Descriptor2; > > > > +} EFI_ACPI_MPAM_GENERIC_LOCATOR; > > > > + > > > > +/// > > > > +/// MPAM processor cache locator descriptor /// as described in > > > > +document [1], table 13 /// typedef struct { > > > > + UINT64 CacheReference; > > > > + UINT32 Reserved; > > > > +} EFI_ACPI_MPAM_CACHE_LOCATOR; > > > > + > > > > +/// > > > > +/// MPAM memory locator descriptor > > > > +/// as described in document [1], table 14 /// typedef struct { > > > > + UINT64 ProximityDomain; > > > > + UINT32 Reserved; > > > > +} EFI_ACPI_MPAM_MEMORY_LOCATOR; > > > > + > > > > +/// > > > > +/// MPAM SMMU locator descriptor > > > > +/// as described in document [1], table 15 /// typedef struct { > > > > + UINT64 SmmuInterface; > > > > + UINT32 Reserved; > > > > +} EFI_ACPI_MPAM_SMMU_LOCATOR; > > > > + > > > > +/// > > > > +/// MPAM memory-side cache locator descriptor /// as described in > > > > +Document [1], table 16 /// typedef struct { > > > > + UINT8 Reserved[7]; > > > > + UINT8 Level; > > > > + UINT32 Reference; > > > > +} EFI_ACPI_MPAM_MEMORY_CACHE_LOCATOR; > > > > + > > > > +/// > > > > +/// MPAM ACPI device locator descriptor /// as described in > > > > +document [1], table 17 /// typedef struct { > > > > + UINT64 AcpiHardwareId; > > > > + UINT32 AcpiUniqueId; > > > > +} EFI_ACPI_MPAM_ACPI_LOCATOR; > > > > + > > > > +/// > > > > +/// MPAM interconnect locator descriptor /// as described in > > > > +document [1], table 18 /// typedef struct { > > > > + UINT64 InterconnectDescTblOff; > > > > + UINT32 Reserved; > > > > +} EFI_ACPI_MPAM_INTERCONNECT_LOCATOR; > > > > + > > > > +/// > > > > +/// MPAM interconnect descriptor > > > > +/// as described in document [1], table 19 /// typedef struct { > > > > + UINT32 SourceID; > > > > + UINT32 DestinationID; > > > > + UINT8 LinkType; > > > > + UINT8 Reserved[3]; > > > > +} EFI_ACPI_MPAM_INTERCONNECT_DESCRIPTOR; > > > > + > > > > +/// > > > > +/// MPAM interconnect descriptor table /// as described in document > > > > +[1], table 20 /// typedef struct { > > > > + UINT8 Signature[16]; > > > > + UINT32 NumDescriptors; > > > > +} EFI_ACPI_MPAM_INTERCONNECT_DESCRIPTOR_TABLE; > > > > + > > > > +/// > > > > +/// MPAM resource locator > > > > +/// > > > > +typedef union { > > > > + EFI_ACPI_MPAM_CACHE_LOCATOR CacheLocator; > > > > + EFI_ACPI_MPAM_MEMORY_LOCATOR MemoryLocator; > > > > + EFI_ACPI_MPAM_SMMU_LOCATOR SmmuLocator; > > > > + EFI_ACPI_MPAM_MEMORY_CACHE_LOCATOR MemCacheLocator; > > > > + EFI_ACPI_MPAM_ACPI_LOCATOR AcpiLocator; > > > > + EFI_ACPI_MPAM_INTERCONNECT_LOCATOR InterconnectIfcLocator; > > > > + EFI_ACPI_MPAM_GENERIC_LOCATOR GenericLocator; > > > > +} EFI_ACPI_MPAM_LOCATOR; > > > > + > > > > +/// > > > > +/// MPAM MSC node body > > > > +/// as described document [1], table 4 /// typedef struct { > > > > + UINT16 Length; > > > > + UINT8 InterfaceType; > > > > + UINT8 Reserved; > > > > + UINT32 Identifier; > > > > + UINT64 BaseAddress; > > > > + UINT32 MmioSize; > > > > + UINT32 OverflowInterrupt; > > > > + UINT32 OverflowInterruptFlags; > > > > + UINT32 Reserved1; > > > > + UINT32 OverflowInterruptAffinity; > > > > + UINT32 ErrorInterrupt; > > > > + UINT32 ErrorInterruptFlags; > > > > + UINT32 Reserved2; > > > > + UINT32 ErrorInterruptAffinity; > > > > + UINT32 MaxNrdyUsec; > > > > + UINT64 HIDLinkedDevice; > > > > + UINT32 InstanceIDLinkedDevice; > > > > + UINT32 NumResources; > > > > +} EFI_ACPI_MPAM_MSC_NODE; > > > > + > > > > +/// > > > > +/// MPAM MSC resource > > > > +/// as described in document [1], table 9 /// typedef struct { > > > > + UINT32 Identifier; > > > > + UINT8 RisIndex; > > > > + UINT16 Reserved1; > > > > + UINT8 LocatorType; > > > > + EFI_ACPI_MPAM_LOCATOR Locator; > > > > + UINT32 NumDependencies; > > > > +} EFI_ACPI_MPAM_MSC_RESOURCE; > > > > + > > > > +/// > > > > +/// MPAM Function dependency descriptor /// as described in > > > > +document [1], table 10 /// typedef struct { > > > > + UINT32 Producer; > > > > + UINT32 Reserved; > > > > +} EFI_ACPI_MPAM_FUNCTIONAL_DEPENDENCY_DESCRIPTOR; > > > > + > > > > +#pragma pack() > > > > + > > > > +#endif > > > > -- > > > > 2.25.1 > > > > > > > > > > > > > > > > ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [edk2][PATCH V1 1/1] MdePkg/IndustryStandard: add definitions for MPAM ACPI specification 2023-01-25 0:39 [edk2][PATCH V1 1/1] MdePkg/IndustryStandard: add definitions for MPAM ACPI specification Rohit Mathew 2023-01-29 5:39 ` 回复: " gaoliming @ 2023-03-29 9:56 ` Sami Mujawar 2023-03-29 22:47 ` Rohit Mathew 1 sibling, 1 reply; 7+ messages in thread From: Sami Mujawar @ 2023-03-29 9:56 UTC (permalink / raw) To: Rohit Mathew, devel Cc: Michael D Kinney, Liming Gao, Zhiguang Liu, Thomas Abraham, Swatisri Kantamsetti, nd@arm.com Hi Rohit, Thank you for this patch, and apologies for the delay in reply. I have a few minor suggestions marked inline as [SAMI]. Other than that, I would like to see a corresponding patch to add MPAM support to Acpiview. With that addressed, Reviewed-by: Sami Mujawar <sami.mujawar@arm.com> regards, Sami Mujawar On 25/01/2023 12:39 am, Rohit Mathew wrote: > add definitions, macros and types for elements associated with MPAM > ACPI 2.0 specification. > > Signed-off-by: Rohit Mathew <rohit.mathew@arm.com> > --- > MdePkg/Include/IndustryStandard/Acpi64.h | 7 +- > MdePkg/Include/IndustryStandard/Mpam.h | 229 ++++++++++++++++++++ > 2 files changed, 235 insertions(+), 1 deletion(-) > > github link: > https://github.com/rohit-arm/edk2/tree/mpam_acpi > > diff --git a/MdePkg/Include/IndustryStandard/Acpi64.h b/MdePkg/Include/IndustryStandard/Acpi64.h > index 575ca0430c..2be9525979 100644 > --- a/MdePkg/Include/IndustryStandard/Acpi64.h > +++ b/MdePkg/Include/IndustryStandard/Acpi64.h > @@ -2,7 +2,7 @@ > ACPI 6.4 definitions from the ACPI Specification Revision 6.4 Jan, 2021. > > Copyright (c) 2017 - 2022, Intel Corporation. All rights reserved.<BR> > - Copyright (c) 2019 - 2021, ARM Ltd. All rights reserved.<BR> > + Copyright (c) 2019 - 2023, ARM Limited. All rights reserved.<BR> > > SPDX-License-Identifier: BSD-2-Clause-Patent > **/ > @@ -3157,6 +3157,11 @@ typedef struct { > /// > #define EFI_ACPI_6_4_XEN_PROJECT_TABLE_SIGNATURE SIGNATURE_32('X', 'E', 'N', 'V') > > +/// > +/// "MPAM" Memory System Resource Partitioning and Monitoring Table > +/// > +#define EFI_ACPI_MEMORY_SYSTEM_RESOURCE_PARTITIONING_AND_MONITORING_TABLE_SIGNATURE SIGNATURE_32('M', 'P', 'A', 'M') > + > #pragma pack() > > #endif > diff --git a/MdePkg/Include/IndustryStandard/Mpam.h b/MdePkg/Include/IndustryStandard/Mpam.h > new file mode 100644 > index 0000000000..8e6e72ea28 > --- /dev/null > +++ b/MdePkg/Include/IndustryStandard/Mpam.h > @@ -0,0 +1,229 @@ > +/** @file > + ACPI for Memory System Resource Partitioning and Monitoring 2.0 (MPAM) as > + specified in ARM spec DEN0065 > + > + Copyright (c) 2023, Arm Limited. All rights reserved. > + > + SPDX-License-Identifier: BSD-2-Clause-Patent > + > + @par Specification Reference: > + - [1] ACPI for Memory System Resource Partitioning and Monitoring 2.0 > + (https://developer.arm.com/documentation/den0065/latest) > + > + @par Glossary: > + - MPAM - Memory System Resource Partitioning And Monitoring > + - MSC - Memory System Component > + - PCC - Platform Communication Channel > + - RIS - Resource Instance Selection > + - SMMU - Arm System Memory Management Unit > + **/ > + > +#ifndef MPAM_H_ > +#define MPAM_H_ > + > +#include <IndustryStandard/Acpi.h> > + > +/// > +/// MPAM Revision > +/// > +#define EFI_ACPI_MEMORY_SYSTEM_RESOURCE_PARTITIONING_AND_MONITORING_TABLE_REVISION (0x01) > + > +/// > +/// MPAM Interrupt mode > +/// > +#define EFI_ACPI_MPAM_INTERRUPT_LEVEL_TRIGGERED (0x0) > +#define EFI_ACPI_MPAM_INTERRUPT_EDGE_TRIGGERED (0x1) > + > +/// > +/// MPAM Interrupt type > +/// > +#define EFI_ACPI_MPAM_INTERRUPT_WIRED (0x0) > + > +/// > +/// MPAM Interrupt affinity type > +/// > +#define EFI_ACPI_MPAM_PROCESSOR_AFFINITY (0x0) > +#define EFI_ACPI_MPAM_PROCESSOR_CONTAINER_AFFINITY (0x1) > + > +/// > +/// MPAM MSC affinity valid > +/// > +#define EFI_ACPI_MPAM_AFFINITY_NOT_VALID (0x0) > +#define EFI_ACPI_MPAM_AFFINITY_VALID (0x1) > + > +/// > +/// MPAM Interrupt flag - bit positions > +/// > +#define EFI_ACPI_MPAM_INTERRUPT_MODE_POS (0x0) > +#define EFI_ACPI_MPAM_INTERRUPT_TYPE_POS (0x1) > +#define EFI_ACPI_MPAM_AFFINITY_TYPE_POS (0x3) > +#define EFI_ACPI_MPAM_AFFINITY_VALID_POS (0x4) > +#define EFI_ACPI_MPAM_RESERVED_POS (0x5) [SAMI] I think it would be better to change the postfix _POS to _SHIFT and corresponing definitions for masks (i.e.EFI_ACPI_MPAM_INTERRUPT_MODE_MASK) be added. > + > +/// > +/// MPAM Location types > +/// as described in document [1], table 11 > +/// > +#define EFI_ACPI_MPAM_LOCATION_PROCESSOR_CACHE (0x0) > +#define EFI_ACPI_MPAM_LOCATION_MEMORY (0x1) > +#define EFI_ACPI_MPAM_LOCATION_SMMU (0x2) > +#define EFI_ACPI_MPAM_LOCATION_MEMORY_CACHE (0x3) > +#define EFI_ACPI_MPAM_LOCATION_ACPI_DEVICE (0x4) > +#define EFI_ACPI_MPAM_LOCATION_INTERCONNECT (0x5) > +#define EFI_ACPI_MPAM_LOCATION_UNKNOWN (0xFF) > + > +/// > +/// MPAM Interface types > +/// > +#define EFI_ACPI_MPAM_INTERFACE_MMIO (0x0) > +#define EFI_ACPI_MPAM_INTERFACE_PCC (0x0A) > + > +#pragma pack(1) > + > +/// > +/// MPAM MSC generic locator descriptor > +/// as described in document [1], table 12 > +/// > +typedef struct { > + UINT64 Descriptor1; > + UINT32 Descriptor2; > +} EFI_ACPI_MPAM_GENERIC_LOCATOR; > + > +/// > +/// MPAM processor cache locator descriptor > +/// as described in document [1], table 13 > +/// > +typedef struct { > + UINT64 CacheReference; > + UINT32 Reserved; > +} EFI_ACPI_MPAM_CACHE_LOCATOR; > + > +/// > +/// MPAM memory locator descriptor > +/// as described in document [1], table 14 > +/// > +typedef struct { > + UINT64 ProximityDomain; > + UINT32 Reserved; > +} EFI_ACPI_MPAM_MEMORY_LOCATOR; > + > +/// > +/// MPAM SMMU locator descriptor > +/// as described in document [1], table 15 > +/// > +typedef struct { > + UINT64 SmmuInterface; > + UINT32 Reserved; > +} EFI_ACPI_MPAM_SMMU_LOCATOR; > + > +/// > +/// MPAM memory-side cache locator descriptor > +/// as described in Document [1], table 16 > +/// > +typedef struct { > + UINT8 Reserved[7]; > + UINT8 Level; > + UINT32 Reference; > +} EFI_ACPI_MPAM_MEMORY_CACHE_LOCATOR; > + > +/// > +/// MPAM ACPI device locator descriptor > +/// as described in document [1], table 17 > +/// > +typedef struct { > + UINT64 AcpiHardwareId; > + UINT32 AcpiUniqueId; > +} EFI_ACPI_MPAM_ACPI_LOCATOR; > + > +/// > +/// MPAM interconnect locator descriptor > +/// as described in document [1], table 18 > +/// > +typedef struct { > + UINT64 InterconnectDescTblOff; > + UINT32 Reserved; > +} EFI_ACPI_MPAM_INTERCONNECT_LOCATOR; > + > +/// > +/// MPAM interconnect descriptor > +/// as described in document [1], table 19 > +/// > +typedef struct { > + UINT32 SourceID; > + UINT32 DestinationID; > + UINT8 LinkType; > + UINT8 Reserved[3]; > +} EFI_ACPI_MPAM_INTERCONNECT_DESCRIPTOR; > + > +/// > +/// MPAM interconnect descriptor table > +/// as described in document [1], table 20 > +/// > +typedef struct { > + UINT8 Signature[16]; > + UINT32 NumDescriptors; > +} EFI_ACPI_MPAM_INTERCONNECT_DESCRIPTOR_TABLE; > + > +/// > +/// MPAM resource locator > +/// > +typedef union { > + EFI_ACPI_MPAM_CACHE_LOCATOR CacheLocator; > + EFI_ACPI_MPAM_MEMORY_LOCATOR MemoryLocator; > + EFI_ACPI_MPAM_SMMU_LOCATOR SmmuLocator; > + EFI_ACPI_MPAM_MEMORY_CACHE_LOCATOR MemCacheLocator; > + EFI_ACPI_MPAM_ACPI_LOCATOR AcpiLocator; > + EFI_ACPI_MPAM_INTERCONNECT_LOCATOR InterconnectIfcLocator; > + EFI_ACPI_MPAM_GENERIC_LOCATOR GenericLocator; > +} EFI_ACPI_MPAM_LOCATOR; > + > +/// > +/// MPAM MSC node body > +/// as described document [1], table 4 > +/// > +typedef struct { > + UINT16 Length; > + UINT8 InterfaceType; > + UINT8 Reserved; > + UINT32 Identifier; > + UINT64 BaseAddress; > + UINT32 MmioSize; > + UINT32 OverflowInterrupt; > + UINT32 OverflowInterruptFlags; > + UINT32 Reserved1; > + UINT32 OverflowInterruptAffinity; > + UINT32 ErrorInterrupt; > + UINT32 ErrorInterruptFlags; > + UINT32 Reserved2; > + UINT32 ErrorInterruptAffinity; > + UINT32 MaxNrdyUsec; > + UINT64 HIDLinkedDevice; [SAMI] I think the above field name should be HidLinkedDevice and similarly the following field name should be InstanceIdLinkedDevice. Otherwise I suspect the CI would complain. Can you check, please? > + UINT32 InstanceIDLinkedDevice; > + UINT32 NumResources; > +} EFI_ACPI_MPAM_MSC_NODE; > + > +/// > +/// MPAM MSC resource > +/// as described in document [1], table 9 > +/// > +typedef struct { > + UINT32 Identifier; > + UINT8 RisIndex; > + UINT16 Reserved1; > + UINT8 LocatorType; > + EFI_ACPI_MPAM_LOCATOR Locator; > + UINT32 NumDependencies; > +} EFI_ACPI_MPAM_MSC_RESOURCE; > + > +/// > +/// MPAM Function dependency descriptor > +/// as described in document [1], table 10 > +/// > +typedef struct { > + UINT32 Producer; > + UINT32 Reserved; > +} EFI_ACPI_MPAM_FUNCTIONAL_DEPENDENCY_DESCRIPTOR; > + > +#pragma pack() > + > +#endif ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [edk2][PATCH V1 1/1] MdePkg/IndustryStandard: add definitions for MPAM ACPI specification 2023-03-29 9:56 ` Sami Mujawar @ 2023-03-29 22:47 ` Rohit Mathew 0 siblings, 0 replies; 7+ messages in thread From: Rohit Mathew @ 2023-03-29 22:47 UTC (permalink / raw) To: Sami Mujawar, devel@edk2.groups.io Cc: Michael D Kinney, Liming Gao, Thomas Abraham, Swatisri Kantamsetti, nd Thanks Sami, Michael, Liming for the review/ack. I'll post a V2 with the comments addressed. Let me also work on the Acpi parser for the same. Regards, Rohit > -----Original Message----- > From: Sami Mujawar <Sami.Mujawar@arm.com> > Sent: Wednesday, March 29, 2023 10:57 AM > To: Rohit Mathew <Rohit.Mathew@arm.com>; devel@edk2.groups.io > Cc: Michael D Kinney <michael.d.kinney@intel.com>; Liming Gao > <gaoliming@byosoft.com.cn>; Zhiguang Liu <ZhiguangLiu@arm.com>; Thomas > Abraham <thomas.abraham@arm.com>; Swatisri Kantamsetti > <swatisrik@nvidia.com>; nd <nd@arm.com> > Subject: Re: [edk2][PATCH V1 1/1] MdePkg/IndustryStandard: add definitions > for MPAM ACPI specification > > Hi Rohit, > > Thank you for this patch, and apologies for the delay in reply. > > I have a few minor suggestions marked inline as [SAMI]. > > Other than that, I would like to see a corresponding patch to add MPAM > support to Acpiview. > > With that addressed, > > Reviewed-by: Sami Mujawar <sami.mujawar@arm.com> > > regards, > > Sami Mujawar > > On 25/01/2023 12:39 am, Rohit Mathew wrote: > > add definitions, macros and types for elements associated with MPAM > > ACPI 2.0 specification. > > > > Signed-off-by: Rohit Mathew <rohit.mathew@arm.com> > > --- > > MdePkg/Include/IndustryStandard/Acpi64.h | 7 +- > > MdePkg/Include/IndustryStandard/Mpam.h | 229 > ++++++++++++++++++++ > > 2 files changed, 235 insertions(+), 1 deletion(-) > > > > github link: > > https://github.com/rohit-arm/edk2/tree/mpam_acpi > > > > diff --git a/MdePkg/Include/IndustryStandard/Acpi64.h > > b/MdePkg/Include/IndustryStandard/Acpi64.h > > index 575ca0430c..2be9525979 100644 > > --- a/MdePkg/Include/IndustryStandard/Acpi64.h > > +++ b/MdePkg/Include/IndustryStandard/Acpi64.h > > @@ -2,7 +2,7 @@ > > ACPI 6.4 definitions from the ACPI Specification Revision 6.4 Jan, 2021. > > > > Copyright (c) 2017 - 2022, Intel Corporation. All rights > > reserved.<BR> > > - Copyright (c) 2019 - 2021, ARM Ltd. All rights reserved.<BR> > > + Copyright (c) 2019 - 2023, ARM Limited. All rights reserved.<BR> > > > > SPDX-License-Identifier: BSD-2-Clause-Patent > > **/ > > @@ -3157,6 +3157,11 @@ typedef struct { > > /// > > #define EFI_ACPI_6_4_XEN_PROJECT_TABLE_SIGNATURE > SIGNATURE_32('X', > > 'E', 'N', 'V') > > > > +/// > > +/// "MPAM" Memory System Resource Partitioning and Monitoring Table > > +/// #define > > > +EFI_ACPI_MEMORY_SYSTEM_RESOURCE_PARTITIONING_AND_MONITORING > _TABLE_SIG > > +NATURE SIGNATURE_32('M', 'P', 'A', 'M') > > + > > #pragma pack() > > > > #endif > > diff --git a/MdePkg/Include/IndustryStandard/Mpam.h > > b/MdePkg/Include/IndustryStandard/Mpam.h > > new file mode 100644 > > index 0000000000..8e6e72ea28 > > --- /dev/null > > +++ b/MdePkg/Include/IndustryStandard/Mpam.h > > @@ -0,0 +1,229 @@ > > +/** @file > > + ACPI for Memory System Resource Partitioning and Monitoring 2.0 > > +(MPAM) as > > + specified in ARM spec DEN0065 > > + > > + Copyright (c) 2023, Arm Limited. All rights reserved. > > + > > + SPDX-License-Identifier: BSD-2-Clause-Patent > > + > > + @par Specification Reference: > > + - [1] ACPI for Memory System Resource Partitioning and Monitoring 2.0 > > + (https://developer.arm.com/documentation/den0065/latest) > > + > > + @par Glossary: > > + - MPAM - Memory System Resource Partitioning And Monitoring > > + - MSC - Memory System Component > > + - PCC - Platform Communication Channel > > + - RIS - Resource Instance Selection > > + - SMMU - Arm System Memory Management Unit **/ > > + > > +#ifndef MPAM_H_ > > +#define MPAM_H_ > > + > > +#include <IndustryStandard/Acpi.h> > > + > > +/// > > +/// MPAM Revision > > +/// > > +#define > > > +EFI_ACPI_MEMORY_SYSTEM_RESOURCE_PARTITIONING_AND_MONITORING > _TABLE_REV > > +ISION (0x01) > > + > > +/// > > +/// MPAM Interrupt mode > > +/// > > +#define EFI_ACPI_MPAM_INTERRUPT_LEVEL_TRIGGERED (0x0) > > +#define EFI_ACPI_MPAM_INTERRUPT_EDGE_TRIGGERED (0x1) > > + > > +/// > > +/// MPAM Interrupt type > > +/// > > +#define EFI_ACPI_MPAM_INTERRUPT_WIRED (0x0) > > + > > +/// > > +/// MPAM Interrupt affinity type > > +/// > > +#define EFI_ACPI_MPAM_PROCESSOR_AFFINITY (0x0) > > +#define EFI_ACPI_MPAM_PROCESSOR_CONTAINER_AFFINITY (0x1) > > + > > +/// > > +/// MPAM MSC affinity valid > > +/// > > +#define EFI_ACPI_MPAM_AFFINITY_NOT_VALID (0x0) > > +#define EFI_ACPI_MPAM_AFFINITY_VALID (0x1) > > + > > +/// > > +/// MPAM Interrupt flag - bit positions /// #define > > +EFI_ACPI_MPAM_INTERRUPT_MODE_POS (0x0) #define > > +EFI_ACPI_MPAM_INTERRUPT_TYPE_POS (0x1) > > +#define EFI_ACPI_MPAM_AFFINITY_TYPE_POS (0x3) > > +#define EFI_ACPI_MPAM_AFFINITY_VALID_POS (0x4) > > +#define EFI_ACPI_MPAM_RESERVED_POS (0x5) > [SAMI] I think it would be better to change the postfix _POS to _SHIFT and > corresponing definitions for masks > (i.e.EFI_ACPI_MPAM_INTERRUPT_MODE_MASK) be added. > > + > > +/// > > +/// MPAM Location types > > +/// as described in document [1], table 11 /// #define > > +EFI_ACPI_MPAM_LOCATION_PROCESSOR_CACHE (0x0) > > +#define EFI_ACPI_MPAM_LOCATION_MEMORY (0x1) > > +#define EFI_ACPI_MPAM_LOCATION_SMMU (0x2) > > +#define EFI_ACPI_MPAM_LOCATION_MEMORY_CACHE (0x3) > > +#define EFI_ACPI_MPAM_LOCATION_ACPI_DEVICE (0x4) > > +#define EFI_ACPI_MPAM_LOCATION_INTERCONNECT (0x5) > > +#define EFI_ACPI_MPAM_LOCATION_UNKNOWN (0xFF) > > + > > +/// > > +/// MPAM Interface types > > +/// > > +#define EFI_ACPI_MPAM_INTERFACE_MMIO (0x0) > > +#define EFI_ACPI_MPAM_INTERFACE_PCC (0x0A) > > + > > +#pragma pack(1) > > + > > +/// > > +/// MPAM MSC generic locator descriptor /// as described in document > > +[1], table 12 /// typedef struct { > > + UINT64 Descriptor1; > > + UINT32 Descriptor2; > > +} EFI_ACPI_MPAM_GENERIC_LOCATOR; > > + > > +/// > > +/// MPAM processor cache locator descriptor /// as described in > > +document [1], table 13 /// typedef struct { > > + UINT64 CacheReference; > > + UINT32 Reserved; > > +} EFI_ACPI_MPAM_CACHE_LOCATOR; > > + > > +/// > > +/// MPAM memory locator descriptor > > +/// as described in document [1], table 14 /// typedef struct { > > + UINT64 ProximityDomain; > > + UINT32 Reserved; > > +} EFI_ACPI_MPAM_MEMORY_LOCATOR; > > + > > +/// > > +/// MPAM SMMU locator descriptor > > +/// as described in document [1], table 15 /// typedef struct { > > + UINT64 SmmuInterface; > > + UINT32 Reserved; > > +} EFI_ACPI_MPAM_SMMU_LOCATOR; > > + > > +/// > > +/// MPAM memory-side cache locator descriptor /// as described in > > +Document [1], table 16 /// typedef struct { > > + UINT8 Reserved[7]; > > + UINT8 Level; > > + UINT32 Reference; > > +} EFI_ACPI_MPAM_MEMORY_CACHE_LOCATOR; > > + > > +/// > > +/// MPAM ACPI device locator descriptor /// as described in document > > +[1], table 17 /// typedef struct { > > + UINT64 AcpiHardwareId; > > + UINT32 AcpiUniqueId; > > +} EFI_ACPI_MPAM_ACPI_LOCATOR; > > + > > +/// > > +/// MPAM interconnect locator descriptor /// as described in document > > +[1], table 18 /// typedef struct { > > + UINT64 InterconnectDescTblOff; > > + UINT32 Reserved; > > +} EFI_ACPI_MPAM_INTERCONNECT_LOCATOR; > > + > > +/// > > +/// MPAM interconnect descriptor > > +/// as described in document [1], table 19 /// typedef struct { > > + UINT32 SourceID; > > + UINT32 DestinationID; > > + UINT8 LinkType; > > + UINT8 Reserved[3]; > > +} EFI_ACPI_MPAM_INTERCONNECT_DESCRIPTOR; > > + > > +/// > > +/// MPAM interconnect descriptor table /// as described in document > > +[1], table 20 /// typedef struct { > > + UINT8 Signature[16]; > > + UINT32 NumDescriptors; > > +} EFI_ACPI_MPAM_INTERCONNECT_DESCRIPTOR_TABLE; > > + > > +/// > > +/// MPAM resource locator > > +/// > > +typedef union { > > + EFI_ACPI_MPAM_CACHE_LOCATOR CacheLocator; > > + EFI_ACPI_MPAM_MEMORY_LOCATOR MemoryLocator; > > + EFI_ACPI_MPAM_SMMU_LOCATOR SmmuLocator; > > + EFI_ACPI_MPAM_MEMORY_CACHE_LOCATOR MemCacheLocator; > > + EFI_ACPI_MPAM_ACPI_LOCATOR AcpiLocator; > > + EFI_ACPI_MPAM_INTERCONNECT_LOCATOR InterconnectIfcLocator; > > + EFI_ACPI_MPAM_GENERIC_LOCATOR GenericLocator; > > +} EFI_ACPI_MPAM_LOCATOR; > > + > > +/// > > +/// MPAM MSC node body > > +/// as described document [1], table 4 /// typedef struct { > > + UINT16 Length; > > + UINT8 InterfaceType; > > + UINT8 Reserved; > > + UINT32 Identifier; > > + UINT64 BaseAddress; > > + UINT32 MmioSize; > > + UINT32 OverflowInterrupt; > > + UINT32 OverflowInterruptFlags; > > + UINT32 Reserved1; > > + UINT32 OverflowInterruptAffinity; > > + UINT32 ErrorInterrupt; > > + UINT32 ErrorInterruptFlags; > > + UINT32 Reserved2; > > + UINT32 ErrorInterruptAffinity; > > + UINT32 MaxNrdyUsec; > > + UINT64 HIDLinkedDevice; > [SAMI] I think the above field name should be HidLinkedDevice and similarly > the following field name should be InstanceIdLinkedDevice. > Otherwise I suspect the CI would complain. Can you check, please? > > + UINT32 InstanceIDLinkedDevice; > > + UINT32 NumResources; > > +} EFI_ACPI_MPAM_MSC_NODE; > > + > > +/// > > +/// MPAM MSC resource > > +/// as described in document [1], table 9 /// typedef struct { > > + UINT32 Identifier; > > + UINT8 RisIndex; > > + UINT16 Reserved1; > > + UINT8 LocatorType; > > + EFI_ACPI_MPAM_LOCATOR Locator; > > + UINT32 NumDependencies; > > +} EFI_ACPI_MPAM_MSC_RESOURCE; > > + > > +/// > > +/// MPAM Function dependency descriptor /// as described in document > > +[1], table 10 /// typedef struct { > > + UINT32 Producer; > > + UINT32 Reserved; > > +} EFI_ACPI_MPAM_FUNCTIONAL_DEPENDENCY_DESCRIPTOR; > > + > > +#pragma pack() > > + > > +#endif ^ permalink raw reply [flat|nested] 7+ messages in thread
end of thread, other threads:[~2023-03-30 8:00 UTC | newest] Thread overview: 7+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2023-01-25 0:39 [edk2][PATCH V1 1/1] MdePkg/IndustryStandard: add definitions for MPAM ACPI specification Rohit Mathew 2023-01-29 5:39 ` 回复: " gaoliming 2023-02-13 21:01 ` Rohit Mathew [not found] ` <17437E1124F9F6B0.21535@groups.io> 2023-03-27 14:32 ` [edk2-devel] " Rohit Mathew 2023-03-27 15:02 ` Michael D Kinney 2023-03-29 9:56 ` Sami Mujawar 2023-03-29 22:47 ` Rohit Mathew
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox