All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Luck, Tony" <tony.luck@intel.com>
To: Reinette Chatre <reinette.chatre@intel.com>
Cc: Fenghua Yu <fenghuay@nvidia.com>,
	Maciej Wieczor-Retman <maciej.wieczor-retman@intel.com>,
	Peter Newman <peternewman@google.com>,
	James Morse <james.morse@arm.com>,
	Babu Moger <babu.moger@amd.com>,
	"Drew Fustini" <dfustini@baylibre.com>,
	Dave Martin <Dave.Martin@arm.com>, Chen Yu <yu.c.chen@intel.com>,
	<x86@kernel.org>, <linux-kernel@vger.kernel.org>,
	<patches@lists.linux.dev>
Subject: Re: [PATCH v11 06/31] x86,fs/resctrl: Use struct rdt_domain_hdr when reading counters
Date: Fri, 3 Oct 2025 15:59:30 -0700	[thread overview]
Message-ID: <aOBVUvy5p3915dKA@agluck-desk3> (raw)
In-Reply-To: <f5a80f3a-1aaa-4831-a9f1-7f3eca748dfe@intel.com>

On Fri, Oct 03, 2025 at 08:34:01AM -0700, Reinette Chatre wrote:
> Hi Tony,
> 
> On 9/25/25 1:03 PM, Tony Luck wrote:
> > Use a generic struct rdt_domain_hdr representing a generic domain
> > header in struct rmid_read in order to support other telemetry events'
> > domains besides an L3 one. Adjust the code interacting with it to the
> > new struct layout.
> 
> I'd propose a small amend to be more specific and not assume reader knows
> what rmid_read is used for:
> 
> 	struct rmid_read contains data passed around to read event counts. Use the
> 	generic domain header struct rdt_domain_hdr in struct rmid_read in order to
> 	support other telemetry events' domains besides an L3 one. Adjust the code
> 	interacting with it to the new struct layout.

Looks good. Thanks.

