From: Reinette Chatre <reinette.chatre@intel.com>
To: Tony Luck <tony.luck@intel.com>, Fenghua Yu <fenghuay@nvidia.com>,
"Maciej Wieczor-Retman" <maciej.wieczor-retman@intel.com>,
Peter Newman <peternewman@google.com>,
James Morse <james.morse@arm.com>,
Babu Moger <babu.moger@amd.com>,
Drew Fustini <dfustini@baylibre.com>,
Dave Martin <Dave.Martin@arm.com>, Chen Yu <yu.c.chen@intel.com>,
David E Box <david.e.box@intel.com>, <x86@kernel.org>
Cc: Christoph Hellwig <hch@infradead.org>,
<linux-kernel@vger.kernel.org>, <patches@lists.linux.dev>
Subject: Re: [PATCH v10 12/17] x86/resctrl: Prepare to handle nested mount requests
Date: Mon, 17 Aug 2026 18:01:32 -0700 [thread overview]
Message-ID: <8ec67bca-1f21-4489-8601-3dfd91aa5b2a@intel.com> (raw)
In-Reply-To: <20260729172752.11561-13-tony.luck@intel.com>
Hi Tony,
On 7/29/26 10:27 AM, Tony Luck wrote:
> There is no upper level serialization of mount(2) system calls.
>
> mount/unmount operations can happen in parallel with CPU hotplug events
> that need to add/remove files and directories when domains are added or
> removed.
>
> Use cpus_read_lock() plus mutex_lock(&domain_list_lock) to protect
> architecture code from races.
Please describe how these locks are used to achieve this protection (more below).
>
> Signed-off-by: Tony Luck <tony.luck@intel.com>
> ---
> v10:
> New patch
>
> include/linux/resctrl.h | 2 +-
> arch/x86/kernel/cpu/resctrl/core.c | 40 ++++++++++++++++++++++++------
> drivers/resctrl/mpam_resctrl.c | 3 ++-
> 3 files changed, 35 insertions(+), 10 deletions(-)
>
> diff --git a/include/linux/resctrl.h b/include/linux/resctrl.h
> index 568a650c0224..65245f2fdad0 100644
> --- a/include/linux/resctrl.h
> +++ b/include/linux/resctrl.h
> @@ -579,7 +579,7 @@ void resctrl_offline_cpu(unsigned int cpu);
> * Architecture hook called at beginning of first file system mount attempt.
> * No locks are held.
> */
> -void resctrl_arch_pre_mount(void);
> +int resctrl_arch_pre_mount(void);
There is no mention in changelog why this change is needed.
>
> /*
> * Architecture hook called when mount fails, or on unmount.
> diff --git a/arch/x86/kernel/cpu/resctrl/core.c b/arch/x86/kernel/cpu/resctrl/core.c
> index e335a143f3e5..906aa4dfc363 100644
> --- a/arch/x86/kernel/cpu/resctrl/core.c
> +++ b/arch/x86/kernel/cpu/resctrl/core.c
> @@ -16,7 +16,6 @@
>
> #define pr_fmt(fmt) "resctrl: " fmt
>
> -#include <linux/cleanup.h>
> #include <linux/cpu.h>
> #include <linux/slab.h>
> #include <linux/err.h>
> @@ -807,25 +806,47 @@ static int resctrl_arch_offline_cpu(unsigned int cpu)
> return 0;
> }
>
> -void resctrl_arch_pre_mount(void)
> +/*
> + * Linux provides no synchronization for mount(2) system calls.
> + * resctrl_arch_pre_mount() and resctrl_arch_unmount() are called
> + * with no locks held. Mount/unmount may also race with CPU hotplug
> + * events that add/remove per-domain files and directories.
> + *
> + * Use cpus_read_lock() plus domain_list_lock to protect operations.
"protect operations"? Which operations? I expect it to protect concurrent
changes to data expected to be protected by the lock. domain_list_lock is
understood to protect the architecture managed domain list.
It looks to me as though what this actually does is add new architecture
state, arch_mounted, and let this new state fall under protection of
domain_list_lock to protect it from concurrent changes. The reason why
cpus_read_lock() is needed is the locking order requires it.
I find "protect operations" to be too vague description to use as motivation
and documentation of locking behavior.
For completeness I expect arch_mounted to be added to the comments
above the original definition of domain_list_lock to make it clear that the
lock now has expanded scope.
Reinette
next prev parent reply other threads:[~2026-08-18 1:01 UTC|newest]
Thread overview: 32+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-07-29 17:27 [PATCH v10 00/17] Allow AET to use PMT as loadable module Tony Luck
2026-07-29 17:27 ` [PATCH v10 01/17] x86/resctrl: Fix enumeration of number of supported RMIDs Tony Luck
2026-08-13 23:55 ` Reinette Chatre
2026-08-14 16:28 ` Luck, Tony
2026-07-29 17:27 ` [PATCH v10 02/17] x86/resctrl: Require 64-bit x86 for resctrl support Tony Luck
2026-08-18 0:50 ` Reinette Chatre
2026-07-29 17:27 ` [PATCH v10 03/17] fs/resctrl: Remove redundant calls to resctrl_arch_mon_capable() Tony Luck
2026-08-18 0:50 ` Reinette Chatre
2026-07-29 17:27 ` [PATCH v10 04/17] x86/resctrl: Honor rdt=perf option to force enable AET perf events Tony Luck
2026-08-18 0:51 ` Reinette Chatre
2026-07-29 17:27 ` [PATCH v10 05/17] fs/resctrl: Add interface to disable a monitor event Tony Luck
2026-08-18 0:51 ` Reinette Chatre
2026-07-29 17:27 ` [PATCH v10 06/17] x86/resctrl: Drop global 'rdt_mon_capable' flag Tony Luck
2026-08-18 0:54 ` Reinette Chatre
2026-07-29 17:27 ` [PATCH v10 07/17] arm,x86,fs/resctrl: Handle change in number of RMIDs on each mount Tony Luck
2026-08-18 0:56 ` Reinette Chatre
2026-07-29 17:27 ` [PATCH v10 08/17] x86/resctrl: Enforce system RMID limit on AET event groups Tony Luck
2026-08-18 0:58 ` Reinette Chatre
2026-07-29 17:27 ` [PATCH v10 09/17] x86/resctrl: Add PMT registration API for AET enumeration callbacks Tony Luck
2026-08-18 0:59 ` Reinette Chatre
2026-07-29 17:27 ` [PATCH v10 10/17] platform/x86/intel/pmt: Register enumeration functions with resctrl Tony Luck
2026-07-29 17:27 ` [PATCH v10 11/17] arm,x86/resctrl: Resolve INTEL_PMT_TELEMETRY symbols at runtime Tony Luck
2026-08-18 0:59 ` Reinette Chatre
2026-07-29 17:27 ` [PATCH v10 12/17] x86/resctrl: Prepare to handle nested mount requests Tony Luck
2026-08-18 1:01 ` Reinette Chatre [this message]
2026-07-29 17:27 ` [PATCH v10 13/17] fs/resctrl: Call architecture hooks for every mount/unmount Tony Luck
2026-08-18 1:02 ` Reinette Chatre
2026-07-29 17:27 ` [PATCH v10 14/17] x86/resctrl: Export interface to report telemetry unbind/remove Tony Luck
2026-07-29 17:27 ` [PATCH v10 15/17] platform/x86/intel/pmt: Inform resctrl when MMIO maps are being removed Tony Luck
2026-07-29 17:27 ` [PATCH v10 16/17] x86/resctrl: Simplify Kconfig options for resctrl Tony Luck
2026-07-29 17:27 ` [PATCH v10 17/17] Documentation/filesystems/resctrl: Document telemetry mount timing caveat Tony Luck
2026-07-29 20:11 ` [PATCH v10 00/17] Allow AET to use PMT as loadable module Luck, Tony
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=8ec67bca-1f21-4489-8601-3dfd91aa5b2a@intel.com \
--to=reinette.chatre@intel.com \
--cc=Dave.Martin@arm.com \
--cc=babu.moger@amd.com \
--cc=david.e.box@intel.com \
--cc=dfustini@baylibre.com \
--cc=fenghuay@nvidia.com \
--cc=hch@infradead.org \
--cc=james.morse@arm.com \
--cc=linux-kernel@vger.kernel.org \
--cc=maciej.wieczor-retman@intel.com \
--cc=patches@lists.linux.dev \
--cc=peternewman@google.com \
--cc=tony.luck@intel.com \
--cc=x86@kernel.org \
--cc=yu.c.chen@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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.