From: "Moger, Babu" <babu.moger@amd.com>
To: Reinette Chatre <reinette.chatre@intel.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 v7 09/24] x86/resctrl: Introduce bitmap mbm_cntr_free_map to track assignable counters
Date: Mon, 23 Sep 2024 13:33:10 -0500 [thread overview]
Message-ID: <c333ce4d-3e4a-45b1-87b4-42a4d35d0ad0@amd.com> (raw)
In-Reply-To: <50084b31-49e4-41c7-be1e-24773d03d5d3@intel.com>
Hi Reinette,
On 9/19/24 11:42, Reinette Chatre wrote:
> Hi Babu,
>
> On 9/4/24 3:21 PM, Babu Moger wrote:
>> Hardware provides a set of counters when mbm_cntr_assignable feature is
>> supported. These counters are used for assigning the events in resctrl
>> a group when the feature is enabled. The kernel must manage and track the
>
> The second sentence ("These counters ...") is difficult to parse.
How about?
Counters are used for assigning the events in resctrl group.
>
>> number of available counters.
>
> "The kernel must manage and track the number of available counters." ->
> "The kernel must manage and track the available counters." ?
Sure.
>
>>
>> Introduce mbm_cntr_free_map bitmap to track available counters and set
>> of routines to allocate and free the counters.
>>
>> Signed-off-by: Babu Moger <babu.moger@amd.com>
>> ---
>
> ...
>
>> diff --git a/arch/x86/kernel/cpu/resctrl/monitor.c b/arch/x86/kernel/cpu/resctrl/monitor.c
>> index e3e71843401a..f98cc5b9bebc 100644
>> --- a/arch/x86/kernel/cpu/resctrl/monitor.c
>> +++ b/arch/x86/kernel/cpu/resctrl/monitor.c
>> @@ -1175,6 +1175,30 @@ static __init int snc_get_config(void)
>> return ret;
>> }
>>
>> +/*
>> + * Counter bitmap for tracking the available counters.
>> + * 'mbm_cntr_assign' mode provides set of hardware counters for assigning
>> + * RMID, event pair. Each RMID and event pair takes one hardware counter.
>
> (soft-ABMC may need to edit this comment)
Agree..
>
>> + * Kernel needs to keep track of the number of available counters.
>
> Last sentence seems to be duplicate of the first?
Will remove it.
>
>> + */
>> +static int mbm_cntrs_init(struct rdt_resource *r)
>
> Needs __init?
Did you mean to merge this with dom_data_init and don't have to have a
separate function. Please clarify.
>
>> +{
>> + if (r->mon.mbm_cntr_assignable) {
>> + r->mon.mbm_cntr_free_map = bitmap_zalloc(r->mon.num_mbm_cntrs,
>> + GFP_KERNEL);
>> + if (!r->mon.mbm_cntr_free_map)
>> + return -ENOMEM;
>> + bitmap_fill(r->mon.mbm_cntr_free_map, r->mon.num_mbm_cntrs);
>> + }
>> + return 0;
>> +}
>> +
>> +static void __exit mbm_cntrs_exit(struct rdt_resource *r)
>> +{
>> + if (r->mon.mbm_cntr_assignable)
>> + bitmap_free(r->mon.mbm_cntr_free_map);
>> +}
>> +
>> int __init rdt_get_mon_l3_config(struct rdt_resource *r)
>> {
>> unsigned int mbm_offset = boot_cpu_data.x86_cache_mbm_width_offset;
>> @@ -1240,6 +1264,10 @@ int __init rdt_get_mon_l3_config(struct rdt_resource *r)
>> }
>> }
>>
>> + ret = mbm_cntrs_init(r);
>> + if (ret)
>> + return ret;
>
> Missing cleanup of earlier allocation on error path here. Even so, this does not
> seem to integrate with existing dom_data_init() wrt ordering and locking. Could
> this be more fitting when merged with dom_data_init() (after moving it)?
Sure. Will do.
>
>> +
>> l3_mon_evt_init(r);
>>
>> r->mon_capable = true;
>> @@ -1247,9 +1275,10 @@ int __init rdt_get_mon_l3_config(struct rdt_resource *r)
>> return 0;
>> }
>>
>> -void __exit rdt_put_mon_l3_config(void)
>> +void __exit rdt_put_mon_l3_config(struct rdt_resource *r)
>> {
>> dom_data_exit();
>> + mbm_cntrs_exit(r);
>
> There is a mismatch wrt locking used in dom_data_exit() and mbm_cntrs_exit() that is
> sure to cause confusion and difficulty in the MPAM transition.
Will merge this with dom_data_exit.
>
>> }
>>
>> void __init intel_rdt_mbm_apply_quirk(void)
>> diff --git a/arch/x86/kernel/cpu/resctrl/rdtgroup.c b/arch/x86/kernel/cpu/resctrl/rdtgroup.c
>> index ba737890d5c2..a51992984832 100644
>> --- a/arch/x86/kernel/cpu/resctrl/rdtgroup.c
>> +++ b/arch/x86/kernel/cpu/resctrl/rdtgroup.c
>> @@ -185,6 +185,25 @@ bool closid_allocated(unsigned int closid)
>> return !test_bit(closid, &closid_free_map);
>> }
>>
>> +int mbm_cntr_alloc(struct rdt_resource *r)
>> +{
>> + int cntr_id;
>> +
>> + cntr_id = find_first_bit(r->mon.mbm_cntr_free_map,
>> + r->mon.num_mbm_cntrs);
>> + if (cntr_id >= r->mon.num_mbm_cntrs)
>> + return -ENOSPC;
>> +
>> + __clear_bit(cntr_id, r->mon.mbm_cntr_free_map);
>> +
>> + return cntr_id;
>> +}
>> +
>> +void mbm_cntr_free(struct rdt_resource *r, u32 cntr_id)
>> +{
>> + __set_bit(cntr_id, r->mon.mbm_cntr_free_map);
>> +}
>> +
>> /**
>> * rdtgroup_mode_by_closid - Return mode of resource group with closid
>> * @closid: closid if the resource group
>> diff --git a/include/linux/resctrl.h b/include/linux/resctrl.h
>> index f11d6fdfd977..aab22ff8e0c1 100644
>> --- a/include/linux/resctrl.h
>> +++ b/include/linux/resctrl.h
>> @@ -187,12 +187,14 @@ enum resctrl_scope {
>> * @num_rmid: Number of RMIDs available
>> * @num_mbm_cntrs: Number of assignable monitoring counters
>> * @mbm_cntr_assignable:Is system capable of supporting monitor assignment?
>> + * @mbm_cntr_free_map: bitmap of number of assignable MBM counters
>
> The "number of" is not clear ... it seems to indicate tracking a count? How about
> just "bitmap of free MBM counters"
Sure.
>
>> * @evt_list: List of monitoring events
>> */
>> struct resctrl_mon {
>> int num_rmid;
>> int num_mbm_cntrs;
>> bool mbm_cntr_assignable;
>> + unsigned long *mbm_cntr_free_map;
>> struct list_head evt_list;
>> };
>>
>
> Reinette
>
--
Thanks
Babu Moger
next prev parent reply other threads:[~2024-09-23 18:33 UTC|newest]
Thread overview: 96+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-09-04 22:21 [PATCH v7 00/24] x86/resctrl : Support AMD Assignable Bandwidth Monitoring Counters (ABMC) Babu Moger
2024-09-04 22:21 ` [PATCH v7 01/24] x86/cpufeatures: Add support for " Babu Moger
2024-09-04 22:21 ` [PATCH v7 02/24] x86/resctrl: Add ABMC feature in the command line options Babu Moger
2024-09-19 16:00 ` Reinette Chatre
2024-09-23 14:21 ` Moger, Babu
2024-09-04 22:21 ` [PATCH v7 03/24] x86/resctrl: Consolidate monitoring related data from rdt_resource Babu Moger
2024-09-19 16:03 ` Reinette Chatre
2024-09-04 22:21 ` [PATCH v7 04/24] x86/resctrl: Detect Assignable Bandwidth Monitoring feature details Babu Moger
2024-09-19 16:16 ` Reinette Chatre
2024-09-23 14:37 ` Moger, Babu
2024-09-04 22:21 ` [PATCH v7 05/24] x86/resctrl: Introduce resctrl_file_fflags_init() to initialize fflags Babu Moger
2024-09-04 22:21 ` [PATCH v7 06/24] x86/resctrl: Add support to enable/disable AMD ABMC feature Babu Moger
2024-09-19 16:22 ` Reinette Chatre
2024-09-23 15:30 ` Moger, Babu
2024-09-04 22:21 ` [PATCH v7 07/24] x86/resctrl: Introduce the interface to display monitor mode Babu Moger
2024-09-19 16:28 ` Reinette Chatre
2024-09-23 16:01 ` Moger, Babu
2024-09-04 22:21 ` [PATCH v7 08/24] x86/resctrl: Introduce interface to display number of monitoring counters Babu Moger
2024-09-19 16:32 ` Reinette Chatre
2024-09-23 16:23 ` Moger, Babu
2024-09-04 22:21 ` [PATCH v7 09/24] x86/resctrl: Introduce bitmap mbm_cntr_free_map to track assignable counters Babu Moger
2024-09-19 16:42 ` Reinette Chatre
2024-09-23 18:33 ` Moger, Babu [this message]
2024-09-23 22:28 ` Reinette Chatre
2024-09-24 13:58 ` Moger, Babu
2024-09-24 16:25 ` Peter Newman
2024-09-24 17:01 ` Moger, Babu
2024-09-04 22:21 ` [PATCH v7 10/24] x86/resctrl: Introduce mbm_total_cfg and mbm_local_cfg in struct rdt_hw_mon_domain Babu Moger
2024-09-19 16:51 ` Reinette Chatre
2024-09-23 18:43 ` Moger, Babu
2024-09-04 22:21 ` [PATCH v7 11/24] x86/resctrl: Remove MSR reading of event configuration value Babu Moger
2024-09-19 16:55 ` Reinette Chatre
2024-09-23 18:45 ` Moger, Babu
2024-09-04 22:21 ` [PATCH v7 12/24] x86/resctrl: Introduce mbm_cntr_map to track counters at domain Babu Moger
2024-09-04 22:21 ` [PATCH v7 13/24] x86/resctrl: Add data structures and definitions for ABMC assignment Babu Moger
2024-09-19 17:08 ` Reinette Chatre
2024-09-23 20:21 ` Moger, Babu
2024-09-23 22:30 ` Reinette Chatre
2024-09-24 14:51 ` Moger, Babu
2024-09-04 22:21 ` [PATCH v7 14/24] x86/resctrl: Introduce cntr_id in mongroup for assignments Babu Moger
2024-09-04 22:21 ` [PATCH v7 15/24] x86/resctrl: Implement resctrl_arch_assign_cntr to assign a counter with ABMC Babu Moger
2024-09-19 17:13 ` Reinette Chatre
2024-09-23 21:03 ` Moger, Babu
2024-09-23 22:29 ` Reinette Chatre
2024-09-24 14:07 ` Moger, Babu
2024-09-04 22:21 ` [PATCH v7 16/24] x86/resctrl: Add the interface to assign/update counter assignment Babu Moger
2024-09-19 17:20 ` Reinette Chatre
2024-09-26 16:28 ` Moger, Babu
2024-09-26 16:46 ` Reinette Chatre
2024-09-26 16:59 ` Moger, Babu
2024-09-27 1:48 ` Reinette Chatre
2024-09-04 22:21 ` [PATCH v7 17/24] x86/resctrl: Add the interface to unassign a MBM counter Babu Moger
2024-09-19 17:26 ` Reinette Chatre
2024-09-26 16:56 ` Moger, Babu
2024-09-04 22:21 ` [PATCH v7 18/24] x86/resctrl: Auto Assign/unassign counters when mbm_cntr_assign is enabled Babu Moger
2024-09-19 17:29 ` Reinette Chatre
2024-09-26 18:48 ` Moger, Babu
2024-09-04 22:21 ` [PATCH v7 19/24] x86/resctrl: Report "Unassigned" for MBM events in mbm_cntr_assign mode Babu Moger
2024-09-19 17:31 ` Reinette Chatre
2024-09-26 19:16 ` Moger, Babu
2024-09-27 1:50 ` Reinette Chatre
2024-09-27 13:40 ` Moger, Babu
2024-09-04 22:21 ` [PATCH v7 20/24] x86/resctrl: Introduce the interface to switch between monitor modes Babu Moger
2024-09-19 17:38 ` Reinette Chatre
2024-09-26 19:39 ` Moger, Babu
2024-09-27 1:51 ` Reinette Chatre
2024-09-27 13:26 ` Moger, Babu
2024-09-27 15:07 ` Reinette Chatre
2024-09-04 22:21 ` [PATCH v7 21/24] x86/resctrl: Configure mbm_cntr_assign mode if supported Babu Moger
2024-09-19 17:43 ` Reinette Chatre
2024-09-27 14:37 ` Moger, Babu
2024-09-04 22:21 ` [PATCH v7 22/24] x86/resctrl: Update assignments on event configuration changes Babu Moger
2024-09-19 17:45 ` Reinette Chatre
2024-09-27 16:22 ` Moger, Babu
2024-10-02 18:20 ` Reinette Chatre
2024-10-04 0:51 ` Moger, Babu
2024-10-04 2:17 ` Reinette Chatre
2024-10-04 15:02 ` Moger, Babu
2024-10-04 15:53 ` Reinette Chatre
2024-10-08 0:01 ` Moger, Babu
2024-09-04 22:21 ` [PATCH v7 23/24] x86/resctrl: Introduce interface to list assignment states of all the groups Babu Moger
2024-09-19 17:53 ` Reinette Chatre
2024-09-27 17:06 ` Moger, Babu
2024-09-04 22:21 ` [PATCH v7 24/24] x86/resctrl: Introduce interface to modify assignment states of " Babu Moger
2024-09-19 17:59 ` Reinette Chatre
2024-09-27 17:47 ` Moger, Babu
2024-10-02 18:19 ` Reinette Chatre
2024-10-04 1:11 ` Moger, Babu
2024-10-04 2:17 ` Reinette Chatre
2024-10-04 16:38 ` Moger, Babu
2024-10-04 16:52 ` Reinette Chatre
2024-10-04 19:36 ` Moger, Babu
2024-10-04 21:09 ` Reinette Chatre
2024-10-05 0:23 ` Moger, Babu
2024-09-19 18:00 ` [PATCH v7 00/24] x86/resctrl : Support AMD Assignable Bandwidth Monitoring Counters (ABMC) Reinette Chatre
2024-09-27 18:11 ` 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=c333ce4d-3e4a-45b1-87b4-42a4d35d0ad0@amd.com \
--to=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=reinette.chatre@intel.com \
--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
all inboxes | Powered by JetHome®