> 
> 
> > diff --git a/fs/resctrl/ctrlmondata.c b/fs/resctrl/ctrlmondata.c
> > index 3ceef35208be..7b9fc5d3bdc8 100644
> > --- a/fs/resctrl/ctrlmondata.c
> > +++ b/fs/resctrl/ctrlmondata.c
> > @@ -550,13 +550,8 @@ void mon_event_read(struct rmid_read *rr, struct rdt_resource *r,
> >  		    struct rdt_domain_hdr *hdr, struct rdtgroup *rdtgrp,
> >  		    cpumask_t *cpumask, int evtid, int first)
> >  {
> > -	struct rdt_mon_domain *d;
> >  	int cpu;
> >  
> > -	if (!domain_header_is_valid(hdr, RESCTRL_MON_DOMAIN, RDT_RESOURCE_L3))
> > -		return;
> > -	d = container_of(hdr, struct rdt_mon_domain, hdr);
> > -
> 
> Problematic snippet removed here ...
> 
Yup.

> >  	/* When picking a CPU from cpu_mask, ensure it can't race with cpuhp */
> >  	lockdep_assert_cpus_held();
> >  
> > @@ -566,7 +561,7 @@ void mon_event_read(struct rmid_read *rr, struct rdt_resource *r,
> >  	rr->rgrp = rdtgrp;
> >  	rr->evtid = evtid;
> >  	rr->r = r;
> > -	rr->d = d;
> > +	rr->hdr = hdr;
> >  	rr->first = first;
> >  	if (resctrl_arch_mbm_cntr_assign_enabled(r) &&
> >  	    resctrl_is_mbm_event(evtid)) {
> > diff --git a/fs/resctrl/monitor.c b/fs/resctrl/monitor.c
> > index 4076336fbba6..32116361a5f6 100644
> > --- a/fs/resctrl/monitor.c
> > +++ b/fs/resctrl/monitor.c
> > @@ -159,7 +159,7 @@ void __check_limbo(struct rdt_mon_domain *d, bool force_free)
> >  			break;
> >  
> >  		entry = __rmid_entry(idx);
> > -		if (resctrl_arch_rmid_read(r, d, entry->closid, entry->rmid,
> > +		if (resctrl_arch_rmid_read(r, &d->hdr, entry->closid, entry->rmid,
> >  					   QOS_L3_OCCUP_EVENT_ID, &val,
> >  					   arch_mon_ctx)) {
> >  			rmid_dirty = true;
> > @@ -424,8 +424,12 @@ static int __mon_event_count(struct rdtgroup *rdtgrp, struct rmid_read *rr)
> >  	int err, ret;
> >  	u64 tval = 0;
> >  
> > +	if (!domain_header_is_valid(rr->hdr, RESCTRL_MON_DOMAIN, RDT_RESOURCE_L3))
> > +		return -EINVAL;
> > +	d = container_of(rr->hdr, struct rdt_mon_domain, hdr);
> > +
> 
> ... but now the problem is moved to __mon_event_count() where rr->hdr can be NULL and the
> domain_header_is_valid() check is referencing NULL pointer when SNC is enabled?
> Am I missing something here? Does this work on SNC?

You are right. This likely breaks SNC.  I'll add a check for "!hdr" and
move this inside the "if (rr->is_mbm_cntr)" with a duplicate inside the
"if (rr->first)".  This duplication will be cleaned up with a later
patch to refactor __mon_event_count().
> 
> Reinette
> 

-Tony
> 

  reply	other threads:[~2025-10-03 22:59 UTC|newest]

Thread overview: 84+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-09-25 20:02 [PATCH v11 00/31] x86,fs/resctrl telemetry monitoring Tony Luck
2025-09-25 20:02 ` [PATCH v11 01/31] x86,fs/resctrl: Improve domain type checking Tony Luck
2025-10-03 15:28   ` Reinette Chatre
2025-09-25 20:02 ` [PATCH v11 02/31] x86/resctrl: Move L3 initialization into new helper function Tony Luck
2025-10-03 15:28   ` Reinette Chatre
2025-09-25 20:02 ` [PATCH v11 03/31] x86,fs/resctrl: Refactor domain_remove_cpu_mon() ready for new domain types Tony Luck
2025-10-03 15:29   ` Reinette Chatre
2025-09-25 20:02 ` [PATCH v11 04/31] x86/resctrl: Clean up domain_remove_cpu_ctrl() Tony Luck
2025-10-03 15:30   ` Reinette Chatre
2025-09-25 20:02 ` [PATCH v11 05/31] x86,fs/resctrl: Refactor domain create/remove using struct rdt_domain_hdr Tony Luck
2025-10-03 15:33   ` Reinette Chatre
2025-10-03 22:55     ` Luck, Tony
2025-10-06 21:32       ` Reinette Chatre
2025-09-25 20:03 ` [PATCH v11 06/31] x86,fs/resctrl: Use struct rdt_domain_hdr when reading counters Tony Luck
2025-10-03 15:34   ` Reinette Chatre
2025-10-03 22:59     ` Luck, Tony [this message]
2025-09-25 20:03 ` [PATCH v11 07/31] x86,fs/resctrl: Rename struct rdt_mon_domain and rdt_hw_mon_domain Tony Luck
2025-10-03 23:24   ` Reinette Chatre
2025-09-25 20:03 ` [PATCH v11 08/31] x86,fs/resctrl: Rename some L3 specific functions Tony Luck
2025-10-03 23:24   ` Reinette Chatre
2025-09-25 20:03 ` [PATCH v11 09/31] fs/resctrl: Make event details accessible to functions when reading events Tony Luck
2025-10-03 23:27   ` Reinette Chatre
2025-09-25 20:03 ` [PATCH v11 10/31] x86,fs/resctrl: Handle events that can be read from any CPU Tony Luck
2025-10-03 23:32   ` Reinette Chatre
2025-09-25 20:03 ` [PATCH v11 11/31] x86,fs/resctrl: Support binary fixed point event counters Tony Luck
2025-09-25 20:03 ` [PATCH v11 12/31] x86,fs/resctrl: Add an architectural hook called for each mount Tony Luck
2025-09-25 20:03 ` [PATCH v11 13/31] x86,fs/resctrl: Add and initialize rdt_resource for package scope monitor Tony Luck
2025-09-25 20:03 ` [PATCH v11 14/31] x86/resctrl: Discover hardware telemetry events Tony Luck
2025-10-03 23:35   ` Reinette Chatre
2025-10-06 18:19     ` Luck, Tony
2025-10-06 21:33       ` Reinette Chatre
2025-10-06 21:47         ` Luck, Tony
2025-10-07 20:47           ` Luck, Tony
2025-10-08 17:12             ` Reinette Chatre
2025-10-08 17:20               ` Luck, Tony
2025-09-25 20:03 ` [PATCH v11 15/31] x86,fs/resctrl: Fill in details of events for guid 0x26696143 and 0x26557651 Tony Luck
2025-09-25 20:03 ` [PATCH v11 16/31] x86,fs/resctrl: Add architectural event pointer Tony Luck
2025-10-03 23:38   ` Reinette Chatre
2025-09-25 20:03 ` [PATCH v11 17/31] x86/resctrl: Find and enable usable telemetry events Tony Luck
2025-10-03 23:52   ` Reinette Chatre
2025-10-06 19:58     ` Luck, Tony
2025-10-06 21:33       ` Reinette Chatre
2025-10-06 21:54         ` Luck, Tony
2025-09-25 20:03 ` [PATCH v11 18/31] fs/resctrl: Refactor L3 specific parts of __mon_event_count() Tony Luck
2025-10-03 23:56   ` Reinette Chatre
2025-09-25 20:03 ` [PATCH v11 19/31] x86/resctrl: Read telemetry events Tony Luck
2025-09-25 20:03 ` [PATCH v11 20/31] fs/resctrl: Refactor Sub-NUMA Cluster (SNC) in mkdir/rmdir code flow Tony Luck
2025-10-03 23:58   ` Reinette Chatre
2025-10-06 23:10     ` Luck, Tony
2025-10-08 17:12       ` Reinette Chatre
2025-10-08 21:15         ` Luck, Tony
2025-10-08 22:12           ` Reinette Chatre
2025-10-08 22:29             ` Luck, Tony
2025-10-09  2:16               ` Reinette Chatre
2025-10-09 17:45                 ` Luck, Tony
2025-10-09 20:29                   ` Reinette Chatre
2025-10-09 21:31                     ` Luck, Tony
2025-10-09 21:46                       ` Reinette Chatre
2025-10-09 22:08                         ` Luck, Tony
2025-10-10  0:16                           ` Reinette Chatre
2025-10-10  1:14                             ` Luck, Tony
2025-10-10  1:54                               ` Reinette Chatre
2025-09-25 20:03 ` [PATCH v11 21/31] x86/resctrl: Handle domain creation/deletion for RDT_RESOURCE_PERF_PKG Tony Luck
2025-10-04  0:00   ` Reinette Chatre
2025-09-25 20:03 ` [PATCH v11 22/31] x86/resctrl: Add energy/perf choices to rdt boot option Tony Luck
2025-09-25 20:03 ` [PATCH v11 23/31] x86/resctrl: Handle number of RMIDs supported by telemetry resources Tony Luck
2025-10-04  0:06   ` Reinette Chatre
2025-09-25 20:03 ` [PATCH v11 24/31] fs/resctrl: Move allocation/free of closid_num_dirty_rmid[] Tony Luck
2025-10-04  0:09   ` Reinette Chatre
2025-09-25 20:03 ` [PATCH v11 25/31] fs,x86/resctrl: Compute number of RMIDs as minimum across resources Tony Luck
2025-10-04  0:10   ` Reinette Chatre
2025-09-25 20:03 ` [PATCH v11 26/31] fs/resctrl: Move RMID initialization to first mount Tony Luck
2025-10-04  0:12   ` Reinette Chatre
2025-09-25 20:03 ` [PATCH v11 27/31] x86/resctrl: Enable RDT_RESOURCE_PERF_PKG Tony Luck
2025-10-04  0:23   ` Reinette Chatre
2025-09-25 20:03 ` [PATCH v11 28/31] fs/resctrl: Provide interface to create architecture specific debugfs area Tony Luck
2025-09-25 20:03 ` [PATCH v11 29/31] x86/resctrl: Add debugfs files to show telemetry aggregator status Tony Luck
2025-10-04  0:23   ` Reinette Chatre
2025-09-25 20:03 ` [PATCH v11 30/31] x86,fs/resctrl: Update Documentation for package events Tony Luck
2025-10-04  0:25   ` Reinette Chatre
2025-09-25 20:03 ` [PATCH v11 31/31] fs/resctrl: Some kerneldoc updates Tony Luck
2025-10-04  0:26   ` Reinette Chatre
2025-10-06 16:54     ` Luck, Tony
2025-10-06 21:34       ` Reinette Chatre

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=aOBVUvy5p3915dKA@agluck-desk3 \
    --to=tony.luck@intel.com \
    --cc=Dave.Martin@arm.com \
    --cc=babu.moger@amd.com \
    --cc=dfustini@baylibre.com \
    --cc=fenghuay@nvidia.com \
    --cc=james.morse@arm.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=maciej.wieczor-retman@intel.com \
    --cc=patches@lists.linux.dev \
    --cc=peternewman@google.com \
    --cc=reinette.chatre@intel.com \
    --cc=x86@kernel.org \
    --cc=yu.c.chen@intel.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 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.