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 v6 11/22] x86/resctrl: Remove MSR reading of event configuration value
Date: Fri, 16 Aug 2024 14:36:56 -0700 [thread overview]
Message-ID: <57c27158-13ca-4f79-9ff5-58033e3e3b9a@intel.com> (raw)
In-Reply-To: <ce8ca46651c5488dff19ed59ba7c50009c90ac67.1722981659.git.babu.moger@amd.com>
Hi Babu,
On 8/6/24 3:00 PM, Babu Moger wrote:
> The event configuration is domain specific and initialized during domain
> initialization. The values is stored in rdt_hw_mon_domain.
"The values is stored in rdt_hw_mon_domain." -> "The values are stored
in struct rdt_hw_mon_domain."
>
> It is not required to read the configuration register every time user asks
> for it. Use the value stored in rdt_hw_mon_domain instead.
"rdt_hw_mon_domain" -> "struct rdt_hw_mon_domain"
>
> Introduce resctrl_arch_event_config_get() and
> resctrl_arch_event_config_set() to get/set architecture domain specific
> mbm_total_cfg/mbm_local_cfg values. Also, remove unused config value
> definitions.
hmmm ... while the config values are not used they are now established
ABI and any other architecture that wants to support configurable events
will need to follow these definitions. It is thus required to keep them
documented in the kernel in support of future changes. I
understand that they are documented in user docs, but could we keep them
in the kernel code also? Since they are unused they could perhaps be moved
to comments as a compromise?
>
> Signed-off-by: Babu Moger <babu.moger@amd.com>
> ---
> v6: Fixed inconstancy with types. Made all the types to u32 for config
> value.
> Removed few rdt_last_cmd_puts as it is not necessary.
> Removed unused config value definitions.
> Few more updates to commit message.
>
> v5: Introduced resctrl_arch_event_config_get and
> resctrl_arch_event_config_get() based on our discussion.
> https://lore.kernel.org/lkml/68e861f9-245d-4496-a72e-46fc57d19c62@amd.com/
>
> v4: New patch.
> ---
> arch/x86/kernel/cpu/resctrl/internal.h | 21 -----
> arch/x86/kernel/cpu/resctrl/rdtgroup.c | 104 ++++++++++++++-----------
> include/linux/resctrl.h | 4 +
> 3 files changed, 64 insertions(+), 65 deletions(-)
>
> diff --git a/arch/x86/kernel/cpu/resctrl/internal.h b/arch/x86/kernel/cpu/resctrl/internal.h
> index 4d8cc36a8d79..1021227d8c7e 100644
> --- a/arch/x86/kernel/cpu/resctrl/internal.h
> +++ b/arch/x86/kernel/cpu/resctrl/internal.h
> @@ -32,27 +32,6 @@
> */
> #define MBM_CNTR_WIDTH_OFFSET_MAX (62 - MBM_CNTR_WIDTH_BASE)
>
> -/* Reads to Local DRAM Memory */
> -#define READS_TO_LOCAL_MEM BIT(0)
> -
> -/* Reads to Remote DRAM Memory */
> -#define READS_TO_REMOTE_MEM BIT(1)
> -
> -/* Non-Temporal Writes to Local Memory */
> -#define NON_TEMP_WRITE_TO_LOCAL_MEM BIT(2)
> -
> -/* Non-Temporal Writes to Remote Memory */
> -#define NON_TEMP_WRITE_TO_REMOTE_MEM BIT(3)
> -
> -/* Reads to Local Memory the system identifies as "Slow Memory" */
> -#define READS_TO_LOCAL_S_MEM BIT(4)
> -
> -/* Reads to Remote Memory the system identifies as "Slow Memory" */
> -#define READS_TO_REMOTE_S_MEM BIT(5)
> -
> -/* Dirty Victims to All Types of Memory */
> -#define DIRTY_VICTIMS_TO_ALL_MEM BIT(6)
> -
> /* Max event bits supported */
> #define MAX_EVT_CONFIG_BITS GENMASK(6, 0)
>
> diff --git a/arch/x86/kernel/cpu/resctrl/rdtgroup.c b/arch/x86/kernel/cpu/resctrl/rdtgroup.c
> index 02afd3442876..0047b4eb0ff5 100644
> --- a/arch/x86/kernel/cpu/resctrl/rdtgroup.c
> +++ b/arch/x86/kernel/cpu/resctrl/rdtgroup.c
> @@ -1605,10 +1605,57 @@ static int rdtgroup_size_show(struct kernfs_open_file *of,
> }
>
> struct mon_config_info {
> + struct rdt_mon_domain *d;
> u32 evtid;
> u32 mon_config;
> };
>
> +u32 resctrl_arch_event_config_get(struct rdt_mon_domain *d,
> + enum resctrl_event_id eventid)
> +{
> + struct rdt_hw_mon_domain *hw_dom = resctrl_to_arch_mon_dom(d);
> +
> + switch (eventid) {
> + case QOS_L3_OCCUP_EVENT_ID:
> + break;
> + case QOS_L3_MBM_TOTAL_EVENT_ID:
> + return hw_dom->mbm_total_cfg;
> + case QOS_L3_MBM_LOCAL_EVENT_ID:
> + return hw_dom->mbm_local_cfg;
> + }
> +
> + /* Never expect to get here */
> + WARN_ON_ONCE(1);
> +
> + return INVALID_CONFIG_VALUE;
> +}
> +
> +void resctrl_arch_event_config_set(void *info)
> +{
> + struct mon_config_info *mon_info = info;
> + struct rdt_hw_mon_domain *hw_dom;
> + unsigned int index;
> +
> + index = mon_event_config_index_get(mon_info->evtid);
> + if (index == INVALID_CONFIG_INDEX)
> + return;
> +
> + wrmsr(MSR_IA32_EVT_CFG_BASE + index, mon_info->mon_config, 0);
> +
> + hw_dom = resctrl_to_arch_mon_dom(mon_info->d);
> +
> + switch (mon_info->evtid) {
> + case QOS_L3_OCCUP_EVENT_ID:
> + break;
> + case QOS_L3_MBM_TOTAL_EVENT_ID:
> + hw_dom->mbm_total_cfg = mon_info->mon_config;
> + break;
> + case QOS_L3_MBM_LOCAL_EVENT_ID:
> + hw_dom->mbm_local_cfg = mon_info->mon_config;
> + break;
> + }
> +}
> +
> /**
> * mon_event_config_index_get - get the hardware index for the
> * configurable event
> @@ -1631,33 +1678,11 @@ unsigned int mon_event_config_index_get(u32 evtid)
> }
> }
>
> -static void mon_event_config_read(void *info)
> -{
> - struct mon_config_info *mon_info = info;
> - unsigned int index;
> - u64 msrval;
> -
> - index = mon_event_config_index_get(mon_info->evtid);
> - if (index == INVALID_CONFIG_INDEX) {
> - pr_warn_once("Invalid event id %d\n", mon_info->evtid);
> - return;
> - }
> - rdmsrl(MSR_IA32_EVT_CFG_BASE + index, msrval);
> -
> - /* Report only the valid event configuration bits */
> - mon_info->mon_config = msrval & MAX_EVT_CONFIG_BITS;
> -}
> -
> -static void mondata_config_read(struct rdt_mon_domain *d, struct mon_config_info *mon_info)
> -{
> - smp_call_function_any(&d->hdr.cpu_mask, mon_event_config_read, mon_info, 1);
> -}
> -
> static int mbm_config_show(struct seq_file *s, struct rdt_resource *r, u32 evtid)
> {
> - struct mon_config_info mon_info = {0};
> struct rdt_mon_domain *dom;
> bool sep = false;
> + u32 val;
>
> cpus_read_lock();
> mutex_lock(&rdtgroup_mutex);
> @@ -1666,11 +1691,11 @@ static int mbm_config_show(struct seq_file *s, struct rdt_resource *r, u32 evtid
> if (sep)
> seq_puts(s, ";");
>
> - memset(&mon_info, 0, sizeof(struct mon_config_info));
> - mon_info.evtid = evtid;
> - mondata_config_read(dom, &mon_info);
> + val = resctrl_arch_event_config_get(dom, evtid);
> + if (val == INVALID_CONFIG_VALUE)
Can this check and the "break" that follows be dropped? val being
INVALID_CONFIG_VALUE would be a kernel bug and resctrl_arch_event_config_get()
would already have printed the WARN. In this unlikely scenario I find it
unexpected that mbm_config_show() will return success in this case and the
below seq_printf() would handle the printing of INVALID_CONFIG_VALUE without
issue anyway.
> + break;
>
> - seq_printf(s, "%d=0x%02x", dom->hdr.id, mon_info.mon_config);
> + seq_printf(s, "%d=0x%02x", dom->hdr.id, val);
> sep = true;
> }
> seq_puts(s, "\n");
Reinette
next prev parent reply other threads:[~2024-08-16 21:37 UTC|newest]
Thread overview: 96+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-08-06 22:00 [PATCH v6 00/22] x86/resctrl : Support AMD Assignable Bandwidth Monitoring Counters (ABMC) Babu Moger
2024-08-06 22:00 ` [PATCH v6 01/22] x86/cpufeatures: Add support for " Babu Moger
2024-08-07 16:32 ` Thomas Gleixner
2024-08-08 14:46 ` Moger, Babu
2024-08-06 22:00 ` [PATCH v6 02/22] x86/resctrl: Add ABMC feature in the command line options Babu Moger
2024-08-06 22:00 ` [PATCH v6 03/22] x86/resctrl: Consolidate monitoring related data from rdt_resource Babu Moger
2024-08-16 21:29 ` Reinette Chatre
2024-08-19 14:46 ` Moger, Babu
2024-08-06 22:00 ` [PATCH v6 04/22] x86/resctrl: Detect Assignable Bandwidth Monitoring feature details Babu Moger
2024-08-07 16:33 ` Thomas Gleixner
2024-08-16 21:30 ` Reinette Chatre
2024-08-19 15:37 ` Moger, Babu
2024-08-06 22:00 ` [PATCH v6 05/22] x86/resctrl: Introduce resctrl_file_fflags_init() to initialize fflags Babu Moger
2024-08-06 22:00 ` [PATCH v6 06/22] x86/resctrl: Add support to enable/disable AMD ABMC feature Babu Moger
2024-08-16 16:29 ` James Morse
2024-08-16 20:38 ` Moger, Babu
2024-08-16 21:31 ` Reinette Chatre
2024-08-19 18:07 ` Moger, Babu
2024-08-20 18:17 ` Reinette Chatre
2024-08-06 22:00 ` [PATCH v6 07/22] x86/resctrl: Introduce the interface to display monitor mode Babu Moger
2024-08-16 16:56 ` James Morse
2024-08-16 20:38 ` Moger, Babu
2024-08-16 21:32 ` Reinette Chatre
2024-08-19 19:27 ` Moger, Babu
2024-08-06 22:00 ` [PATCH v6 08/22] x86/resctrl: Introduce interface to display number of monitoring counters Babu Moger
2024-08-16 21:34 ` Reinette Chatre
2024-08-20 15:56 ` Moger, Babu
2024-08-20 18:08 ` Reinette Chatre
2024-08-06 22:00 ` [PATCH v6 09/22] x86/resctrl: Introduce MBM counters bitmap Babu Moger
2024-08-16 16:29 ` James Morse
2024-08-16 20:39 ` Moger, Babu
2024-08-16 21:35 ` Reinette Chatre
2024-08-19 15:49 ` Moger, Babu
2024-08-20 18:08 ` Reinette Chatre
2024-08-06 22:00 ` [PATCH v6 10/22] x86/resctrl: Introduce mbm_total_cfg and mbm_local_cfg Babu Moger
2024-08-06 22:00 ` [PATCH v6 11/22] x86/resctrl: Remove MSR reading of event configuration value Babu Moger
2024-08-16 21:36 ` Reinette Chatre [this message]
2024-08-20 16:19 ` Moger, Babu
2024-08-20 18:09 ` Reinette Chatre
2024-08-06 22:00 ` [PATCH v6 12/22] x86/resctrl: Introduce mbm_cntr_map to track counters at domain Babu Moger
2024-08-16 21:37 ` Reinette Chatre
2024-08-20 18:24 ` Moger, Babu
2024-08-06 22:00 ` [PATCH v6 13/22] x86/resctrl: Add data structures and definitions for ABMC assignment Babu Moger
2024-08-16 21:38 ` Reinette Chatre
2024-08-20 20:56 ` Moger, Babu
2024-08-20 21:09 ` Reinette Chatre
2024-08-06 22:00 ` [PATCH v6 14/22] x86/resctrl: Introduce cntr_id in mongroup for assignments Babu Moger
2024-08-16 21:38 ` Reinette Chatre
2024-08-20 22:42 ` Moger, Babu
2024-08-06 22:00 ` [PATCH v6 15/22] x86/resctrl: Add the interface to assign a hardware counter Babu Moger
2024-08-16 16:30 ` James Morse
2024-08-16 20:39 ` Moger, Babu
2024-08-16 21:41 ` Reinette Chatre
2024-08-21 15:04 ` Moger, Babu
2024-08-06 22:00 ` [PATCH v6 16/22] x86/resctrl: Add the interface to unassign a MBM counter Babu Moger
2024-08-16 21:41 ` Reinette Chatre
2024-08-21 16:01 ` Moger, Babu
2024-08-23 20:18 ` Reinette Chatre
2024-08-23 22:05 ` Moger, Babu
2024-08-06 22:00 ` [PATCH v6 17/22] x86/resctrl: Assign/unassign counters by default when ABMC is enabled Babu Moger
2024-08-16 21:42 ` Reinette Chatre
2024-08-21 17:20 ` Moger, Babu
2024-08-06 22:00 ` [PATCH v6 18/22] x86/resctrl: Report "Unassigned" for MBM events in ABMC mode Babu Moger
2024-08-16 21:42 ` Reinette Chatre
2024-08-21 17:30 ` Moger, Babu
2024-08-06 22:00 ` [PATCH v6 19/22] x86/resctrl: Introduce the interface to switch between monitor modes Babu Moger
2024-08-16 16:31 ` James Morse
2024-08-16 17:01 ` Reinette Chatre
2024-08-16 17:16 ` Peter Newman
2024-08-16 18:09 ` Reinette Chatre
2024-08-19 14:52 ` Reinette Chatre
2024-08-19 18:27 ` Peter Newman
2024-08-20 18:11 ` Reinette Chatre
2024-08-16 21:42 ` Reinette Chatre
2024-08-21 18:08 ` Moger, Babu
2024-08-06 22:00 ` [PATCH v6 20/22] x86/resctrl: Enable AMD ABMC feature by default when supported Babu Moger
2024-08-16 16:32 ` James Morse
2024-08-16 20:40 ` Moger, Babu
2024-08-16 22:33 ` Reinette Chatre
2024-08-19 18:18 ` Moger, Babu
2024-08-20 18:12 ` Reinette Chatre
2024-08-20 20:04 ` Moger, Babu
2024-08-20 20:18 ` Moger, Babu
2024-08-20 20:37 ` Reinette Chatre
2024-08-06 22:00 ` [PATCH v6 21/22] x86/resctrl: Introduce interface to list monitor states of all the groups Babu Moger
2024-08-16 16:28 ` James Morse
2024-08-16 20:40 ` Moger, Babu
2024-08-06 22:00 ` [PATCH v6 22/22] x86/resctrl: Introduce interface to modify assignment states of " Babu Moger
2024-08-16 22:33 ` Reinette Chatre
2024-08-21 20:11 ` Moger, Babu
2024-08-23 20:18 ` Reinette Chatre
2024-08-23 22:04 ` Moger, Babu
2024-08-16 21:28 ` [PATCH v6 00/22] x86/resctrl : Support AMD Assignable Bandwidth Monitoring Counters (ABMC) Reinette Chatre
2024-08-22 1:31 ` Moger, Babu
2024-08-23 20:29 ` Reinette Chatre
2024-08-23 22:14 ` 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=57c27158-13ca-4f79-9ff5-58033e3e3b9a@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
all inboxes | Powered by JetHome®