All of lore.kernel.org
 help / color / mirror / Atom feed
From: Reinette Chatre <reinette.chatre@intel.com>
To: "Moger, Babu" <Babu.Moger@amd.com>,
	Peter Newman <peternewman@google.com>
Cc: "akpm@linux-foundation.org" <akpm@linux-foundation.org>,
	"bagasdotme@gmail.com" <bagasdotme@gmail.com>,
	"bp@alien8.de" <bp@alien8.de>,
	"Bae, Chang Seok" <chang.seok.bae@intel.com>,
	"corbet@lwn.net" <corbet@lwn.net>,
	"damien.lemoal@opensource.wdc.com"
	<damien.lemoal@opensource.wdc.com>,
	"daniel.sneddon@linux.intel.com" <daniel.sneddon@linux.intel.com>,
	"dave.hansen@linux.intel.com" <dave.hansen@linux.intel.com>,
	"Eranian, Stephane" <eranian@google.com>,
	"Yu, Fenghua" <fenghua.yu@intel.com>,
	"hpa@zytor.com" <hpa@zytor.com>,
	"james.morse@arm.com" <james.morse@arm.com>,
	"jmattson@google.com" <jmattson@google.com>,
	"jpoimboe@kernel.org" <jpoimboe@kernel.org>,
	"linux-doc@vger.kernel.org" <linux-doc@vger.kernel.org>,
	"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
	"mingo@redhat.com" <mingo@redhat.com>,
	"paulmck@kernel.org" <paulmck@kernel.org>,
	"pawan.kumar.gupta@linux.intel.com" 
	<pawan.kumar.gupta@linux.intel.com>,
	"pbonzini@redhat.com" <pbonzini@redhat.com>,
	"peterz@infradead.org" <peterz@infradead.org>,
	"quic_neeraju@quicinc.com" <quic_neeraju@quicinc.com>,
	"rdunlap@infradead.org" <rdunlap@infradead.org>,
	"Das1, Sandipan" <Sandipan.Das@amd.com>,
	"songmuchun@bytedance.com" <songmuchun@bytedance.com>,
	"tglx@linutronix.de" <tglx@linutronix.de>,
	"Luck, Tony" <tony.luck@intel.com>,
	"x86@kernel.org" <x86@kernel.org>
Subject: Re: [PATCH v8 10/13] x86/resctrl: Add sysfs interface to write mbm_total_bytes_config
Date: Wed, 23 Nov 2022 14:22:43 -0800	[thread overview]
Message-ID: <f461c201-8ef2-d7c1-0fa0-35b10a89039a@intel.com> (raw)
In-Reply-To: <MW3PR12MB45531279C61A2A75C8CC47C2950C9@MW3PR12MB4553.namprd12.prod.outlook.com>

Hi Babu,

