mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
From: Chen Yu <yu.c.chen@intel.com>
To: Reinette Chatre <reinette.chatre@intel.com>,
	Tony Luck <tony.luck@intel.com>
Cc: Ben Horgan <ben.horgan@arm.com>,
	"James Morse" <james.morse@arm.com>,
	Dave Martin <Dave.Martin@arm.com>,
	Babu Moger <babu.moger@amd.com>, Fenghua Yu <fenghuay@nvidia.com>,
	Borislav Petkov <bp@alien8.de>,
	Thomas Gleixner <tglx@linutronix.de>,
	"Dave Hansen" <dave.hansen@linux.intel.com>,
	Peter Newman <peternewman@google.com>,
	chen.yu@linux.dev, x86@kernel.org, linux-kernel@vger.kernel.org
Subject: [RFC PATCH 14/31] x86/resctrl: Add emulation controller list to resctrl_ctrl
Date: Mon,  3 Aug 2026 00:06:01 +0800	[thread overview]
Message-ID: <ba5c6aed035bedd8586a7bb83d6563d0e5ee4906.1785680802.git.yu.c.chen@intel.com> (raw)
In-Reply-To: <cover.1785680802.git.yu.c.chen@intel.com>

There is a requirement to emulate Controller A using a set of other
controllers. The purpose is to either supply hierarchy information in
the schema info directory or emulate legacy controllers via the new
controllers for backward compatibility.

A legacy controller can be emulated by more than one controller. For
example, on region aware platforms the legacy MBA control is emulated by
the MAX control of every available memory region. Track the emulating
controllers on a list anchored at resctrl_ctrl::emul, linked via
resctrl_ctrl::emul_entry.

Signed-off-by: Chen Yu <yu.c.chen@intel.com>
---
 arch/x86/kernel/cpu/resctrl/core.c | 4 ++++
 include/linux/resctrl.h            | 4 ++++
 2 files changed, 8 insertions(+)

diff --git a/arch/x86/kernel/cpu/resctrl/core.c b/arch/x86/kernel/cpu/resctrl/core.c
index f0e30f22576c..a7322f0ebaea 100644
--- a/arch/x86/kernel/cpu/resctrl/core.c
+++ b/arch/x86/kernel/cpu/resctrl/core.c
@@ -167,6 +167,7 @@ static inline void cache_alloc_hsw_probe(void)
 	hw_ctrl->r_ctrl.type = RESCTRL_CTRL_BITMAP;
 	hw_ctrl->r_ctrl.name = RESCTRL_CTRL_NAME_DEF;
 	INIT_LIST_HEAD(&hw_ctrl->r_ctrl.domains);
+	INIT_LIST_HEAD(&hw_ctrl->r_ctrl.emul);
 	hw_ctrl->r_ctrl.bitmap.cbm_len = 20;
 	hw_ctrl->r_ctrl.bitmap.shareable_bits = 0xc0000;
 	hw_ctrl->r_ctrl.bitmap.min_cbm_bits = 2;
@@ -205,6 +206,7 @@ static __init bool __get_mem_config_intel(struct rdt_resource *r)
 	hw_ctrl->r_ctrl.type = RESCTRL_CTRL_SCALAR;
 	hw_ctrl->r_ctrl.name = RESCTRL_CTRL_NAME_DEF;
 	INIT_LIST_HEAD(&hw_ctrl->r_ctrl.domains);
+	INIT_LIST_HEAD(&hw_ctrl->r_ctrl.emul);
 
 	hw_ctrl->r_ctrl.scalar.max_bw = MAX_MBA_BW;
 	hw_ctrl->r_ctrl.scalar.min_bw = MAX_MBA_BW - max_delay;
@@ -260,6 +262,7 @@ static __init bool __rdt_get_mem_config_amd(struct rdt_resource *r)
 	hw_ctrl->r_ctrl.type = RESCTRL_CTRL_SCALAR;
 	hw_ctrl->r_ctrl.name = RESCTRL_CTRL_NAME_DEF;
 	INIT_LIST_HEAD(&hw_ctrl->r_ctrl.domains);
