From: "Rafael J. Wysocki" <rjw@rjwysocki.net>
To: Linux ACPI <linux-acpi@vger.kernel.org>
Cc: LKML <linux-kernel@vger.kernel.org>,
Bob Moore <robert.moore@intel.com>,
Saket Dumbre <saket.dumbre@intel.com>
Subject: [PATCH v1 11/19] ACPICA: actbl2.h: ERDT: Add typedef and other definitions
Date: Fri, 25 Apr 2025 21:27:24 +0200 [thread overview]
Message-ID: <3296755.5fSG56mABF@rjwysocki.net> (raw)
In-Reply-To: <12671029.O9o76ZdvQC@rjwysocki.net>
From: Tony Luck <tony.luck@intel.com>
ACPICA commit dddd9270531d74af523afa68515d8aae6a18bbe0
The ERDT table (and its many subtables) enumerate capabilities
and methods for Intel Resource Director Technology to monitor
and control L3 cache allocation and memory bandwidth by CPU
cores and IO devices.
Structure defined in the Intel Resource Director Technology (RDT)
Architecture specification downloadable from www.intel.com/sdm
Link: https://github.com/acpica/acpica/commit/dddd9270
Signed-off-by: Tony Luck <tony.luck@intel.com>
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
---
include/acpi/actbl2.h | 190 ++++++++++++++++++++++++++++++++++++++++++
1 file changed, 190 insertions(+)
diff --git a/include/acpi/actbl2.h b/include/acpi/actbl2.h
index 2c07b097ef9f..ccbf543bceeb 100644
--- a/include/acpi/actbl2.h
+++ b/include/acpi/actbl2.h
@@ -29,6 +29,7 @@
#define ACPI_SIG_BDAT "BDAT" /* BIOS Data ACPI Table */
#define ACPI_SIG_CCEL "CCEL" /* CC Event Log Table */
#define ACPI_SIG_CDAT "CDAT" /* Coherent Device Attribute Table */
+#define ACPI_SIG_ERDT "ERDT" /* Enhanced Resource Director Technology */
#define ACPI_SIG_IORT "IORT" /* IO Remapping Table */
#define ACPI_SIG_IVRS "IVRS" /* I/O Virtualization Reporting Structure */
#define ACPI_SIG_LPIT "LPIT" /* Low Power Idle Table */
@@ -450,6 +451,195 @@ struct acpi_table_ccel {
u64 log_area_start_address;
};
+/*******************************************************************************
+ *
+ * ERDT - Enhanced Resource Director Technology (ERDT) table
+ *
+ * Conforms to "Intel Resource Director Technology Architecture Specification"
+ * Version 1.1, January 2025
+ *
+ ******************************************************************************/
+
+struct acpi_table_erdt {
+ struct acpi_table_header header; /* Common ACPI table header */
+ u32 max_clos; /* Maximum classes of service */
+ u8 reserved[24];
+ u8 erdt_substructures[];
+};
+
+/* Values for subtable type in struct acpi_subtbl_hdr_16 */
+
+enum acpi_erdt_type {
+ ACPI_ERDT_TYPE_RMDD = 0,
+ ACPI_ERDT_TYPE_CACD = 1,
+ ACPI_ERDT_TYPE_DACD = 2,
+ ACPI_ERDT_TYPE_CMRC = 3,
+ ACPI_ERDT_TYPE_MMRC = 4,
+ ACPI_ERDT_TYPE_MARC = 5,
+ ACPI_ERDT_TYPE_CARC = 6,
+ ACPI_ERDT_TYPE_CMRD = 7,
+ ACPI_ERDT_TYPE_IBRD = 8,
+ ACPI_ERDT_TYPE_IBAD = 9,
+ ACPI_ERDT_TYPE_CARD = 10,
+ ACPI_ERDT_TYPE_RESERVED = 11 /* 11 and above are reserved */
+};
+
+/*
+ * ERDT Subtables, correspond to Type in struct acpi_subtbl_hdr_16
+ */
+
+/* 0: RMDD - Resource Management Domain Description */
+
+struct acpi_erdt_rmdd {
+ struct acpi_subtbl_hdr_16 header;
+ u16 flags;
+ u16 IO_l3_slices; /* Number of slices in IO cache */
+ u8 IO_l3_sets; /* Number of sets in IO cache */
+ u8 IO_l3_ways; /* Number of ways in IO cache */
+ u64 reserved;
+ u16 domain_id; /* Unique domain ID */
+ u32 max_rmid; /* Maximun RMID supported */
+ u64 creg_base; /* Control Register Base Address */
+ u16 creg_size; /* Control Register Size (4K pages) */
+ u8 rmdd_structs[];
+};
+
+/* 1: CACD - CPU Agent Collection Description */
+
+struct acpi_erdt_cacd {
+ struct acpi_subtbl_hdr_16 header;
+ u16 reserved;
+ u16 domain_id; /* Unique domain ID */
+ u32 X2APICIDS[];
+};
+
+/* 2: DACD - Device Agent Collection Description */
+
+struct acpi_erdt_dacd {
+ struct acpi_subtbl_hdr_16 header;
+ u16 reserved;
+ u16 domain_id; /* Unique domain ID */
+ u8 dev_paths[];
+};
+
+struct acpi_erdt_dacd_dev_paths {
+ struct acpi_subtable_header header;
+ u16 segment;
+ u8 reserved;
+ u8 start_bus;
+ u8 path[];
+};
+
+/* 3: CMRC - Cache Monitoring Registers for CPU Agents */
+
+struct acpi_erdt_cmrc {
+ struct acpi_subtbl_hdr_16 header;
+ u32 reserved1;
+ u32 flags;
+ u8 index_fn;
+ u8 reserved2[11];
+ u64 cmt_reg_base;
+ u32 cmt_reg_size;
+ u16 clump_size;
+ u16 clump_stride;
+ u64 up_scale;
+};
+
+/* 4: MMRC - Memory-bandwidth Monitoring Registers for CPU Agents */
+
+struct acpi_erdt_mmrc {
+ struct acpi_subtbl_hdr_16 header;
+ u32 reserved1;
+ u32 flags;
+ u8 index_fn;
+ u8 reserved2[11];
+ u64 reg_base;
+ u32 reg_size;
+ u8 counter_width;
+ u64 up_scale;
+ u8 reserved3[7];
+ u32 corr_factor_list_len;
+ u32 corr_factor_list[];
+};
+
+/* 5: MARC - Memory-bandwidth Allocation Registers for CPU Agents */
+
+struct acpi_erdt_marc {
+ struct acpi_subtbl_hdr_16 header;
+ u16 reserved1;
+ u16 flags;
+ u8 index_fn;
+ u8 reserved2[7];
+ u64 reg_base_opt;
+ u64 reg_base_min;
+ u64 reg_base_max;
+ u32 mba_reg_size;
+ u32 mba_ctrl_range;
+};
+
+/* 6: CARC - Cache Allocation Registers for CPU Agents */
+
+struct acpi_erdt_carc {
+ struct acpi_subtbl_hdr_16 header;
+};
+
+/* 7: CMRD - Cache Monitoring Registers for Device Agents */
+
+struct acpi_erdt_cmrd {
+ struct acpi_subtbl_hdr_16 header;
+ u32 reserved1;
+ u32 flags;
+ u8 index_fn;
+ u8 reserved2[11];
+ u64 reg_base;
+ u32 reg_size;
+ u16 cmt_reg_off;
+ u16 cmt_clump_size;
+ u64 up_scale;
+};
+
+/* 8: IBRD - Cache Monitoring Registers for Device Agents */
+
+struct acpi_erdt_ibrd {
+ struct acpi_subtbl_hdr_16 header;
+ u32 reserved1;
+ u32 flags;
+ u8 index_fn;
+ u8 reserved2[11];
+ u64 reg_base;
+ u32 reg_size;
+ u16 total_bw_offset;
+ u16 Iomiss_bw_offset;
+ u16 total_bw_clump;
+ u16 Iomiss_bw_clump;
+ u8 reserved3[7];
+ u8 counter_width;
+ u64 up_scale;
+ u32 corr_factor_list_len;
+ u32 corr_factor_list[];
+};
+
+/* 9: IBAD - IO bandwidth Allocation Registers for device agents */
+
+struct acpi_erdt_ibad {
+ struct acpi_subtbl_hdr_16 header;
+};
+
+/* 10: CARD - IO bandwidth Allocation Registers for Device Agents */
+
+struct acpi_erdt_card {
+ struct acpi_subtbl_hdr_16 header;
+ u32 reserved1;
+ u32 flags;
+ u32 contention_mask;
+ u8 index_fn;
+ u8 reserved2[7];
+ u64 reg_base;
+ u32 reg_size;
+ u16 cat_reg_offset;
+ u16 cat_reg_block_size;
+};
+
/*******************************************************************************
*
* IORT - IO Remapping Table
--
2.43.0
next prev parent reply other threads:[~2025-04-25 19:34 UTC|newest]
Thread overview: 27+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-04-25 19:19 [PATCH v1 00/19] ACPICA: ACPICA 20250404 Rafael J. Wysocki
2025-04-25 19:20 ` [PATCH v1 01/19] ACPICA: Drop stale comment about the header file content Rafael J. Wysocki
2025-04-25 19:21 ` [PATCH v1 02/19] ACPICA: Apply pack(1) to union aml_resource Rafael J. Wysocki
2025-04-30 18:48 ` Tamir Duberstein
2025-04-30 18:48 ` [PATCH 0/0] Cover letter only Tamir Duberstein
2025-04-30 18:52 ` Tamir Duberstein
2025-04-25 19:21 ` [PATCH v1 03/19] ACPICA: utilities: Fix overflow check in vsnprintf() Rafael J. Wysocki
2025-05-09 21:41 ` gldrk
2025-04-25 19:22 ` [PATCH v1 04/19] ACPICA: Interpret SIDP structures in DMAR Rafael J. Wysocki
2025-04-25 19:23 ` [PATCH v1 05/19] ACPICA: infrastructure: Add new header and ACPI_DMT_BUF26 types Rafael J. Wysocki
2025-04-25 19:24 ` [PATCH v1 06/19] ACPICA: actbl2.h: MRRM: Add typedef and other definitions Rafael J. Wysocki
2025-04-25 19:24 ` [PATCH v1 07/19] ACPICA: actbl2: Add definitions for RIMT Rafael J. Wysocki
2025-04-25 19:25 ` [PATCH v1 08/19] ACPICA: MRRM: Some cleanups Rafael J. Wysocki
2025-04-25 19:26 ` [PATCH v1 09/19] ACPICA: Utilities: Fix spelling mistake "Incremement" -> "Increment" Rafael J. Wysocki
2025-04-25 19:26 ` [PATCH v1 10/19] ACPICA: infrastructure: Add new DMT_BUF types and shorten a long name Rafael J. Wysocki
2025-04-25 19:27 ` Rafael J. Wysocki [this message]
2025-04-25 19:27 ` [PATCH v1 12/19] ACPICA: Introduce ACPI_NONSTRING Rafael J. Wysocki
2025-04-30 18:35 ` Kees Cook
2025-04-30 18:49 ` Rafael J. Wysocki
2025-04-25 19:28 ` [PATCH v1 13/19] ACPICA: Apply ACPI_NONSTRING Rafael J. Wysocki
2025-04-25 19:29 ` [PATCH v1 14/19] ACPICA: actbl2.h: ACPI 6.5: RAS2: Rename structure and field names of the RAS2 table Rafael J. Wysocki
2025-04-25 19:29 ` [PATCH v1 15/19] ACPICA: Adjust the position of code lines Rafael J. Wysocki
2025-04-25 19:30 ` [PATCH v1 16/19] ACPICA: Avoid sequence overread in call to strncmp() Rafael J. Wysocki
2025-04-25 19:31 ` [PATCH v1 17/19] ACPICA: Apply ACPI_NONSTRING in more places Rafael J. Wysocki
2025-04-25 19:32 ` [PATCH v1 18/19] ACPICA: Replace strncpy() with memcpy() Rafael J. Wysocki
2025-05-07 5:42 ` kernel test robot
2025-04-25 19:33 ` [PATCH v1 19/19] ACPICA: Logfile: Changes for version 20250404 Rafael J. Wysocki
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=3296755.5fSG56mABF@rjwysocki.net \
--to=rjw@rjwysocki.net \
--cc=linux-acpi@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=robert.moore@intel.com \
--cc=saket.dumbre@intel.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).