Containing the following patches: ACPI/MPAM: Adapt to Arm's MPAM ACPI table version 2 ACPI / PPTT: Find PPTT processor node by cache id ACPICA: ACPI 6.4: PPTT: add new version of subtable type 1 ACPICA: Add support for Arm's MPAM ACPI table version 2
167 lines
4.8 KiB
Diff
167 lines
4.8 KiB
Diff
From fbd9895d29825eeea4d958e41a9974534baa8a6c Mon Sep 17 00:00:00 2001
|
|
From: Hesham Almatary <hesham.almatary@huawei.com>
|
|
Date: Fri, 9 Jun 2023 13:06:49 +0800
|
|
Subject: [PATCH openEuler-20.03-LTS-SP4 1/4] ACPICA: Add support for Arm's MPAM ACPI
|
|
table version 2
|
|
|
|
mainline inclusion
|
|
from mainline-v6.4-rc1
|
|
commit 47920aae34e295f4ffbeac0b10698ceda52eec99
|
|
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/?id=47920aae34e295f4ffbeac0b10698ceda52eec99
|
|
|
|
--------------------------------
|
|
|
|
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:
|
|
1) MPAM PCC Interface Type
|
|
2) 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>
|
|
|
|
Conflicts:
|
|
include/acpi/actbl2.h
|
|
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 476d0f6188c6..38325bd24231 100644
|
|
--- a/include/acpi/actbl2.h
|
|
+++ b/include/acpi/actbl2.h
|
|
@@ -964,6 +964,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
|
|
--
|
|
2.25.1
|
|
|