Reviewed-by: Xie XiuQi xiexiuqi@huawei.com
On 2023/6/8 21:03, Yu Liao wrote:
From: Hesham Almatary hesham.almatary@huawei.com
mainline inclusion from mainline-v6.4-rc1 category: feature bugzilla: https://gitee.com/openeuler/kernel/issues/I77UDW CVE: NA
Reference: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?i...
ACPICA commit 005e24bcaa6e4c7db327b4f81fb63b2715aac7e6
Complies with ACPI for Memory System Resource Partitioning and Monitoring 2.0 [1]. Document number: DEN0065, as of December 2022.
Support for all types of MPAM resources. No support yet for:
- MPAM PCC Interface Type
- The optional Resource-specific data per MSC node, introduced in v2 of the
MPAM ACPI spec.
[1] https://developer.arm.com/documentation/den0065/latest
Link: https://github.com/acpica/acpica/commit/005e24bc Signed-off-by: Hesham Almatary hesham.almatary@huawei.com Signed-off-by: Bob Moore robert.moore@intel.com Signed-off-by: Rafael J. Wysocki rafael.j.wysocki@intel.com Signed-off-by: Yu Liao liaoyu15@huawei.com
include/acpi/actbl2.h | 111 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 111 insertions(+)
diff --git a/include/acpi/actbl2.h b/include/acpi/actbl2.h index cbe7b567ab3b..0df6012703d6 100644 --- a/include/acpi/actbl2.h +++ b/include/acpi/actbl2.h @@ -1106,6 +1106,117 @@ struct acpi_mpam_node_memory { u8 reserved1[3]; };
+/*******************************************************************************
- MPAM - Memory System Resource Partitioning and Monitoring
- Conforms to "ACPI for Memory System Resource Partitioning and Monitoring 2.0"
- Document number: ARM DEN 0065, December, 2022.
- ******************************************************************************/
+/* MPAM RIS locator types. Table 11, Location types */ +enum acpi_mpam_locator_type {
- ACPI_MPAM_LOCATION_TYPE_PROCESSOR_CACHE = 0,
- ACPI_MPAM_LOCATION_TYPE_MEMORY = 1,
- ACPI_MPAM_LOCATION_TYPE_SMMU = 2,
- ACPI_MPAM_LOCATION_TYPE_MEMORY_CACHE = 3,
- ACPI_MPAM_LOCATION_TYPE_ACPI_DEVICE = 4,
- ACPI_MPAM_LOCATION_TYPE_INTERCONNECT = 5,
- ACPI_MPAM_LOCATION_TYPE_UNKNOWN = 0xFF
+};
+/* MPAM Functional dependency descriptor. Table 10 */ +struct acpi_mpam_func_deps {
- u32 producer;
- u32 reserved;
+};
+/* MPAM Processor cache locator descriptor. Table 13 */ +struct acpi_mpam_resource_cache_locator {
- u64 cache_reference;
- u32 reserved;
+};
+/* MPAM Memory locator descriptor. Table 14 */ +struct acpi_mpam_resource_memory_locator {
- u64 proximity_domain;
- u32 reserved;
+};
+/* MPAM SMMU locator descriptor. Table 15 */ +struct acpi_mpam_resource_smmu_locator {
- u64 smmu_interface;
- u32 reserved;
+};
+/* MPAM Memory-side cache locator descriptor. Table 16 */ +struct acpi_mpam_resource_memcache_locator {
- u8 reserved[7];
- u8 level;
- u32 reference;
+};
+/* MPAM ACPI device locator descriptor. Table 17 */ +struct acpi_mpam_resource_acpi_locator {
- u64 acpi_hw_id;
- u32 acpi_unique_id;
+};
+/* MPAM Interconnect locator descriptor. Table 18 */ +struct acpi_mpam_resource_interconnect_locator {
- u64 inter_connect_desc_tbl_off;
- u32 reserved;
+};
+/* MPAM Locator structure. Table 12 */ +struct acpi_mpam_resource_generic_locator {
- u64 descriptor1;
- u32 descriptor2;
+};
+union acpi_mpam_resource_locator {
- struct acpi_mpam_resource_cache_locator cache_locator;
- struct acpi_mpam_resource_memory_locator memory_locator;
- struct acpi_mpam_resource_smmu_locator smmu_locator;
- struct acpi_mpam_resource_memcache_locator mem_cache_locator;
- struct acpi_mpam_resource_acpi_locator acpi_locator;
- struct acpi_mpam_resource_interconnect_locator interconnect_ifc_locator;
- struct acpi_mpam_resource_generic_locator generic_locator;
+};
+/* Memory System Component Resource Node Structure Table 9 */ +struct acpi_mpam_resource_node {
- u32 identifier;
- u8 ris_index;
- u16 reserved1;
- u8 locator_type;
- union acpi_mpam_resource_locator locator;
- u32 num_functional_deps;
+};
+/* Memory System Component (MSC) Node Structure. Table 4 */ +struct acpi_mpam_msc_node {
- u16 length;
- u8 interface_type;
- u8 reserved;
- u32 identifier;
- u64 base_address;
- u32 mmio_size;
- u32 overflow_interrupt;
- u32 overflow_interrupt_flags;
- u32 reserved1;
- u32 overflow_interrupt_affinity;
- u32 error_interrupt;
- u32 error_interrupt_flags;
- u32 reserved2;
- u32 error_interrupt_affinity;
- u32 max_nrdy_usec;
- u64 hardware_id_linked_device;
- u32 instance_id_linked_device;
- u32 num_resouce_nodes;
+};
/*******************************************************************************
- MSDM - Microsoft Data Management table