All of lore.kernel.org
 help / color / mirror / Atom feed
From: Reinette Chatre <reinette.chatre@intel.com>
To: Babu Moger <babu.moger@amd.com>, <corbet@lwn.net>,
	<tglx@linutronix.de>, <mingo@redhat.com>, <bp@alien8.de>
Cc: <fenghua.yu@intel.com>, <dave.hansen@linux.intel.com>,
	<x86@kernel.org>, <hpa@zytor.com>, <paulmck@kernel.org>,
	<akpm@linux-foundation.org>, <quic_neeraju@quicinc.com>,
	<rdunlap@infradead.org>, <damien.lemoal@opensource.wdc.com>,
	<songmuchun@bytedance.com>, <peterz@infradead.org>,
	<jpoimboe@kernel.org>, <pbonzini@redhat.com>,
	<chang.seok.bae@intel.com>, <pawan.kumar.gupta@linux.intel.com>,
	<jmattson@google.com>, <daniel.sneddon@linux.intel.com>,
	<sandipan.das@amd.com>, <tony.luck@intel.com>,
	<james.morse@arm.com>, <linux-doc@vger.kernel.org>,
	<linux-kernel@vger.kernel.org>, <bagasdotme@gmail.com>,
	<eranian@google.com>
Subject: Re: [PATCH v4 10/13] x86/resctrl: Add the sysfs interface to read the event configuration
Date: Fri, 16 Sep 2022 08:59:32 -0700	[thread overview]
Message-ID: <36f0466f-517e-050d-5fae-9325ec28ebd6@intel.com> (raw)
In-Reply-To: <166257366902.1043018.16087054015308149859.stgit@bmoger-ubuntu>

Hi Babu,

On 9/7/2022 11:01 AM, Babu Moger wrote:
> The current event configuration can be viewed by the user by reading
> the sysfs configuration file.
> 
> Following are the types of events supported:
> 
> ====  ===========================================================
> Bits   Description
> ====  ===========================================================
> 6      Dirty Victims from the QOS domain to all types of memory
> 5      Reads to slow memory in the non-local NUMA domain
> 4      Reads to slow memory in the local NUMA domain
> 3      Non-temporal writes to non-local NUMA domain
> 2      Non-temporal writes to local NUMA domain
> 1      Reads to memory in the non-local NUMA domain
> 0      Reads to memory in the local NUMA domain
> ====  ===========================================================
> 

...

> diff --git a/arch/x86/kernel/cpu/resctrl/internal.h b/arch/x86/kernel/cpu/resctrl/internal.h
> index 45923eb4022f..96f439324d78 100644
> --- a/arch/x86/kernel/cpu/resctrl/internal.h
> +++ b/arch/x86/kernel/cpu/resctrl/internal.h
> @@ -15,6 +15,7 @@
>  #define MSR_IA32_MBA_THRTL_BASE		0xd50
>  #define MSR_IA32_MBA_BW_BASE		0xc0000200
>  #define MSR_IA32_SMBA_BW_BASE		0xc0000280
> +#define MSR_IA32_EVT_CFG_BASE		0xc0000400
>  
>  #define MSR_IA32_QM_CTR			0x0c8e
>  #define MSR_IA32_QM_EVTSEL		0x0c8d
> @@ -50,6 +51,29 @@
>   */
>  #define MBM_CNTR_WIDTH_OFFSET_MAX (62 - MBM_CNTR_WIDTH_BASE)
>  
> +/* Reads to Local DRAM Memory */

What prompted the terminology switch between the
changelog ("local NUMA")  and the comments ("DRAM")?

> +#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)
> +

Could you please fixup the comments to only capitalize 
the first word of each sentence (unless it is an acronym
or required for some other reason)?

