From: "tip-bot2 for James Morse" <tip-bot2@linutronix.de>
To: linux-tip-commits@vger.kernel.org
Cc: James Morse <james.morse@arm.com>,
"Borislav Petkov (AMD)" <bp@alien8.de>,
Shaopeng Tan <tan.shaopeng@jp.fujitsu.com>,
Tony Luck <tony.luck@intel.com>,
Reinette Chatre <reinette.chatre@intel.com>,
Fenghua Yu <fenghuay@nvidia.com>, Babu Moger <babu.moger@amd.com>,
Carl Worth <carl@os.amperecomputing.com>,
Peter Newman <peternewman@google.com>,
Amit Singh Tomar <amitsinght@marvell.com>,
Shanker Donthineni <sdonthineni@nvidia.com>,
x86@kernel.org, linux-kernel@vger.kernel.org
Subject: [tip: x86/cache] x86/resctrl: Allow an architecture to disable pseudo lock
Date: Wed, 12 Mar 2025 17:20:21 -0000 [thread overview]
Message-ID: <174180002199.14745.18052959552909230430.tip-bot2@tip-bot2> (raw)
In-Reply-To: <20250311183715.16445-25-james.morse@arm.com>
The following commit has been merged into the x86/cache branch of tip:
Commit-ID: 7028840552a220ac5efe51a4b554195cd954a912
Gitweb: https://git.kernel.org/tip/7028840552a220ac5efe51a4b554195cd954a912
Author: James Morse <james.morse@arm.com>
AuthorDate: Tue, 11 Mar 2025 18:37:09
Committer: Borislav Petkov (AMD) <bp@alien8.de>
CommitterDate: Wed, 12 Mar 2025 12:24:25 +01:00
x86/resctrl: Allow an architecture to disable pseudo lock
Pseudo-lock relies on knowledge of the micro-architecture to disable
prefetchers etc.
On arm64 these controls are typically secure only, meaning Linux can't access
them. Arm's cache-lockdown feature works in a very different way. Resctrl's
pseudo-lock isn't going to be used on arm64 platforms.
Add a Kconfig symbol that can be selected by the architecture. This enables or
disables building of the pseudo_lock.c file, and replaces the functions with
stubs. An additional IS_ENABLED() check is needed in rdtgroup_mode_write() so
that attempting to enable pseudo-lock reports an "Unknown or unsupported mode"
to user-space via the last_cmd_status file.
Signed-off-by: James Morse <james.morse@arm.com>
Signed-off-by: Borislav Petkov (AMD) <bp@alien8.de>
Reviewed-by: Shaopeng Tan <tan.shaopeng@jp.fujitsu.com>
Reviewed-by: Tony Luck <tony.luck@intel.com>
Reviewed-by: Reinette Chatre <reinette.chatre@intel.com>
Reviewed-by: Fenghua Yu <fenghuay@nvidia.com>
Reviewed-by: Babu Moger <babu.moger@amd.com>
Tested-by: Carl Worth <carl@os.amperecomputing.com> # arm64
Tested-by: Shaopeng Tan <tan.shaopeng@jp.fujitsu.com>
Tested-by: Peter Newman <peternewman@google.com>
Tested-by: Amit Singh Tomar <amitsinght@marvell.com> # arm64
Tested-by: Shanker Donthineni <sdonthineni@nvidia.com> # arm64
Tested-by: Babu Moger <babu.moger@amd.com>
Link: https://lore.kernel.org/r/20250311183715.16445-25-james.morse@arm.com
---
arch/x86/Kconfig | 7 ++++-
arch/x86/kernel/cpu/resctrl/Makefile | 5 +--
arch/x86/kernel/cpu/resctrl/internal.h | 49 ++++++++++++++++++++-----
arch/x86/kernel/cpu/resctrl/rdtgroup.c | 3 +-
4 files changed, 53 insertions(+), 11 deletions(-)
diff --git a/arch/x86/Kconfig b/arch/x86/Kconfig
index 0e27ebd..3cb3acd 100644
--- a/arch/x86/Kconfig
+++ b/arch/x86/Kconfig
@@ -505,6 +505,7 @@ config X86_CPU_RESCTRL
depends on X86 && (CPU_SUP_INTEL || CPU_SUP_AMD)
select KERNFS
select PROC_CPU_RESCTRL if PROC_FS
+ select RESCTRL_FS_PSEUDO_LOCK
help
Enable x86 CPU resource control support.
@@ -521,6 +522,12 @@ config X86_CPU_RESCTRL
Say N if unsure.
+config RESCTRL_FS_PSEUDO_LOCK
+ bool
+ help
+ Software mechanism to pin data in a cache portion using
+ micro-architecture specific knowledge.
+
config X86_FRED
bool "Flexible Return and Event Delivery"
depends on X86_64
diff --git a/arch/x86/kernel/cpu/resctrl/Makefile b/arch/x86/kernel/cpu/resctrl/Makefile
index 4a06c37..0c13b0b 100644
--- a/arch/x86/kernel/cpu/resctrl/Makefile
+++ b/arch/x86/kernel/cpu/resctrl/Makefile
@@ -1,4 +1,5 @@
# SPDX-License-Identifier: GPL-2.0
-obj-$(CONFIG_X86_CPU_RESCTRL) += core.o rdtgroup.o monitor.o
-obj-$(CONFIG_X86_CPU_RESCTRL) += ctrlmondata.o pseudo_lock.o
+obj-$(CONFIG_X86_CPU_RESCTRL) += core.o rdtgroup.o monitor.o
+obj-$(CONFIG_X86_CPU_RESCTRL) += ctrlmondata.o
+obj-$(CONFIG_RESCTRL_FS_PSEUDO_LOCK) += pseudo_lock.o
CFLAGS_pseudo_lock.o = -I$(src)
diff --git a/arch/x86/kernel/cpu/resctrl/internal.h b/arch/x86/kernel/cpu/resctrl/internal.h
index 725f223..8d35bb4 100644
--- a/arch/x86/kernel/cpu/resctrl/internal.h
+++ b/arch/x86/kernel/cpu/resctrl/internal.h
@@ -512,14 +512,6 @@ unsigned int rdtgroup_cbm_to_size(struct rdt_resource *r, struct rdt_ctrl_domain
unsigned long cbm);
enum rdtgrp_mode rdtgroup_mode_by_closid(int closid);
int rdtgroup_tasks_assigned(struct rdtgroup *r);
-int rdtgroup_locksetup_enter(struct rdtgroup *rdtgrp);
-int rdtgroup_locksetup_exit(struct rdtgroup *rdtgrp);
-bool rdtgroup_cbm_overlaps_pseudo_locked(struct rdt_ctrl_domain *d, unsigned long cbm);
-bool rdtgroup_pseudo_locked_in_hierarchy(struct rdt_ctrl_domain *d);
-int rdt_pseudo_lock_init(void);
-void rdt_pseudo_lock_release(void);
-int rdtgroup_pseudo_lock_create(struct rdtgroup *rdtgrp);
-void rdtgroup_pseudo_lock_remove(struct rdtgroup *rdtgrp);
struct rdt_ctrl_domain *get_ctrl_domain_from_cpu(int cpu, struct rdt_resource *r);
struct rdt_mon_domain *get_mon_domain_from_cpu(int cpu, struct rdt_resource *r);
int closids_supported(void);
@@ -551,4 +543,45 @@ void resctrl_file_fflags_init(const char *config, unsigned long fflags);
void rdt_staged_configs_clear(void);
bool closid_allocated(unsigned int closid);
int resctrl_find_cleanest_closid(void);
+
+#ifdef CONFIG_RESCTRL_FS_PSEUDO_LOCK
+int rdtgroup_locksetup_enter(struct rdtgroup *rdtgrp);
+int rdtgroup_locksetup_exit(struct rdtgroup *rdtgrp);
+bool rdtgroup_cbm_overlaps_pseudo_locked(struct rdt_ctrl_domain *d, unsigned long cbm);
+bool rdtgroup_pseudo_locked_in_hierarchy(struct rdt_ctrl_domain *d);
+int rdt_pseudo_lock_init(void);
+void rdt_pseudo_lock_release(void);
+int rdtgroup_pseudo_lock_create(struct rdtgroup *rdtgrp);
+void rdtgroup_pseudo_lock_remove(struct rdtgroup *rdtgrp);
+#else
+static inline int rdtgroup_locksetup_enter(struct rdtgroup *rdtgrp)
+{
+ return -EOPNOTSUPP;
+}
+
+static inline int rdtgroup_locksetup_exit(struct rdtgroup *rdtgrp)
+{
+ return -EOPNOTSUPP;
+}
+
+static inline bool rdtgroup_cbm_overlaps_pseudo_locked(struct rdt_ctrl_domain *d, unsigned long cbm)
+{
+ return false;
+}
+
+static inline bool rdtgroup_pseudo_locked_in_hierarchy(struct rdt_ctrl_domain *d)
+{
+ return false;
+}
+
+static inline int rdt_pseudo_lock_init(void) { return 0; }
+static inline void rdt_pseudo_lock_release(void) { }
+static inline int rdtgroup_pseudo_lock_create(struct rdtgroup *rdtgrp)
+{
+ return -EOPNOTSUPP;
+}
+
+static inline void rdtgroup_pseudo_lock_remove(struct rdtgroup *rdtgrp) { }
+#endif /* CONFIG_RESCTRL_FS_PSEUDO_LOCK */
+
#endif /* _ASM_X86_RESCTRL_INTERNAL_H */
diff --git a/arch/x86/kernel/cpu/resctrl/rdtgroup.c b/arch/x86/kernel/cpu/resctrl/rdtgroup.c
index a388ef6..e592715 100644
--- a/arch/x86/kernel/cpu/resctrl/rdtgroup.c
+++ b/arch/x86/kernel/cpu/resctrl/rdtgroup.c
@@ -1453,7 +1453,8 @@ static ssize_t rdtgroup_mode_write(struct kernfs_open_file *of,
goto out;
}
rdtgrp->mode = RDT_MODE_EXCLUSIVE;
- } else if (!strcmp(buf, "pseudo-locksetup")) {
+ } else if (IS_ENABLED(CONFIG_RESCTRL_FS_PSEUDO_LOCK) &&
+ !strcmp(buf, "pseudo-locksetup")) {
ret = rdtgroup_locksetup_enter(rdtgrp);
if (ret)
goto out;
next prev parent reply other threads:[~2025-03-12 17:20 UTC|newest]
Thread overview: 68+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-03-11 18:36 [PATCH v8:for-boris 00/30] x86/resctrl: Move the resctrl filesystem code to /fs/resctrl James Morse
2025-03-11 18:36 ` [PATCH v8:for-boris 01/30] x86/resctrl: Fix allocation of cleanest CLOSID on platforms with no monitors James Morse
2025-03-12 17:20 ` [tip: x86/cache] " tip-bot2 for James Morse
2025-03-11 18:36 ` [PATCH v8:for-boris 02/30] x86/resctrl: Add a helper to avoid reaching into the arch code resource list James Morse
2025-03-12 17:20 ` [tip: x86/cache] " tip-bot2 for James Morse
2025-03-11 18:36 ` [PATCH v8:for-boris 03/30] x86/resctrl: Remove fflags from struct rdt_resource James Morse
2025-03-12 17:20 ` [tip: x86/cache] " tip-bot2 for James Morse
2025-03-11 18:36 ` [PATCH v8:for-boris 04/30] x86/resctrl: Use schema type to determine how to parse schema values James Morse
2025-03-12 17:20 ` [tip: x86/cache] " tip-bot2 for James Morse
2025-03-11 18:36 ` [PATCH v8:for-boris 05/30] x86/resctrl: Use schema type to determine the schema format string James Morse
2025-03-12 17:20 ` [tip: x86/cache] " tip-bot2 for James Morse
2025-03-11 18:36 ` [PATCH v8:for-boris 06/30] x86/resctrl: Remove data_width and the tabular format James Morse
2025-03-12 17:20 ` [tip: x86/cache] " tip-bot2 for James Morse
2025-03-11 18:36 ` [PATCH v8:for-boris 07/30] x86/resctrl: Add max_bw to struct resctrl_membw James Morse
2025-03-12 17:20 ` [tip: x86/cache] " tip-bot2 for James Morse
2025-03-11 18:36 ` [PATCH v8:for-boris 08/30] x86/resctrl: Generate default_ctrl instead of sharing it James Morse
2025-03-12 4:46 ` Reinette Chatre
2025-03-12 17:20 ` [tip: x86/cache] " tip-bot2 for James Morse
2025-03-11 18:36 ` [PATCH v8:for-boris 09/30] x86/resctrl: Add helper for setting CPU default properties James Morse
2025-03-12 17:20 ` [tip: x86/cache] " tip-bot2 for James Morse
2025-03-11 18:36 ` [PATCH v8:for-boris 10/30] x86/resctrl: Remove rdtgroup from update_cpu_closid_rmid() James Morse
2025-03-12 17:20 ` [tip: x86/cache] " tip-bot2 for James Morse
2025-03-11 18:36 ` [PATCH v8:for-boris 11/30] x86/resctrl: Expose resctrl fs's init function to the rest of the kernel James Morse
2025-03-12 17:20 ` [tip: x86/cache] " tip-bot2 for James Morse
2025-03-11 18:36 ` [PATCH v8:for-boris 12/30] x86/resctrl: Move rdt_find_domain() to be visible to arch and fs code James Morse
2025-03-12 17:20 ` [tip: x86/cache] " tip-bot2 for James Morse
2025-03-11 18:36 ` [PATCH v8:for-boris 13/30] x86/resctrl: Move resctrl types to a separate header James Morse
2025-03-12 17:20 ` [tip: x86/cache] " tip-bot2 for James Morse
2025-03-11 18:36 ` [PATCH v8:for-boris 14/30] x86/resctrl: Add an arch helper to reset one resource James Morse
2025-03-12 17:20 ` [tip: x86/cache] " tip-bot2 for James Morse
2025-03-11 18:37 ` [PATCH v8:for-boris 15/30] x86/resctrl: Move monitor exit work to a resctrl exit call James Morse
2025-03-12 17:20 ` [tip: x86/cache] " tip-bot2 for James Morse
2025-03-11 18:37 ` [PATCH v8:for-boris 16/30] x86/resctrl: Move monitor init work to a resctrl init call James Morse
2025-03-12 17:20 ` [tip: x86/cache] " tip-bot2 for James Morse
2025-03-11 18:37 ` [PATCH v8:for-boris 17/30] x86/resctrl: Rewrite and move the for_each_*_rdt_resource() walkers James Morse
2025-03-12 17:20 ` [tip: x86/cache] " tip-bot2 for James Morse
2025-03-11 18:37 ` [PATCH v8:for-boris 18/30] x86/resctrl: Move the is_mbm_*_enabled() helpers to asm/resctrl.h James Morse
2025-03-12 17:20 ` [tip: x86/cache] " tip-bot2 for James Morse
2025-03-11 18:37 ` [PATCH v8:for-boris 19/30] x86/resctrl: Add resctrl_arch_is_evt_configurable() to abstract BMEC James Morse
2025-03-12 17:20 ` [tip: x86/cache] " tip-bot2 for James Morse
2025-03-11 18:37 ` [PATCH v8:for-boris 20/30] x86/resctrl: Change mon_event_config_{read,write}() to be arch helpers James Morse
2025-03-12 17:20 ` [tip: x86/cache] " tip-bot2 for James Morse
2025-03-11 18:37 ` [PATCH v8:for-boris 21/30] x86/resctrl: Move mba_mbps_default_event init to filesystem code James Morse
2025-03-12 17:20 ` [tip: x86/cache] " tip-bot2 for James Morse
2025-03-11 18:37 ` [PATCH v8:for-boris 22/30] x86/resctrl: Move mbm_cfg_mask to struct rdt_resource James Morse
2025-03-12 4:47 ` Reinette Chatre
2025-03-12 9:13 ` Borislav Petkov
2025-03-12 17:20 ` [tip: x86/cache] " tip-bot2 for James Morse
2025-03-11 18:37 ` [PATCH v8:for-boris 23/30] x86/resctrl: Add resctrl_arch_ prefix to pseudo lock functions James Morse
2025-03-12 17:20 ` [tip: x86/cache] " tip-bot2 for James Morse
2025-03-11 18:37 ` [PATCH v8:for-boris 24/30] x86/resctrl: Allow an architecture to disable pseudo lock James Morse
2025-03-12 17:20 ` tip-bot2 for James Morse [this message]
2025-03-11 18:37 ` [PATCH v8:for-boris 25/30] x86/resctrl: Make prefetch_disable_bits belong to the arch code James Morse
2025-03-12 17:20 ` [tip: x86/cache] " tip-bot2 for James Morse
2025-03-11 18:37 ` [PATCH v8:for-boris 26/30] x86/resctrl: Make resctrl_arch_pseudo_lock_fn() take a plr James Morse
2025-03-12 17:20 ` [tip: x86/cache] " tip-bot2 for James Morse
2025-03-11 18:37 ` [PATCH v8:for-boris 27/30] x86/resctrl: Move RFTYPE flags to be managed by resctrl James Morse
2025-03-12 17:20 ` [tip: x86/cache] " tip-bot2 for James Morse
2025-03-11 18:37 ` [PATCH v8:for-boris 28/30] x86/resctrl: Handle throttle_mode for SMBA resources James Morse
2025-03-12 17:20 ` [tip: x86/cache] " tip-bot2 for James Morse
2025-03-11 18:37 ` [PATCH v8:for-boris 29/30] x86/resctrl: Move get_config_index() to a header James Morse
2025-03-12 17:20 ` [tip: x86/cache] " tip-bot2 for James Morse
2025-03-11 18:37 ` [PATCH v8:for-boris 30/30] x86/resctrl: Move get_{mon,ctrl}_domain_from_cpu() to live with their callers James Morse
2025-03-12 17:20 ` [tip: x86/cache] " tip-bot2 for James Morse
2025-03-12 0:29 ` [PATCH v8:for-boris 00/30] x86/resctrl: Move the resctrl filesystem code to /fs/resctrl Moger, Babu
2025-03-12 1:53 ` Luck, Tony
2025-03-12 5:04 ` Reinette Chatre
2025-03-12 10:55 ` Shaopeng Tan (Fujitsu)
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=174180002199.14745.18052959552909230430.tip-bot2@tip-bot2 \
--to=tip-bot2@linutronix.de \
--cc=amitsinght@marvell.com \
--cc=babu.moger@amd.com \
--cc=bp@alien8.de \
--cc=carl@os.amperecomputing.com \
--cc=fenghuay@nvidia.com \
--cc=james.morse@arm.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-tip-commits@vger.kernel.org \
--cc=peternewman@google.com \
--cc=reinette.chatre@intel.com \
--cc=sdonthineni@nvidia.com \
--cc=tan.shaopeng@jp.fujitsu.com \
--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
all inboxes | Powered by JetHome®