Message ID | 20250210211223.6139-2-tony.luck@intel.com (mailing list archive) |
---|---|
State | Changes Requested, archived |
Headers | show |
Series | Add interfaces for ACPI MRRM table | expand |
On Mon, Feb 10, 2025 at 10:12 PM Tony Luck <tony.luck@intel.com> wrote: > > From: Fenghua Yu <fenghua.yu@intel.com> > > The MRRM table describes association between physical address ranges > and "region numbers". This is used by: > > 1) The /sys/fs/resctrl filesystem to report memory traffic per-RMID for > each region. > 2) Perf subsystem to report memory related uncore events per region. > > Structure defined in the Intel Resource Director Technology (RDT) > Architecture specification downloadable from www.intel.com/sdm > > Signed-off-by: Fenghua Yu <fenghua.yu@intel.com> > Signed-off-by: Tony Luck <tony.luck@intel.com> So the process for ACPICA changes is that they first need to go into the upstream ACPICA project on GitHub. Once merged there, you can submit a corresponding Linux patch pointing to the upstream commit, but submitting it is not mandatory because upstream material lands in the Linux kernel eventually automatically. > --- > include/acpi/actbl3.h | 40 ++++++++++++++++++++++++++++++++++++++++ > 1 file changed, 40 insertions(+) > > diff --git a/include/acpi/actbl3.h b/include/acpi/actbl3.h > index 5cd755143b7d..1b9a03ff73ba 100644 > --- a/include/acpi/actbl3.h > +++ b/include/acpi/actbl3.h > @@ -42,6 +42,7 @@ > #define ACPI_SIG_WSMT "WSMT" /* Windows SMM Security Mitigations Table */ > #define ACPI_SIG_XENV "XENV" /* Xen Environment table */ > #define ACPI_SIG_XXXX "XXXX" /* Intermediate AML header for ASL/ASL+ converter */ > +#define ACPI_SIG_MRRM "MRRM" /* Memory Range and Region Mapping table */ > > /* > * All tables must be byte-packed to match the ACPI specification, since > @@ -793,6 +794,45 @@ struct acpi_table_xenv { > u8 event_flags; > }; > > +/******************************************************************************* > + * > + * MRRM - Memory Range and Region Mapping (MRRM) table > + * > + ******************************************************************************/ > + > +struct acpi_table_mrrm { > + struct acpi_table_header header; > + u8 max_mem_region; /* Max Memory Regions supported */ > + u8 flags; /* Region assignment type */ > + u8 reserved[26]; > + /* Memory range entry array */ > +}; > +#define ACPI_MRRM_FLAGS_REGION_ASSIGNMENT_OS (1<<0) > + > +/******************************************************************************* > + * > + * Memory Range entry - Memory Range entry in MRRM table > + * > + ******************************************************************************/ > + > +struct acpi_table_mrrm_mem_range_entry { > + u16 type; /* Type 0="MRRM" */ > + u16 length; /* 32B + sizeof(Region-ID Programming Reg[]) */ > + u32 reserved; /* Reserved */ > + u32 base_addr_low; /* Low 32 bits of base addr of the mem range */ > + u32 base_addr_high; /* High 32 bits of base addr of the mem range */ > + u32 len_low; /* Low 32 bits of length of the mem range */ > + u32 len_high; /* High 32 bits of length of the mem range */ > + u16 region_id_flags; /* Valid local or remote Region-ID */ > + u8 local_region_id; /* Platform-assigned static local Region-ID */ > + u8 remote_region_id; /* Platform-assigned static remote Region-ID */ > + u32 reserved1; /* Reserved */ > + /* Region-ID Programming Registers[] */ > +}; > + > +#define ACPI_MRRM_VALID_REGION_ID_FLAGS_LOCAL (1<<0) > +#define ACPI_MRRM_VALID_REGION_ID_FLAGS_REMOTE (1<<1) > + > /* Reset to default packing */ > > #pragma pack() > -- > 2.48.1 > >
diff --git a/include/acpi/actbl3.h b/include/acpi/actbl3.h index 5cd755143b7d..1b9a03ff73ba 100644 --- a/include/acpi/actbl3.h +++ b/include/acpi/actbl3.h @@ -42,6 +42,7 @@ #define ACPI_SIG_WSMT "WSMT" /* Windows SMM Security Mitigations Table */ #define ACPI_SIG_XENV "XENV" /* Xen Environment table */ #define ACPI_SIG_XXXX "XXXX" /* Intermediate AML header for ASL/ASL+ converter */ +#define ACPI_SIG_MRRM "MRRM" /* Memory Range and Region Mapping table */ /* * All tables must be byte-packed to match the ACPI specification, since @@ -793,6 +794,45 @@ struct acpi_table_xenv { u8 event_flags; }; +/******************************************************************************* + * + * MRRM - Memory Range and Region Mapping (MRRM) table + * + ******************************************************************************/ + +struct acpi_table_mrrm { + struct acpi_table_header header; + u8 max_mem_region; /* Max Memory Regions supported */ + u8 flags; /* Region assignment type */ + u8 reserved[26]; + /* Memory range entry array */ +}; +#define ACPI_MRRM_FLAGS_REGION_ASSIGNMENT_OS (1<<0) + +/******************************************************************************* + * + * Memory Range entry - Memory Range entry in MRRM table + * + ******************************************************************************/ + +struct acpi_table_mrrm_mem_range_entry { + u16 type; /* Type 0="MRRM" */ + u16 length; /* 32B + sizeof(Region-ID Programming Reg[]) */ + u32 reserved; /* Reserved */ + u32 base_addr_low; /* Low 32 bits of base addr of the mem range */ + u32 base_addr_high; /* High 32 bits of base addr of the mem range */ + u32 len_low; /* Low 32 bits of length of the mem range */ + u32 len_high; /* High 32 bits of length of the mem range */ + u16 region_id_flags; /* Valid local or remote Region-ID */ + u8 local_region_id; /* Platform-assigned static local Region-ID */ + u8 remote_region_id; /* Platform-assigned static remote Region-ID */ + u32 reserved1; /* Reserved */ + /* Region-ID Programming Registers[] */ +}; + +#define ACPI_MRRM_VALID_REGION_ID_FLAGS_LOCAL (1<<0) +#define ACPI_MRRM_VALID_REGION_ID_FLAGS_REMOTE (1<<1) + /* Reset to default packing */ #pragma pack()