> +/* Max event bits supported */
> +#define MAX_EVT_CONFIG_BITS		GENMASK(6, 0)
>  
>  struct rdt_fs_context {
>  	struct kernfs_fs_context	kfc;
> diff --git a/arch/x86/kernel/cpu/resctrl/rdtgroup.c b/arch/x86/kernel/cpu/resctrl/rdtgroup.c
> index da11fdad204d..6f067c1ac7c1 100644
> --- a/arch/x86/kernel/cpu/resctrl/rdtgroup.c
> +++ b/arch/x86/kernel/cpu/resctrl/rdtgroup.c
> @@ -254,8 +254,85 @@ static const struct kernfs_ops kf_mondata_ops = {
>  	.seq_show		= rdtgroup_mondata_show,
>  };
>  
> +struct mon_config_info {
> +	u32 evtid;
> +	u32 mon_config;
> +};
> +
> +/*
> + * This is called via IPI to read the CQM/MBM counters
> + * in a domain.

This comment does not seem accurate - it is not reading the
actual counters but the configuration of the counters?

> + */
> +void mon_event_config_read(void *info)
> +{
> +	struct mon_config_info *mon_info = info;
> +	u32 h, msr_index;
> +
> +	switch (mon_info->evtid) {
> +	case QOS_L3_MBM_TOTAL_EVENT_ID:
> +		msr_index = 0;
> +		break;
> +	case QOS_L3_MBM_LOCAL_EVENT_ID:
> +		msr_index = 1;
> +		break;
> +	default:
> +		/* Not expected to come here */
> +		return;
> +	}
> +
> +	rdmsr(MSR_IA32_EVT_CFG_BASE + msr_index, mon_info->mon_config, h);
> +}
> +
> +void mondata_config_read(struct rdt_domain *d, struct mon_config_info *mon_info)
> +{
> +	smp_call_function_any(&d->cpu_mask, mon_event_config_read, mon_info, 1);
> +}
> +
> +int rdtgroup_mondata_config_show(struct seq_file *m, void *arg)
> +{
> +	struct kernfs_open_file *of = m->private;
> +	struct mon_config_info mon_info;

Could you please initialize this struct? I think this is important considering
that there is an (albeit unlikely) chance that uninitialized data can be returned
to user space.

> +	struct rdt_hw_resource *hw_res;
> +	u32 resid, evtid, domid;
> +	struct rdtgroup *rdtgrp;
> +	struct rdt_resource *r;
> +	union mon_data_bits md;
> +	struct rdt_domain *d;
> +	int ret = 0;
> +
> +	rdtgrp = rdtgroup_kn_lock_live(of->kn);
> +	if (!rdtgrp) {
> +		ret = -ENOENT;
> +		goto out;
> +	}
> +
> +	md.priv = of->kn->priv;
> +	resid = md.u.rid;
> +	domid = md.u.domid;
> +	evtid = md.u.evtid;
> +
> +	hw_res = &rdt_resources_all[resid];
> +	r = &hw_res->r_resctrl;
> +
> +	d = rdt_find_domain(r, domid, NULL);
> +	if (IS_ERR_OR_NULL(d)) {
> +		ret = -ENOENT;
> +		goto out;
> +	}
> +
> +	mon_info.evtid = evtid;
> +	mondata_config_read(d, &mon_info);
> +
> +	seq_printf(m, "0x%x\n", mon_info.mon_config);
> +
> +out:
> +	rdtgroup_kn_unlock(of->kn);
> +	return ret;
> +}
> +
>  static const struct kernfs_ops kf_mondata_config_ops = {
>  	.atomic_write_len       = PAGE_SIZE,
> +	.seq_show               = rdtgroup_mondata_config_show,
>  };
  
>  static bool is_cpu_list(struct kernfs_open_file *of)
> 
> 

Reinette

  reply	other threads:[~2022-09-16 15:59 UTC|newest]

Thread overview: 49+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-09-07 17:59 [PATCH v4 00/13] x86/resctrl: Support for AMD QoS new features and bug fix Babu Moger
2022-09-07 17:59 ` [PATCH v4 01/13] x86/resctrl: Fix min_cbm_bits for AMD Babu Moger
2022-09-09 17:00   ` James Morse
2022-09-12 14:54     ` Moger, Babu
2022-09-16 15:52       ` Reinette Chatre
2022-09-16 18:28         ` Moger, Babu
2022-09-16 15:53   ` Reinette Chatre
2022-09-16 18:31     ` Moger, Babu
2022-09-07 18:00 ` [PATCH v4 02/13] x86/resctrl: Remove arch_has_empty_bitmaps Babu Moger
2022-09-16 15:53   ` Reinette Chatre
2022-09-16 19:00     ` Moger, Babu
2022-09-07 18:00 ` [PATCH v4 03/13] x86/cpufeatures: Add Slow Memory Bandwidth Allocation feature flag Babu Moger
2022-09-16 15:54   ` Reinette Chatre
2022-09-16 19:02     ` Moger, Babu
2022-09-07 18:00 ` [PATCH v4 04/13] x86/resctrl: Add a new resource type RDT_RESOURCE_SMBA Babu Moger
2022-09-16 15:54   ` Reinette Chatre
2022-09-16 19:11     ` Moger, Babu
2022-09-07 18:00 ` [PATCH v4 05/13] x86/cpufeatures: Add Bandwidth Monitoring Event Configuration feature flag Babu Moger
2022-09-07 18:36   ` Daniel Sneddon
2022-09-07 19:59     ` Moger, Babu
2022-09-16 15:55   ` Reinette Chatre
2022-09-16 20:19     ` Moger, Babu
2022-09-07 18:00 ` [PATCH v4 06/13] x86/resctrl: Include new features in command line options Babu Moger
2022-09-16 15:55   ` Reinette Chatre
2022-09-16 20:22     ` Moger, Babu
2022-09-07 18:00 ` [PATCH v4 07/13] x86/resctrl: Detect and configure Slow Memory Bandwidth allocation Babu Moger
2022-09-07 18:00 ` [PATCH v4 08/13] x86/resctrl : Introduce data structure to support monitor configuration Babu Moger
2022-09-16 15:56   ` Reinette Chatre
2022-09-16 21:23     ` Moger, Babu
2022-09-07 18:01 ` [PATCH v4 09/13] x86/resctrl: Add sysfs interface files to read/write event configuration Babu Moger
2022-09-16 15:58   ` Reinette Chatre
2022-09-19 15:46     ` Moger, Babu
2022-09-19 16:42       ` Reinette Chatre
2022-09-19 20:26         ` Moger, Babu
2022-09-19 21:07           ` Reinette Chatre
2022-09-20 17:09             ` Moger, Babu
2022-09-07 18:01 ` [PATCH v4 10/13] x86/resctrl: Add the sysfs interface to read the " Babu Moger
2022-09-16 15:59   ` Reinette Chatre [this message]
2022-09-19 16:07     ` Moger, Babu
2022-09-07 18:01 ` [PATCH v4 11/13] x86/resctrl: Add sysfs interface to write " Babu Moger
2022-09-16 16:17   ` Reinette Chatre
2022-09-19 16:50     ` Moger, Babu
2022-09-07 18:01 ` [PATCH v4 12/13] x86/resctrl: Replace smp_call_function_many with on_each_cpu_mask Babu Moger
2022-09-16 16:17   ` Reinette Chatre
2022-09-16 20:38     ` Moger, Babu
2022-09-07 18:01 ` [PATCH v4 13/13] Documentation/x86: Update resctrl_ui.rst for new features Babu Moger
2022-09-08  4:07   ` Bagas Sanjaya
2022-09-08  9:26     ` Bagas Sanjaya
2022-09-08 13:40       ` 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=36f0466f-517e-050d-5fae-9325ec28ebd6@intel.com \
    --to=reinette.chatre@intel.com \
    --cc=akpm@linux-foundation.org \
    --cc=babu.moger@amd.com \
    --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=peterz@infradead.org \
    --cc=quic_neeraju@quicinc.com \
    --cc=rdunlap@infradead.org \
    --cc=sandipan.das@amd.com \
    --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.