+	INIT_LIST_HEAD(&hw_ctrl->r_ctrl.emul);
 
 	hw_ctrl->r_ctrl.scalar.max_bw = BIT(eax);
 
@@ -313,6 +316,7 @@ static void rdt_get_cache_alloc_cfg(int idx, struct rdt_resource *r)
 	hw_ctrl->r_ctrl.type = RESCTRL_CTRL_BITMAP;
 	hw_ctrl->r_ctrl.name = RESCTRL_CTRL_NAME_DEF;
 	INIT_LIST_HEAD(&hw_ctrl->r_ctrl.domains);
+	INIT_LIST_HEAD(&hw_ctrl->r_ctrl.emul);
 
 	hw_ctrl->r_ctrl.bitmap.cbm_len = eax.split.cbm_len + 1;
 	default_ctrl = BIT_MASK(eax.split.cbm_len + 1) - 1;
diff --git a/include/linux/resctrl.h b/include/linux/resctrl.h
index b2af0664cce7..e8da30a71e13 100644
--- a/include/linux/resctrl.h
+++ b/include/linux/resctrl.h
@@ -378,6 +378,8 @@ enum resctrl_ctrl_name {
  *		visibility via the resource_schemata info directory.
  * @bitmap:	Bitmap control properties.
  * @scalar:	Scalar control properties.
+ * @emul:	List of controls that emulate the current control.
+ * @emul_entry:	List entry of the emulated control's resctrl_ctrl::emul.
  */
 struct resctrl_ctrl {
 	struct list_head	entry;
@@ -390,6 +392,8 @@ struct resctrl_ctrl {
 		struct resctrl_ctrl_bitmap	bitmap;
 		struct resctrl_ctrl_scalar	scalar;
 	};
+	struct list_head	emul;
+	struct list_head	emul_entry;
 };
 
 /**
-- 
2.43.0


  parent reply	other threads:[~2026-08-02 16:15 UTC|newest]

Thread overview: 37+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-08-02 15:57 [RFC PATCH 00/31] Introduce region-aware RDT support Chen Yu
2026-08-02 16:02 ` [RFC PATCH 01/31] x86/topology: Export topo_lookup_cpuid() for resctrl use Chen Yu
2026-08-02 16:02 ` [RFC PATCH 02/31] x86/resctrl: Require 64-bit x86 for resctrl support Chen Yu
2026-08-02 16:02 ` [RFC PATCH 03/31] x86/resctrl: Parse ACPI ERDT table and save CACD cpumask for RMDD domains Chen Yu
2026-08-02 16:03 ` [RFC PATCH 04/31] x86/resctrl: Attach ACPI ERDT information to L3 mon domain on CPU online Chen Yu
2026-08-02 16:03 ` [RFC PATCH 05/31] x86/resctrl: Parse ACPI CMRC table Chen Yu
2026-08-04 17:19   ` Luck, Tony
2026-08-04 18:13     ` Luck, Tony
2026-08-05  4:59       ` Chen, Yu C
2026-08-02 16:03 ` [RFC PATCH 06/31] x86/resctrl: Refactor the monitor read function Chen Yu
2026-08-02 16:04 ` [RFC PATCH 07/31] fs/resctrl: Do not invoke smp_processor_id() in preemptible context Chen Yu
2026-08-02 16:04 ` [RFC PATCH 08/31] x86/resctrl: Introduce erdt_cpu_has() and erdt_support() Chen Yu
2026-08-02 16:05 ` [RFC PATCH 09/31] x86/resctrl: Add MMIO-based LLC occupancy monitoring support Chen Yu
2026-08-02 16:05 ` [RFC PATCH 10/31] Revert "x86/resctrl: NOT_FOR_INCLUSION: Example support for multiple controls" Chen Yu
2026-08-02 16:05 ` [RFC PATCH 11/31] x86/resctrl: Rename struct resctrl_membw to struct resctrl_ctrl_scalar Chen Yu
2026-08-02 16:05 ` [RFC PATCH 12/31] x86/resctrl: Rename struct resctrl_cache to struct resctrl_ctrl_bitmap Chen Yu
2026-08-02 16:05 ` [RFC PATCH 13/31] x86/resctrl: Add per-control and per-resource flags Chen Yu
2026-08-02 16:06 ` Chen Yu [this message]
2026-08-02 16:06 ` [RFC PATCH 15/31] x86/resctrl: Parse ACPI MMRC table Chen Yu
2026-08-02 16:06 ` [RFC PATCH 16/31] x86/resctrl: Replace "msr" in monitoring data identifiers Chen Yu
2026-08-02 16:06 ` [RFC PATCH 17/31] x86/resctrl: Introduce region aware MBM event definitions Chen Yu
2026-08-02 16:06 ` [RFC PATCH 18/31] x86/resctrl: Introduce memory region based MBM read callback on MMIO space Chen Yu
2026-08-02 16:06 ` [RFC PATCH 19/31] x86/resctrl: Enable the region based events by adding them into the event Chen Yu
2026-08-02 16:06 ` [RFC PATCH 20/31] x86/resctrl: Rename msr_update to hw_update Chen Yu
2026-08-02 16:07 ` [RFC PATCH 21/31] x86/resctrl: Parse ACPI MARC table Chen Yu
2026-08-02 16:07 ` [RFC PATCH 22/31] fs/resctrl: Add region-based control names and resctrl_ctrl_name_region() Chen Yu
2026-08-02 16:07 ` [RFC PATCH 23/31] x86/resctrl: Add region aware MBA controllers Chen Yu
2026-08-02 16:07 ` [RFC PATCH 24/31] x86/resctrl: Attach ACPI ERDT information to ctrl domain on CPU online Chen Yu
2026-08-02 16:07 ` [RFC PATCH 25/31] x86/resctrl: Introduce region-based MBA write implementation on MMIO space Chen Yu
2026-08-04 21:13   ` Luck, Tony
2026-08-05  6:32     ` Chen, Yu C
2026-08-02 16:07 ` [RFC PATCH 26/31] x86/resctrl: Allow control writes from any CPU for MMIO controllers Chen Yu
2026-08-02 16:07 ` [RFC PATCH 27/31] x86/resctrl: Enable region-aware MBM/MBA via the RDT_CTRL register Chen Yu
2026-08-02 16:08 ` [RFC PATCH 28/31] x86/resctrl: Emulate the legacy MBA controller via the region MAX controls Chen Yu
2026-08-02 16:08 ` [RFC PATCH 29/31] fs/resctrl: Expose emulation controllers in a resource_schemata subdir Chen Yu
2026-08-02 16:08 ` [RFC PATCH 30/31] fs/resctrl: Fix excessive padding in schemata output Chen Yu
2026-08-02 16:08 ` [RFC PATCH 31/31] x86,fs/resctrl: Update Documentation for region aware RDT Chen Yu

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=ba5c6aed035bedd8586a7bb83d6563d0e5ee4906.1785680802.git.yu.c.chen@intel.com \
    --to=yu.c.chen@intel.com \
    --cc=Dave.Martin@arm.com \
    --cc=babu.moger@amd.com \
    --cc=ben.horgan@arm.com \
    --cc=bp@alien8.de \
    --cc=chen.yu@linux.dev \
    --cc=dave.hansen@linux.intel.com \
    --cc=fenghuay@nvidia.com \
    --cc=james.morse@arm.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=peternewman@google.com \
    --cc=reinette.chatre@intel.com \
    --cc=tglx@linutronix.de \
    --cc=tony.luck@intel.com \
    --cc=x86@kernel.org \
    /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

Powered by JetHome