From: Reinette Chatre <reinette.chatre@intel.com>
To: <babu.moger@amd.com>, <corbet@lwn.net>, <tglx@linutronix.de>,
<mingo@redhat.com>, <bp@alien8.de>
Cc: <fenghua.yu@intel.com>, <dave.hansen@linux.intel.com>,
<x86@kernel.org>, <hpa@zytor.com>, <paulmck@kernel.org>,
<akpm@linux-foundation.org>, <quic_neeraju@quicinc.com>,
<rdunlap@infradead.org>, <damien.lemoal@opensource.wdc.com>,
<songmuchun@bytedance.com>, <peterz@infradead.org>,
<jpoimboe@kernel.org>, <pbonzini@redhat.com>,
<chang.seok.bae@intel.com>, <pawan.kumar.gupta@linux.intel.com>,
<jmattson@google.com>, <daniel.sneddon@linux.intel.com>,
<sandipan.das@amd.com>, <tony.luck@intel.com>,
<james.morse@arm.com>, <linux-doc@vger.kernel.org>,
<linux-kernel@vger.kernel.org>, <bagasdotme@gmail.com>,
<eranian@google.com>, <christophe.leroy@csgroup.eu>,
<jarkko@kernel.org>, <adrian.hunter@intel.com>,
<quic_jiles@quicinc.com>, <peternewman@google.com>
Subject: Re: [PATCH v10 11/13] x86/resctrl: Add interface to write mbm_total_bytes_config
Date: Thu, 5 Jan 2023 09:49:34 -0800 [thread overview]
Message-ID: <d78e4757-fb74-9d80-da71-9bfe3de9d059@intel.com> (raw)
In-Reply-To: <d92fa6b3-227c-32f7-87c3-c267e052a824@amd.com>
Hi Babu,
On 1/5/2023 8:04 AM, Moger, Babu wrote:
> Hi Reinette,
>
> On 1/4/23 18:29, Reinette Chatre wrote:
>> Hi Babu,
>>
>> On 12/22/2022 3:31 PM, Babu Moger wrote:
>>
>> ...
>>
>>> +static ssize_t mbm_total_bytes_config_write(struct kernfs_open_file *of,
>>> + char *buf, size_t nbytes,
>>> + loff_t off)
>>> +{
>>> + struct rdt_resource *r = of->kn->parent->priv;
>>> + int ret;
>>> +
>>> + /* Valid input requires a trailing newline */
>>> + if (nbytes == 0 || buf[nbytes - 1] != '\n')
>>> + return -EINVAL;
>>> +
>>> + cpus_read_lock();
>> Could you please elaborate why this lock is needed here as
>> well as in the following patch?
>
> Holding the cpus_read_lock() make sure that this cpu is online while doing
> this operation. This code eventually sends an IPI to write the MSR on one
> of the CPUs using the cpumasks. My understanding is to make sure cpumask
> is stable while handling this write. Same thing is done in
This flow uses smp_call_function_any() to send the IPI and update the MSR.
smp_call_function_any() itself disables preemption to protect against
CPUs going offline while attempting the update.
The domain's cpumask itself cannot change during this flow because rdtgroup_mutex
is held the entire time. This mutex is needed by the resctrl CPU online/offline
callbacks that may update the mask.
> rdtgroup_schemata_write.
Yes, rdtgroup_schemata_write uses this but please take a look at _why_ it
is using it. This was something added later as part of the pseudo-locking
code. Please see the commit message for the details that explain the usage:
80b71c340f17 ("x86/intel_rdt: Ensure a CPU remains online for the region's pseudo-locking sequence")
Could you please provide more detail if you still find that this lock is needed?
If you prefer to refer to existing code flows there are other examples
in resctrl where the domain's CPU mask is used to read/write registers without the
hotplug lock that you can use for reference:
* Even in this patch series itself, reading of the config.
* When creating a new resource group (the mkdir flow) the MSRs are written with an
initial config without hotplug lock.
* When writing to the tasks file the CPU on which task may be running receives IPI
without hotplug lock held the entire time.
* See resctrl flow of monitoring data reads.
Alternatively you may want to take a closer look at where the hotplug lock _is_ held in
resctrl to consider if those usages match this work. Understanding
why the hotplug lock is currently used should be clear with the commits associated
with their introduction because there has been a few bugs surrounding this.
Reinette
next prev parent reply other threads:[~2023-01-05 17:49 UTC|newest]
Thread overview: 26+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-12-22 23:31 [PATCH v10 00/13] x86/resctrl: Support for AMD QoS new features Babu Moger
2022-12-22 23:31 ` [PATCH v10 01/13] x86/resctrl: Replace smp_call_function_many() with on_each_cpu_mask() Babu Moger
2023-01-05 0:28 ` Reinette Chatre
2023-01-05 15:48 ` Moger, Babu
2022-12-22 23:31 ` [PATCH v10 02/13] x86/cpufeatures: Add Slow Memory Bandwidth Allocation feature flag Babu Moger
2022-12-22 23:31 ` [PATCH v10 03/13] x86/resctrl: Add a new resource type RDT_RESOURCE_SMBA Babu Moger
2022-12-22 23:31 ` [PATCH v10 04/13] x86/cpufeatures: Add Bandwidth Monitoring Event Configuration feature flag Babu Moger
2022-12-22 23:31 ` [PATCH v10 05/13] x86/resctrl: Include new features in command line options Babu Moger
2022-12-22 23:31 ` [PATCH v10 06/13] x86/resctrl: Detect and configure Slow Memory Bandwidth Allocation Babu Moger
2022-12-22 23:31 ` [PATCH v10 07/13] x86/resctrl: Add __init attribute to rdt_get_mon_l3_config() Babu Moger
2023-01-05 0:28 ` Reinette Chatre
2023-01-05 15:48 ` Moger, Babu
2022-12-22 23:31 ` [PATCH v10 08/13] x86/resctrl: Support monitor configuration Babu Moger
2022-12-22 23:31 ` [PATCH v10 09/13] x86/resctrl: Add interface to read mbm_total_bytes_config Babu Moger
2023-01-05 0:29 ` Reinette Chatre
2023-01-05 15:49 ` Moger, Babu
2022-12-22 23:31 ` [PATCH v10 10/13] x86/resctrl: Add interface to read mbm_local_bytes_config Babu Moger
2022-12-22 23:31 ` [PATCH v10 11/13] x86/resctrl: Add interface to write mbm_total_bytes_config Babu Moger
2023-01-05 0:29 ` Reinette Chatre
2023-01-05 16:04 ` Moger, Babu
2023-01-05 17:49 ` Reinette Chatre [this message]
2023-01-05 19:59 ` Moger, Babu
2022-12-22 23:31 ` [PATCH v10 12/13] x86/resctrl: Add interface to write mbm_local_bytes_config Babu Moger
2022-12-22 23:31 ` [PATCH v10 13/13] Documentation/x86: Update resctrl.rst for new features Babu Moger
2023-01-05 0:30 ` Reinette Chatre
2023-01-05 16:06 ` Moger, Babu
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=d78e4757-fb74-9d80-da71-9bfe3de9d059@intel.com \
--to=reinette.chatre@intel.com \
--cc=adrian.hunter@intel.com \
--cc=akpm@linux-foundation.org \
--cc=babu.moger@amd.com \
--cc=bagasdotme@gmail.com \
--cc=bp@alien8.de \
--cc=chang.seok.bae@intel.com \
--cc=christophe.leroy@csgroup.eu \
--cc=corbet@lwn.net \
--cc=damien.lemoal@opensource.wdc.com \
--cc=daniel.sneddon@linux.intel.com \
--cc=dave.hansen@linux.intel.com \
--cc=eranian@google.com \
--cc=fenghua.yu@intel.com \
--cc=hpa@zytor.com \
--cc=james.morse@arm.com \
--cc=jarkko@kernel.org \
--cc=jmattson@google.com \
--cc=jpoimboe@kernel.org \
--cc=linux-doc@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=mingo@redhat.com \
--cc=paulmck@kernel.org \
--cc=pawan.kumar.gupta@linux.intel.com \
--cc=pbonzini@redhat.com \
--cc=peternewman@google.com \
--cc=peterz@infradead.org \
--cc=quic_jiles@quicinc.com \
--cc=quic_neeraju@quicinc.com \
--cc=rdunlap@infradead.org \
--cc=sandipan.das@amd.com \
--cc=songmuchun@bytedance.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