From: Reinette Chatre <reinette.chatre@intel.com>
To: Babu Moger <babu.moger@amd.com>, <corbet@lwn.net>,
<fenghua.yu@intel.com>, <tglx@linutronix.de>, <mingo@redhat.com>,
<bp@alien8.de>, <dave.hansen@linux.intel.com>
Cc: <x86@kernel.org>, <hpa@zytor.com>, <paulmck@kernel.org>,
<rdunlap@infradead.org>, <tj@kernel.org>, <peterz@infradead.org>,
<yanjiewtw@gmail.com>, <kim.phillips@amd.com>,
<lukas.bulwahn@gmail.com>, <seanjc@google.com>,
<jmattson@google.com>, <leitao@debian.org>, <jpoimboe@kernel.org>,
<rick.p.edgecombe@intel.com>, <kirill.shutemov@linux.intel.com>,
<jithu.joseph@intel.com>, <kai.huang@intel.com>,
<kan.liang@linux.intel.com>, <daniel.sneddon@linux.intel.com>,
<pbonzini@redhat.com>, <sandipan.das@amd.com>,
<ilpo.jarvinen@linux.intel.com>, <peternewman@google.com>,
<maciej.wieczor-retman@intel.com>, <linux-doc@vger.kernel.org>,
<linux-kernel@vger.kernel.org>, <eranian@google.com>,
<james.morse@arm.com>
Subject: Re: [PATCH v8 23/25] x86/resctrl: Update assignments on event configuration changes
Date: Tue, 15 Oct 2024 20:40:29 -0700 [thread overview]
Message-ID: <03b278b5-6c15-4d09-9ab7-3317e84a409e@intel.com> (raw)
In-Reply-To: <715b84c29f4ec849a79698ad43218d4a486422d3.1728495588.git.babu.moger@amd.com>
Hi Babu,
On 10/9/24 10:39 AM, Babu Moger wrote:
> Users can modify the configuration of assignable events. Whenever the
> event configuration is updated, MBM assignments must be revised across
> all monitor groups within the impacted domains.
>
> Signed-off-by: Babu Moger <babu.moger@amd.com>
> ---
...
> ---
> arch/x86/kernel/cpu/resctrl/rdtgroup.c | 49 ++++++++++++++++++++++++++
> 1 file changed, 49 insertions(+)
>
> diff --git a/arch/x86/kernel/cpu/resctrl/rdtgroup.c b/arch/x86/kernel/cpu/resctrl/rdtgroup.c
> index f890d294e002..cf2e0ad0e4f4 100644
> --- a/arch/x86/kernel/cpu/resctrl/rdtgroup.c
> +++ b/arch/x86/kernel/cpu/resctrl/rdtgroup.c
> @@ -1669,6 +1669,7 @@ static int rdtgroup_size_show(struct kernfs_open_file *of,
> }
>
> struct mon_config_info {
> + struct rdt_resource *r;
> struct rdt_mon_domain *d;
> u32 evtid;
> u32 mon_config;
> @@ -1694,11 +1695,46 @@ u32 resctrl_arch_mon_event_config_get(struct rdt_mon_domain *d,
> return INVALID_CONFIG_VALUE;
> }
>
> +static void mbm_cntr_event_update(int cntr_id, unsigned int index, u32 val)
> +{
> + union l3_qos_abmc_cfg abmc_cfg = { 0 };
> + struct rdtgroup *prgrp, *crgrp;
> + int update = 0;
> +
> + /* Check if the cntr_id is associated to the event type updated */
> + list_for_each_entry(prgrp, &rdt_all_groups, rdtgroup_list) {
> + if (prgrp->mon.cntr_id[index] == cntr_id) {
> + abmc_cfg.split.bw_src = prgrp->mon.rmid;
> + update = 1;
> + goto out_update;
> + }
> + list_for_each_entry(crgrp, &prgrp->mon.crdtgrp_list, mon.crdtgrp_list) {
> + if (crgrp->mon.cntr_id[index] == cntr_id) {
> + abmc_cfg.split.bw_src = crgrp->mon.rmid;
> + update = 1;
> + goto out_update;
> + }
> + }
This code looks like it is better suited for resctrl fs. Note that
after the arch fs split struct rdtgroup is private to resctrl fs.
> + }
> +
> +out_update:
> + if (update) {
> + abmc_cfg.split.cfg_en = 1;
> + abmc_cfg.split.cntr_en = 1;
> + abmc_cfg.split.cntr_id = cntr_id;
> + abmc_cfg.split.bw_type = val;
> + wrmsrl(MSR_IA32_L3_QOS_ABMC_CFG, abmc_cfg.full);
> + }
> +}
> +
> void resctrl_arch_mon_event_config_set(void *info)
> {
> struct mon_config_info *mon_info = info;
> + struct rdt_mon_domain *d = mon_info->d;
> + struct rdt_resource *r = mon_info->r;
> struct rdt_hw_mon_domain *hw_dom;
> unsigned int index;
> + int cntr_id;
>
> index = mon_event_config_index_get(mon_info->evtid);
> if (index == INVALID_CONFIG_INDEX)
> @@ -1718,6 +1754,18 @@ void resctrl_arch_mon_event_config_set(void *info)
> hw_dom->mbm_local_cfg = mon_info->mon_config;
> break;
> }
> +
> + /*
> + * Update the assignment if the domain has the cntr_id's assigned
> + * to event type updated.
> + */
> + if (resctrl_arch_mbm_cntr_assign_enabled(r)) {
> + for (cntr_id = 0; cntr_id < r->mon.num_mbm_cntrs; cntr_id++) {
> + if (test_bit(cntr_id, d->mbm_cntr_map))
> + mbm_cntr_event_update(cntr_id, index,
> + mon_info->mon_config);
> + }
> + }
> }
>
> /**
> @@ -1805,6 +1853,7 @@ static void mbm_config_write_domain(struct rdt_resource *r,
> mon_info.d = d;
> mon_info.evtid = evtid;
> mon_info.mon_config = val;
> + mon_info.r = r;
>
> /*
> * Update MSR_IA32_EVT_CFG_BASE MSR on one of the CPUs in the
If I understand correctly, mbm_config_write_domain() paints itself into a corner by
calling arch code via IPI. As seen above it needs resctrl help to get all the information
and doing so from the arch helper is not appropriate.
How about calling a resctrl fs helper via IPI instead? For example:
resctrl_mon_event_config_set() {
resctrl_arch_mon_event_config_set();
if (resctrl_arch_mbm_cntr_assign_enabled(r)) {
for (cntr_id = 0; cntr_id < r->mon.num_mbm_cntrs; cntr_id++) {
if (test_bit(cntr_id, d->mbm_cntr_map)) {
/* determine rmid */
resctrl_arch_config_cntr()
}
}
}
}
mbm_config_write_domain() {
...
smp_call_function_any(&d->hdr.cpu_mask, resctrl_mon_event_config_set, ...)
...
}
By removing reset of arch state from resctrl_arch_config_cntr() this works well with the
resctrl_arch_reset_rmid_all() that is done from mbm_config_write_domain().
Even though resctrl_arch_config_cntr() contains a smp_call_function_any() it should
already be running on CPU in mask and thus should just run on local CPU.
Reinette
next prev parent reply other threads:[~2024-10-16 3:40 UTC|newest]
Thread overview: 124+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-10-09 17:39 [PATCH v8 00/25] x86/resctrl : Support AMD Assignable Bandwidth Monitoring Counters (ABMC) Babu Moger
2024-10-09 17:39 ` [PATCH v8 01/25] x86/cpufeatures: Add support for " Babu Moger
2024-10-09 17:39 ` [PATCH v8 02/25] x86/resctrl: Add ABMC feature in the command line options Babu Moger
2024-10-16 3:06 ` Reinette Chatre
2024-10-09 17:39 ` [PATCH v8 03/25] x86/resctrl: Consolidate monitoring related data from rdt_resource Babu Moger
2024-10-09 17:39 ` [PATCH v8 04/25] x86/resctrl: Detect Assignable Bandwidth Monitoring feature details Babu Moger
2024-10-16 3:06 ` Reinette Chatre
2024-10-09 17:39 ` [PATCH v8 05/25] x86/resctrl: Introduce resctrl_file_fflags_init() to initialize fflags Babu Moger
2024-10-09 17:39 ` [PATCH v8 06/25] x86/resctrl: Add support to enable/disable AMD ABMC feature Babu Moger
2024-10-11 18:14 ` Tony Luck
2024-10-11 20:53 ` Moger, Babu
2024-10-16 3:07 ` Reinette Chatre
2024-10-09 17:39 ` [PATCH v8 07/25] x86/resctrl: Introduce the interface to display monitor mode Babu Moger
2024-10-09 22:42 ` Tony Luck
2024-10-10 14:54 ` Moger, Babu
2024-10-10 15:07 ` Luck, Tony
2024-10-10 15:30 ` Moger, Babu
2024-10-10 16:02 ` Luck, Tony
2024-10-11 22:24 ` Reinette Chatre
2024-10-14 15:16 ` Moger, Babu
2024-10-16 3:12 ` Reinette Chatre
2024-10-16 15:57 ` Moger, Babu
2024-10-16 16:25 ` Reinette Chatre
2024-10-09 17:39 ` [PATCH v8 08/25] x86/resctrl: Introduce interface to display number of monitoring counters Babu Moger
2024-10-09 22:49 ` Tony Luck
2024-10-10 15:12 ` Moger, Babu
2024-10-10 15:58 ` Luck, Tony
2024-10-10 16:57 ` Moger, Babu
2024-10-10 17:08 ` Luck, Tony
2024-10-10 18:36 ` Moger, Babu
2024-10-10 18:57 ` Luck, Tony
2024-10-10 20:32 ` Moger, Babu
2024-10-11 17:44 ` Tony Luck
2024-10-11 20:49 ` Moger, Babu
2024-10-11 21:36 ` Tony Luck
2024-10-14 16:46 ` Reinette Chatre
2024-10-14 17:20 ` Moger, Babu
2024-10-14 17:49 ` Luck, Tony
2024-10-14 19:21 ` Moger, Babu
2024-10-14 19:51 ` Luck, Tony
2024-10-14 20:05 ` Reinette Chatre
2024-10-14 20:32 ` Moger, Babu
2024-10-24 17:29 ` Moger, Babu
2024-10-24 17:37 ` Luck, Tony
2024-10-25 20:31 ` Moger, Babu
2024-10-14 16:59 ` Reinette Chatre
2024-10-14 19:23 ` Moger, Babu
2024-10-14 16:25 ` Reinette Chatre
2024-10-14 17:46 ` Moger, Babu
2024-10-14 18:30 ` Reinette Chatre
2024-10-14 18:51 ` Moger, Babu
2024-10-09 17:39 ` [PATCH v8 09/25] x86/resctrl: Add __init attribute to dom_data_init() Babu Moger
2024-10-16 3:13 ` Reinette Chatre
2024-10-16 17:32 ` Moger, Babu
2024-10-16 18:55 ` Reinette Chatre
2024-10-16 20:18 ` Moger, Babu
2024-10-09 17:39 ` [PATCH v8 10/25] x86/resctrl: Introduce bitmap mbm_cntr_free_map to track assignable counters Babu Moger
2024-10-16 3:14 ` Reinette Chatre
2024-10-17 16:55 ` Moger, Babu
2024-10-09 17:39 ` [PATCH v8 11/25] x86/resctrl: Introduce mbm_total_cfg and mbm_local_cfg in struct rdt_hw_mon_domain Babu Moger
2024-10-16 3:15 ` Reinette Chatre
2024-10-09 17:39 ` [PATCH v8 12/25] x86/resctrl: Remove MSR reading of event configuration value Babu Moger
2024-10-16 3:16 ` Reinette Chatre
2024-10-17 17:59 ` Moger, Babu
2024-10-09 17:39 ` [PATCH v8 13/25] x86/resctrl: Introduce mbm_cntr_map to track assignable counters at domain Babu Moger
2024-10-16 3:19 ` Reinette Chatre
2024-10-09 17:39 ` [PATCH v8 14/25] x86/resctrl: Add data structures and definitions for ABMC assignment Babu Moger
2024-10-16 3:21 ` Reinette Chatre
2024-10-17 18:52 ` Moger, Babu
2024-10-17 21:13 ` Reinette Chatre
2024-10-17 23:02 ` Moger, Babu
2024-10-09 17:39 ` [PATCH v8 15/25] x86/resctrl: Introduce cntr_id in mongroup for assignments Babu Moger
2024-10-16 3:22 ` Reinette Chatre
2024-10-17 19:19 ` Moger, Babu
2024-10-09 17:39 ` [PATCH v8 16/25] x86/resctrl: Implement resctrl_arch_config_cntr() to assign a counter with ABMC Babu Moger
2024-10-16 3:23 ` Reinette Chatre
2024-10-17 22:44 ` Moger, Babu
2024-10-09 17:39 ` [PATCH v8 17/25] x86/resctrl: Add the interface to assign/update counter assignment Babu Moger
2024-10-16 3:25 ` Reinette Chatre
2024-10-17 22:56 ` Moger, Babu
2024-10-18 15:59 ` Reinette Chatre
2024-10-21 14:40 ` Moger, Babu
2024-10-21 15:31 ` Reinette Chatre
2024-10-22 1:15 ` Moger, Babu
2024-10-09 17:39 ` [PATCH v8 18/25] x86/resctrl: Add the interface to unassign a MBM counter Babu Moger
2024-10-16 3:29 ` Reinette Chatre
2024-10-17 23:11 ` Moger, Babu
2024-10-18 16:06 ` Reinette Chatre
2024-10-09 17:39 ` [PATCH v8 19/25] x86/resctrl: Auto assign/unassign counters when mbm_cntr_assign is enabled Babu Moger
2024-10-11 17:17 ` Tony Luck
2024-10-11 21:17 ` Moger, Babu
2024-10-11 21:33 ` Luck, Tony
2024-10-14 15:43 ` Moger, Babu
2024-10-14 16:18 ` Luck, Tony
2024-10-14 16:35 ` Moger, Babu
2024-10-15 2:39 ` Reinette Chatre
2024-10-15 15:43 ` Moger, Babu
2024-10-15 16:57 ` Luck, Tony
2024-10-15 17:18 ` Reinette Chatre
2024-10-15 20:42 ` Moger, Babu
2024-10-16 3:30 ` Reinette Chatre
2024-10-18 14:22 ` Moger, Babu
2024-10-09 17:39 ` [PATCH v8 20/25] x86/resctrl: Report "Unassigned" for MBM events in mbm_cntr_assign mode Babu Moger
2024-10-11 17:23 ` Tony Luck
2024-10-11 21:21 ` Moger, Babu
2024-10-16 3:31 ` Reinette Chatre
2024-10-18 14:31 ` Moger, Babu
2024-10-09 17:39 ` [PATCH v8 21/25] x86/resctrl: Introduce the interface to switch between monitor modes Babu Moger
2024-10-16 3:36 ` Reinette Chatre
2024-10-18 15:13 ` Moger, Babu
2024-10-09 17:39 ` [PATCH v8 22/25] x86/resctrl: Configure mbm_cntr_assign mode if supported Babu Moger
2024-10-09 17:39 ` [PATCH v8 23/25] x86/resctrl: Update assignments on event configuration changes Babu Moger
2024-10-16 3:40 ` Reinette Chatre [this message]
2024-10-18 15:50 ` Moger, Babu
2024-10-09 17:39 ` [PATCH v8 24/25] x86/resctrl: Introduce interface to list assignment states of all the groups Babu Moger
2024-10-16 3:40 ` Reinette Chatre
2024-10-21 14:56 ` Moger, Babu
2024-10-09 17:39 ` [PATCH v8 25/25] x86/resctrl: Introduce interface to modify assignment states of " Babu Moger
2024-10-16 3:43 ` Reinette Chatre
2024-10-21 17:04 ` Moger, Babu
2024-10-21 17:20 ` Reinette Chatre
2024-10-22 1:12 ` Moger, Babu
2024-10-16 3:05 ` [PATCH v8 00/25] x86/resctrl : Support AMD Assignable Bandwidth Monitoring Counters (ABMC) Reinette Chatre
2024-10-21 17:09 ` 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=03b278b5-6c15-4d09-9ab7-3317e84a409e@intel.com \
--to=reinette.chatre@intel.com \
--cc=babu.moger@amd.com \
--cc=bp@alien8.de \
--cc=corbet@lwn.net \
--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=ilpo.jarvinen@linux.intel.com \
--cc=james.morse@arm.com \
--cc=jithu.joseph@intel.com \
--cc=jmattson@google.com \
--cc=jpoimboe@kernel.org \
--cc=kai.huang@intel.com \
--cc=kan.liang@linux.intel.com \
--cc=kim.phillips@amd.com \
--cc=kirill.shutemov@linux.intel.com \
--cc=leitao@debian.org \
--cc=linux-doc@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=lukas.bulwahn@gmail.com \
--cc=maciej.wieczor-retman@intel.com \
--cc=mingo@redhat.com \
--cc=paulmck@kernel.org \
--cc=pbonzini@redhat.com \
--cc=peternewman@google.com \
--cc=peterz@infradead.org \
--cc=rdunlap@infradead.org \
--cc=rick.p.edgecombe@intel.com \
--cc=sandipan.das@amd.com \
--cc=seanjc@google.com \
--cc=tglx@linutronix.de \
--cc=tj@kernel.org \
--cc=x86@kernel.org \
--cc=yanjiewtw@gmail.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).