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>,
<seanjc@google.com>, <kim.phillips@amd.com>,
<jmattson@google.com>, <ilpo.jarvinen@linux.intel.com>,
<jithu.joseph@intel.com>, <kan.liang@linux.intel.com>,
<nikunj@amd.com>, <daniel.sneddon@linux.intel.com>,
<pbonzini@redhat.com>, <rick.p.edgecombe@intel.com>,
<rppt@kernel.org>, <maciej.wieczor-retman@intel.com>,
<linux-doc@vger.kernel.org>, <linux-kernel@vger.kernel.org>,
<eranian@google.com>, <peternewman@google.com>,
<dhagiani@amd.com>
Subject: Re: [PATCH v3 2/2] x86/resctrl: Remove hard-coded memory bandwidth event configuration
Date: Fri, 5 Jan 2024 13:18:18 -0800 [thread overview]
Message-ID: <e25ef699-7b6c-4731-b62a-39a90dd888e7@intel.com> (raw)
In-Reply-To: <20240104212130.209490-2-babu.moger@amd.com>
Hi Babu,
On 1/4/2024 1:21 PM, Babu Moger wrote:
> If the BMEC (Bandwidth Monitoring Event Configuration) feature is
> supported, the bandwidth events can be configured. The maximum supported
> bandwidth bitmask can be determined by following CPUID command.
>
> CPUID_Fn80000020_ECX_x03 [Platform QoS Monitoring Bandwidth Event
> Configuration] Read-only. Reset: 0000_007Fh.
> Bits Description
> 31:7 Reserved
> 6:0 Identifies the bandwidth sources that can be tracked.
>
> The bandwidth sources can change with the processor generations.
> Remove the hard-coded value and detect using CPUID command. Also,
I do not think "Remove the hard-coded value" is accurate anymore.
> print the valid bitmask when the user tries to configure invalid value.
>
> The CPUID details are documentation in the PPR listed below [1].
"are documentation" -> "are documented"
> [1] Processor Programming Reference (PPR) Vol 1.1 for AMD Family 19h Model
> 11h B1 - 55901 Rev 0.25.
>
> Fixes: dc2a3e857981 ("x86/resctrl: Add interface to read mbm_total_bytes_config")
> Link: https://bugzilla.kernel.org/show_bug.cgi?id=206537
> Signed-off-by: Babu Moger <babu.moger@amd.com>
Same comment about "Link:" as for patch 1/2.
> ---
> v3: Changed the event_mask name to mbm_cfg_mask. Added comments about the field.
> Reverted the masking of event configuration to original code.
> Few minor comment changes.
>
> v2: Earlier sent as a part of ABMC feature.
> https://lore.kernel.org/lkml/20231201005720.235639-1-babu.moger@amd.com/
> But this is not related to ABMC. Sending it separate now.
> Removed the global resctrl_max_evt_bitmask. Added event_mask as part of
> the resource.
> ---
> arch/x86/kernel/cpu/resctrl/internal.h | 3 +++
> arch/x86/kernel/cpu/resctrl/monitor.c | 6 ++++++
> arch/x86/kernel/cpu/resctrl/rdtgroup.c | 6 ++++--
> 3 files changed, 13 insertions(+), 2 deletions(-)
>
> diff --git a/arch/x86/kernel/cpu/resctrl/internal.h b/arch/x86/kernel/cpu/resctrl/internal.h
> index d2979748fae4..e3dc35a00a19 100644
> --- a/arch/x86/kernel/cpu/resctrl/internal.h
> +++ b/arch/x86/kernel/cpu/resctrl/internal.h
> @@ -394,6 +394,8 @@ struct rdt_parse_data {
> * @msr_update: Function pointer to update QOS MSRs
> * @mon_scale: cqm counter * mon_scale = occupancy in bytes
> * @mbm_width: Monitor width, to detect and correct for overflow.
> + * @mbm_cfg_mask: Bandwidth sources that can be tracked when Bandwidth
> + * Monitoring Event Configuration (BMEC) is supported.
> * @cdp_enabled: CDP state of this resource
> *
> * Members of this structure are either private to the architecture
> @@ -408,6 +410,7 @@ struct rdt_hw_resource {
> struct rdt_resource *r);
> unsigned int mon_scale;
> unsigned int mbm_width;
> + unsigned int mbm_cfg_mask;
> bool cdp_enabled;
> };
>
> diff --git a/arch/x86/kernel/cpu/resctrl/monitor.c b/arch/x86/kernel/cpu/resctrl/monitor.c
> index f136ac046851..acca577e2b06 100644
> --- a/arch/x86/kernel/cpu/resctrl/monitor.c
> +++ b/arch/x86/kernel/cpu/resctrl/monitor.c
> @@ -813,6 +813,12 @@ int __init rdt_get_mon_l3_config(struct rdt_resource *r)
> return ret;
>
> if (rdt_cpu_has(X86_FEATURE_BMEC)) {
> + u32 eax, ebx, ecx, edx;
> +
> + /* Detect list of bandwidth sources that can be tracked */
> + cpuid_count(0x80000020, 3, &eax, &ebx, &ecx, &edx);
> + hw_res->mbm_cfg_mask = ecx & MAX_EVT_CONFIG_BITS;
> +
> if (rdt_cpu_has(X86_FEATURE_CQM_MBM_TOTAL)) {
> mbm_total_event.configurable = true;
> mbm_config_rftype_init("mbm_total_bytes_config");
> diff --git a/arch/x86/kernel/cpu/resctrl/rdtgroup.c b/arch/x86/kernel/cpu/resctrl/rdtgroup.c
> index 69a1de92384a..5b5a8f0ffb2f 100644
> --- a/arch/x86/kernel/cpu/resctrl/rdtgroup.c
> +++ b/arch/x86/kernel/cpu/resctrl/rdtgroup.c
> @@ -1617,12 +1617,14 @@ static void mon_event_config_write(void *info)
> static int mbm_config_write_domain(struct rdt_resource *r,
> struct rdt_domain *d, u32 evtid, u32 val)
Not specific to this patch, but since the valid mask is per resource I do not think
it is necessary to check user provided value for every domain. The user provided value
can be checked earlier and only once in mon_config_write() before iterating over all
domains to write the value.
> {
> + struct rdt_hw_resource *hw_res = resctrl_to_arch_res(r);
> struct mon_config_info mon_info = {0};
> int ret = 0;
>
> /* mon_config cannot be more than the supported set of events */
> - if (val > MAX_EVT_CONFIG_BITS) {
> - rdt_last_cmd_puts("Invalid event configuration\n");
> + if ((val & hw_res->mbm_cfg_mask) != val) {
> + rdt_last_cmd_printf("Invalid input: The maximum valid bitmask is 0x%02x\n",
> + hw_res->mbm_cfg_mask);
I think keeping "Invalid event configuration" is useful to create a detailed message of:
"Invalid event configuration: maximum valid bitmask is 0x%02x"
Reinette
next prev parent reply other threads:[~2024-01-05 21:18 UTC|newest]
Thread overview: 145+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-12-01 0:57 [PATCH 00/15] x86/resctrl : Support AMD QoS RMID Pinning feature Babu Moger
2023-12-01 0:57 ` [PATCH 01/15] x86/resctrl: Remove hard-coded memory bandwidth limit Babu Moger
2023-12-05 23:18 ` Reinette Chatre
2023-12-06 16:29 ` Moger, Babu
2023-12-06 17:09 ` Reinette Chatre
2023-12-06 17:37 ` Moger, Babu
2023-12-01 0:57 ` [PATCH 02/15] x86/resctrl: Remove hard-coded memory bandwidth event configuration Babu Moger
2023-12-05 23:21 ` Reinette Chatre
2023-12-06 17:17 ` Moger, Babu
2023-12-06 18:32 ` Reinette Chatre
2023-12-06 19:17 ` Moger, Babu
2023-12-07 19:02 ` Reinette Chatre
2023-12-07 23:37 ` Moger, Babu
2023-12-01 0:57 ` [PATCH 03/15] x86/resctrl: Add support for Assignable Bandwidth Monitoring Counters (ABMC) Babu Moger
2023-12-01 0:57 ` [PATCH 04/15] x86/resctrl: Add ABMC feature in the command line options Babu Moger
2023-12-01 0:57 ` [PATCH 05/15] x86/resctrl: Detect ABMC feature details Babu Moger
2023-12-01 0:57 ` [PATCH 06/15] x86/resctrl: Add the mount option for ABMC feature Babu Moger
2023-12-01 0:57 ` [PATCH 07/15] x86/resctrl: Add support to enable/disable " Babu Moger
2023-12-05 16:48 ` kernel test robot
2023-12-05 17:40 ` Moger, Babu
2023-12-05 18:50 ` kernel test robot
2023-12-01 0:57 ` [PATCH 08/15] x86/resctrl: Introduce interface to display number of ABMC counters Babu Moger
2023-12-01 0:57 ` [PATCH 09/15] x86/resctrl: Add interface to display monitor state of the group Babu Moger
2023-12-01 0:57 ` [PATCH 10/15] x86/resctrl: Initialize ABMC counters bitmap Babu Moger
2023-12-01 0:57 ` [PATCH 11/15] x86/resctrl: Add data structures for ABMC assignment Babu Moger
2023-12-01 0:57 ` [PATCH 12/15] x86/resctrl: Introduce mbm_total_cfg and mbm_local_cfg Babu Moger
2023-12-01 0:57 ` [PATCH 13/15] x86/resctrl: Add the interface to assign a ABMC counter Babu Moger
2023-12-01 0:57 ` [PATCH 14/15] x86/resctrl: Add interface unassign " Babu Moger
2023-12-05 17:55 ` kernel test robot
2023-12-05 18:09 ` Moger, Babu
2023-12-01 0:57 ` [PATCH 15/15] x86/resctrl: Update ABMC assignment on event configuration changes Babu Moger
2023-12-05 0:13 ` [PATCH 00/15] x86/resctrl : Support AMD QoS RMID Pinning feature Peter Newman
2023-12-05 23:17 ` Reinette Chatre
2023-12-06 15:40 ` Moger, Babu
2023-12-06 18:49 ` Reinette Chatre
2023-12-07 16:12 ` Moger, Babu
2023-12-07 19:29 ` Reinette Chatre
2023-12-07 23:07 ` Moger, Babu
2023-12-07 23:26 ` Reinette Chatre
2023-12-07 23:34 ` Moger, Babu
2023-12-08 22:58 ` Moger, Babu
2023-12-08 19:45 ` Peter Newman
2023-12-08 20:09 ` Reinette Chatre
2023-12-12 18:02 ` [PATCH v2 1/2] x86/resctrl: Remove hard-coded memory bandwidth limit Babu Moger
2023-12-15 2:20 ` Reinette Chatre
2024-01-02 19:52 ` Moger, Babu
2023-12-12 18:02 ` [PATCH v2 2/2] x86/resctrl: Remove hard-coded memory bandwidth event configuration Babu Moger
2023-12-15 1:24 ` Reinette Chatre
2024-01-02 20:00 ` Moger, Babu
2024-01-03 18:38 ` Reinette Chatre
2024-01-03 21:03 ` Moger, Babu
2024-01-03 21:40 ` Reinette Chatre
2024-01-04 13:48 ` Moger, Babu
2024-01-04 21:21 ` [PATCH v3 1/2] x86/resctrl: Remove hard-coded memory bandwidth limit Babu Moger
2024-01-05 21:14 ` Reinette Chatre
2024-01-05 23:51 ` Moger, Babu
2024-01-04 21:21 ` [PATCH v3 2/2] x86/resctrl: Remove hard-coded memory bandwidth event configuration Babu Moger
2024-01-05 21:18 ` Reinette Chatre [this message]
2024-01-06 0:13 ` Moger, Babu
2024-01-11 21:36 ` [PATCH v4 1/2] x86/resctrl: Remove hard-coded memory bandwidth limit Babu Moger
2024-01-11 21:36 ` [PATCH v4 2/2] x86/resctrl: Read supported bandwidth sources using CPUID command Babu Moger
2024-01-12 19:02 ` Reinette Chatre
2024-01-12 20:38 ` Moger, Babu
2024-01-12 21:24 ` Reinette Chatre
2024-01-12 21:54 ` Moger, Babu
2024-01-15 22:52 ` [PATCH v5 1/2] x86/resctrl: Remove hard-coded memory bandwidth limit Babu Moger
2024-01-23 10:36 ` Borislav Petkov
2024-01-23 14:58 ` Moger, Babu
2024-01-15 22:52 ` [PATCH v5 2/2] x86/resctrl: Read supported bandwidth sources using CPUID command Babu Moger
2024-01-16 19:44 ` Reinette Chatre
2024-01-16 21:39 ` Moger, Babu
2024-01-19 18:22 ` [PATCH v2 00/17] x86/resctrl : Support AMD Assignable Bandwidth Monitoring Counters (ABMC) Babu Moger
2024-01-19 18:22 ` [PATCH v2 01/17] x86/cpufeatures: Add word 21 for scattered CPUID features Babu Moger
2024-01-19 18:22 ` [PATCH v2 02/17] x86/resctrl: Add support for Assignable Bandwidth Monitoring Counters (ABMC) Babu Moger
2024-01-19 18:22 ` [PATCH v2 03/17] x86/resctrl: Add ABMC feature in the command line options Babu Moger
2024-01-19 18:22 ` [PATCH v2 04/17] x86/resctrl: Detect Assignable Bandwidth Monitoring feature details Babu Moger
2024-02-20 17:56 ` James Morse
2024-02-20 21:27 ` Moger, Babu
2024-01-19 18:22 ` [PATCH v2 05/17] x86/resctrl: Introduce resctrl_file_fflags_init Babu Moger
2024-01-19 18:22 ` [PATCH v2 06/17] x86/resctrl: Introduce interface to display number of ABMC counters Babu Moger
2024-02-20 18:14 ` James Morse
2024-02-20 21:23 ` Moger, Babu
2024-01-19 18:22 ` [PATCH v2 07/17] x86/resctrl: Add support to enable/disable ABMC feature Babu Moger
2024-01-19 18:22 ` [PATCH v2 08/17] x86/resctrl: Introduce the interface to display ABMC state Babu Moger
2024-01-19 18:22 ` [PATCH v2 09/17] x86/resctrl: Introdruce rdtgroup_assign_enable_write Babu Moger
2024-01-19 18:22 ` [PATCH v2 10/17] x86/resctrl: Add interface to display monitor state of the group Babu Moger
2024-01-19 18:22 ` [PATCH v2 11/17] x86/resctrl: Report Unsupported when MBM events are read Babu Moger
2024-01-19 18:22 ` [PATCH v2 12/17] x86/resctrl: Initialize assignable counters bitmap Babu Moger
2024-01-19 18:22 ` [PATCH v2 13/17] x86/resctrl: Add data structures for ABMC assignment Babu Moger
2024-01-19 18:22 ` [PATCH v2 14/17] x86/resctrl: Introduce mbm_total_cfg and mbm_local_cfg Babu Moger
2024-01-19 18:22 ` [PATCH v2 15/17] x86/resctrl: Add the interface to assign the RMID Babu Moger
2024-01-19 18:22 ` [PATCH v2 16/17] x86/resctrl: Add the interface unassign " Babu Moger
2024-01-19 18:22 ` [PATCH v2 17/17] x86/resctrl: Update RMID assignments on event configuration changes Babu Moger
2024-01-19 18:32 ` [PATCH v2 00/17] x86/resctrl : Support AMD Assignable Bandwidth Monitoring Counters (ABMC) Reinette Chatre
2024-01-19 20:35 ` Moger, Babu
2024-02-02 4:09 ` Reinette Chatre
2024-02-02 5:01 ` Reinette Chatre
2024-02-02 21:57 ` Moger, Babu
2024-02-05 22:38 ` Reinette Chatre
2024-02-08 17:29 ` Moger, Babu
2024-02-16 20:18 ` Peter Newman
2024-02-19 18:00 ` Moger, Babu
2024-02-20 15:21 ` James Morse
2024-02-20 18:11 ` Peter Newman
2024-02-23 21:47 ` Moger, Babu
2024-02-20 15:21 ` James Morse
2024-02-20 18:14 ` James Morse
2024-02-20 20:48 ` Moger, Babu
2024-02-23 17:17 ` Reinette Chatre
2024-02-23 20:11 ` Moger, Babu
2024-02-23 22:21 ` Reinette Chatre
2024-02-26 17:59 ` Moger, Babu
2024-02-26 21:20 ` Reinette Chatre
2024-02-27 18:12 ` Moger, Babu
2024-02-27 18:26 ` Peter Newman
2024-02-27 19:37 ` Moger, Babu
2024-02-27 20:06 ` Peter Newman
2024-02-27 20:42 ` Moger, Babu
2024-02-27 23:50 ` Reinette Chatre
2024-02-28 17:59 ` Moger, Babu
2024-02-28 20:04 ` Reinette Chatre
2024-02-29 20:37 ` Moger, Babu
2024-02-29 21:50 ` Reinette Chatre
2024-03-01 20:36 ` Moger, Babu
2024-03-01 23:20 ` Reinette Chatre
2024-03-04 19:34 ` Moger, Babu
2024-03-04 19:58 ` Reinette Chatre
2024-03-04 22:24 ` Moger, Babu
2024-03-05 14:58 ` Moger, Babu
2024-03-05 17:12 ` Reinette Chatre
2024-03-05 19:35 ` Moger, Babu
2024-03-07 18:57 ` Peter Newman
2024-03-07 20:41 ` Reinette Chatre
2024-03-07 22:33 ` Peter Newman
2024-03-07 22:53 ` Reinette Chatre
2024-03-07 23:14 ` Peter Newman
2024-03-08 17:13 ` Reinette Chatre
2024-03-08 3:50 ` Moger, Babu
2024-03-08 17:20 ` Reinette Chatre
2024-03-12 13:30 ` Moger, Babu
2024-03-11 15:40 ` Moger, Babu
2024-03-12 15:13 ` Reinette Chatre
2024-03-12 17:07 ` Moger, Babu
2024-03-12 17:15 ` Reinette Chatre
2024-03-12 17:24 ` 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=e25ef699-7b6c-4731-b62a-39a90dd888e7@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=dhagiani@amd.com \
--cc=eranian@google.com \
--cc=fenghua.yu@intel.com \
--cc=hpa@zytor.com \
--cc=ilpo.jarvinen@linux.intel.com \
--cc=jithu.joseph@intel.com \
--cc=jmattson@google.com \
--cc=kan.liang@linux.intel.com \
--cc=kim.phillips@amd.com \
--cc=linux-doc@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=maciej.wieczor-retman@intel.com \
--cc=mingo@redhat.com \
--cc=nikunj@amd.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=rppt@kernel.org \
--cc=seanjc@google.com \
--cc=tglx@linutronix.de \
--cc=tj@kernel.org \
--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;
as well as URLs for NNTP newsgroup(s).