On 11/23/2022 1:44 PM, Moger, Babu wrote:
> [AMD Official Use Only - General]
> 
> Hi Reinette,
> 
>> -----Original Message-----
>> From: Reinette Chatre <reinette.chatre@intel.com>
>> Sent: Tuesday, November 22, 2022 5:43 PM
>> To: Moger, Babu <Babu.Moger@amd.com>; Peter Newman
>> <peternewman@google.com>
>> Cc: akpm@linux-foundation.org; bagasdotme@gmail.com; bp@alien8.de;
>> chang.seok.bae@intel.com; corbet@lwn.net;
>> damien.lemoal@opensource.wdc.com; daniel.sneddon@linux.intel.com;
>> dave.hansen@linux.intel.com; eranian@google.com; fenghua.yu@intel.com;
>> hpa@zytor.com; james.morse@arm.com; jmattson@google.com;
>> jpoimboe@kernel.org; linux-doc@vger.kernel.org; linux-
>> kernel@vger.kernel.org; mingo@redhat.com; paulmck@kernel.org;
>> pawan.kumar.gupta@linux.intel.com; pbonzini@redhat.com;
>> peterz@infradead.org; quic_neeraju@quicinc.com; rdunlap@infradead.org;
>> Das1, Sandipan <Sandipan.Das@amd.com>; songmuchun@bytedance.com;
>> tglx@linutronix.de; tony.luck@intel.com; x86@kernel.org
>> Subject: Re: [PATCH v8 10/13] x86/resctrl: Add sysfs interface to write
>> mbm_total_bytes_config
>>
>> Hi Babu,
>>
>> On 11/7/2022 11:00 AM, Moger, Babu wrote:
>>>
>>> On 11/7/22 04:21, Peter Newman wrote:
>>>> Hi Babu,
>>>>
>>>> On Fri, Nov 04, 2022 at 03:01:09PM -0500, Babu Moger wrote:
>>>>> + /*
>>>>> +  * When an Event Configuration is changed, the bandwidth counters
>>>>> +  * for all RMIDs and Events will be cleared by the hardware. The
>>>>> +  * hardware also sets MSR_IA32_QM_CTR.Unavailable (bit 62) for
>>>>> +  * every RMID on the next read to any event for every RMID.
>>>>> +  * Subsequent reads will have MSR_IA32_QM_CTR.Unavailable (bit 62)
>>>>> +  * cleared while it is tracked by the hardware. Clear the
>>>>> +  * mbm_local and mbm_total counts for all the RMIDs.
>>>>> +  */
>>>>> + memset(d->mbm_local, 0, sizeof(struct mbm_state) * r->num_rmid);
>>>>> + memset(d->mbm_total, 0, sizeof(struct mbm_state) * r->num_rmid);
>>>> Looking around, I can't find a reader for mbm_total anymore. It looks
>>>> like the last place it was used went away in James's recent change:
>>>>
>>>> https://nam11.safelinks.protection.outlook.com/?url=https%3A%2F%2Flor
>>>> e.kernel.org%2Fall%2F20220902154829.30399-19-
>> james.morse%40arm.com&am
>>>>
>> p;data=05%7C01%7Cbabu.moger%40amd.com%7Ccb4a2daf65b84b45aeac08da
>> cce35
>>>>
>> 66d%7C3dd8961fe4884e608e11a82d994e183d%7C0%7C0%7C63804757402544
>> 6241%7
>>>>
>> CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI
>> 6Ik
>>>>
>> 1haWwiLCJXVCI6Mn0%3D%7C3000%7C%7C%7C&amp;sdata=QZUVrpdr0YQFSJ
>> BbS0BHSu
>>>> q%2BhMwZHAA06MUqx98hD0U%3D&amp;reserved=0
>>>>
>>>> Are we supposed to be clearing arch_mbm_total now?
>>>>
>>> Patch got garbled in previous response.
>>>
>>> Here is it now.
>>>
>>> diff --git a/arch/x86/kernel/cpu/resctrl/rdtgroup.c
>>> b/arch/x86/kernel/cpu/resctrl/rdtgroup.c
>>> index 6b222f8e58ae..28d9d99a639e 100644
>>> --- a/arch/x86/kernel/cpu/resctrl/rdtgroup.c
>>> +++ b/arch/x86/kernel/cpu/resctrl/rdtgroup.c
>>> @@ -1517,7 +1517,7 @@ static int mbm_config_write(struct rdt_resource
>>> *r, struct rdt_domain *d,
>>>                             u32 evtid, u32 val)
>>>  {
>>>         struct mon_config_info mon_info = {0};
>>> -       int ret = 0;
>>> +       int ret = 0, i;
>>>
>>>         rdt_last_cmd_clear();
>>>
>>> @@ -1557,8 +1557,10 @@ static int mbm_config_write(struct rdt_resource
>>> *r, struct rdt_domain *d,
>>>          * cleared while it is tracked by the hardware. Clear the
>>>          * mbm_local and mbm_total counts for all the RMIDs.
>>>          */
>>> -       memset(d->mbm_local, 0, sizeof(struct mbm_state) *
>>> r->num_rmid);
>>> -       memset(d->mbm_total, 0, sizeof(struct mbm_state) *
>>> r->num_rmid);
>>> +       for (i = 0; i < r->num_rmid; i++) {
>>> +               resctrl_arch_reset_rmid(r, d, i,
>>> +QOS_L3_MBM_TOTAL_EVENT_ID);
>>> +               resctrl_arch_reset_rmid(r, d, i,
>>> +QOS_L3_MBM_LOCAL_EVENT_ID);
>>> +       }
>>>
>>>  write_exit:
>>>         return ret;
>>
>> Resetting each member of an array individually seems unnecessary when the
>> array could just be reset as a unit. How about instead a new
>> resctrl_arch_reset_rmid_all() that can do so?
> 
> Yes. We can do something like this below.
> 
> diff --git a/arch/x86/kernel/cpu/resctrl/monitor.c b/arch/x86/kernel/cpu/resctrl/monitor.c
> index a188dacab6c8..2e67de911222 100644
> --- a/arch/x86/kernel/cpu/resctrl/monitor.c
> +++ b/arch/x86/kernel/cpu/resctrl/monitor.c
> @@ -176,6 +176,14 @@ void resctrl_arch_reset_rmid(struct rdt_resource *r, struct rdt_domain *d,
>                 memset(am, 0, sizeof(*am));
>  }
> 
> +void resctrl_arch_reset_rmid_all(struct rdt_domain *d)
> +{
> +       struct rdt_hw_domain *hw_dom = resctrl_to_arch_dom(d);
> +
> +       memset(hw_dom->arch_mbm_total, 0, sizeof(*hw_dom->arch_mbm_total));
> +       memset(hw_dom->arch_mbm_local, 0, sizeof(*hw_dom->arch_mbm_local));
> +}
> +
>  static u64 mbm_overflow_count(u64 prev_msr, u64 cur_msr, unsigned int width)
>  {
>         u64 shift = 64 - width, chunks;

It looks like the above would only reset the first entry of the array.
I expect that the resource should also be provided as parameter so that
the num_rmid can be obtained to be able to clear the entire array.
Also, what is the likelihood of this being called when the array does not
exist? It may be safer to wrap each memset() with an is_mbm_total_enabled()
or is_mbm_local_enabled().

Reinette

  reply	other threads:[~2022-11-23 22:23 UTC|newest]

Thread overview: 60+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-11-04 19:59 [PATCH v8 00/13] Support for AMD QoS new features Babu Moger
2022-11-04 19:59 ` [PATCH v8 01/13] x86/cpufeatures: Add Slow Memory Bandwidth Allocation feature flag Babu Moger
2022-11-23 18:21   ` Yu, Fenghua
2022-11-23 23:09     ` Moger, Babu
2022-11-04 20:00 ` [PATCH v8 02/13] x86/resctrl: Add a new resource type RDT_RESOURCE_SMBA Babu Moger
2022-11-23  0:04   ` Reinette Chatre
2022-11-23 15:13     ` Moger, Babu
2022-11-04 20:00 ` [PATCH v8 03/13] x86/cpufeatures: Add Bandwidth Monitoring Event Configuration feature flag Babu Moger
2022-11-23  0:09   ` Reinette Chatre
2022-11-23 15:16     ` Moger, Babu
2022-11-23 18:17   ` Yu, Fenghua
2022-11-23 23:06     ` Moger, Babu
2022-11-04 20:00 ` [PATCH v8 04/13] x86/resctrl: Include new features in command line options Babu Moger
2022-11-23 18:26   ` Yu, Fenghua
2022-11-23 23:10     ` Moger, Babu
2022-11-04 20:00 ` [PATCH v8 05/13] x86/resctrl: Detect and configure Slow Memory Bandwidth Allocation Babu Moger
2022-11-23  0:12   ` Reinette Chatre
2022-11-23 15:17     ` Moger, Babu
2022-11-30 18:43     ` Moger, Babu
2022-11-30 20:07       ` Reinette Chatre
2022-11-30 20:40         ` Moger, Babu
2022-12-01  0:35           ` Reinette Chatre
2022-12-01 13:56             ` Moger, Babu
2022-11-04 20:00 ` [PATCH v8 06/13] x86/resctrl: Remove the init attribute for rdt_cpu_has() Babu Moger
2022-11-23  0:13   ` Reinette Chatre
2022-11-23 17:48     ` Moger, Babu
2022-11-04 20:00 ` [PATCH v8 07/13] x86/resctrl: Introduce data structure to support monitor configuration Babu Moger
2022-11-23  0:14   ` Reinette Chatre
2022-11-23 18:23     ` Moger, Babu
2022-11-23 19:05       ` Reinette Chatre
2022-11-23 21:46         ` Moger, Babu
2022-11-04 20:00 ` [PATCH v8 08/13] x86/resctrl: Add sysfs interface to read mbm_total_bytes_config Babu Moger
2022-11-23  0:19   ` Reinette Chatre
2022-11-23 18:35     ` Moger, Babu
2022-11-23 22:27       ` Reinette Chatre
2022-11-23 22:55         ` Moger, Babu
2022-11-04 20:01 ` [PATCH v8 09/13] x86/resctrl: Add sysfs interface to read mbm_local_bytes_config Babu Moger
2022-11-04 20:01 ` [PATCH v8 10/13] x86/resctrl: Add sysfs interface to write mbm_total_bytes_config Babu Moger
2022-11-07 10:21   ` Peter Newman
2022-11-07 18:50     ` Moger, Babu
2022-11-07 19:00     ` Moger, Babu
2022-11-22 23:43       ` Reinette Chatre
2022-11-23 21:44         ` Moger, Babu
2022-11-23 22:22           ` Reinette Chatre [this message]
2022-11-28 16:01             ` Moger, Babu
2022-11-23  0:22   ` Reinette Chatre
2022-11-23 22:44     ` Moger, Babu
2022-12-07 17:20   ` James Morse
2022-12-07 17:24     ` James Morse
2022-12-08  0:02     ` Moger, Babu
2022-12-13 17:55       ` James Morse
2022-12-13 23:46         ` Moger, Babu
2022-11-04 20:01 ` [PATCH v8 11/13] x86/resctrl: Add sysfs interface to write mbm_local_bytes_config Babu Moger
2022-11-04 20:01 ` [PATCH v8 12/13] x86/resctrl: Replace smp_call_function_many() with on_each_cpu_mask() Babu Moger
2022-11-04 20:01 ` [PATCH v8 13/13] Documentation/x86: Update resctrl.rst for new features Babu Moger
2022-11-23  0:26   ` Reinette Chatre
2022-11-23 23:02     ` Moger, Babu
2022-11-15 20:50 ` [PATCH v8 00/13] Support for AMD QoS " Moger, Babu
2022-11-15 21:07   ` Reinette Chatre
2022-11-15 21:34     ` 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=f461c201-8ef2-d7c1-0fa0-35b10a89039a@intel.com \
    --to=reinette.chatre@intel.com \
    --cc=Babu.Moger@amd.com \
    --cc=Sandipan.Das@amd.com \
    --cc=akpm@linux-foundation.org \
    --cc=bagasdotme@gmail.com \
    --cc=bp@alien8.de \
    --cc=chang.seok.bae@intel.com \
    --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=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_neeraju@quicinc.com \
    --cc=rdunlap@infradead.org \
    --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 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.