public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
From: Tony Luck <tony.luck@intel.com>
To: Reinette Chatre <reinette.chatre@intel.com>
Cc: Fenghua Yu <fenghua.yu@intel.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>,
	x86@kernel.org, linux-kernel@vger.kernel.org,
	patches@lists.linux.dev
Subject: Re: [PATCH v18 15/17] x86/resctrl: Fix RMID reading sanity check for Sub-NUMA (SNC) mode
Date: Wed, 22 May 2024 16:47:23 -0700	[thread overview]
Message-ID: <Zk6EC12hC0wzPiIu@agluck-desk3.sc.intel.com> (raw)
In-Reply-To: <61e89a48-d1f4-49f2-8893-950e7e6ba7fe@intel.com>

On Wed, May 22, 2024 at 02:25:23PM -0700, Reinette Chatre wrote:
> > +		/*
> > +		 * SNC: OK to read events on any CPU sharing same L3
> > +		 * cache instance.
> > +		 */
> > +		if (d->display_id != get_cpu_cacheinfo_id(smp_processor_id(),
> > +							  r->mon_display_scope))
> 
> By hardcoding that mon_display_scope is a cache instead of using get_domain_id_from_scope()
> it seems that all pretending about being generic has just been abandoned at this point.

Yes. It now seems like a futile quest to make this look
like something generic.  All this code is operating on the
rdt_resources_all[RDT_RESOURCE_L3] resource (which by its very name is
"L3" scoped). In the SNC case the L3 has been divided (in some senses,
but not all) into nodes.

Given that pretending isn't working ... just be explicit?

Some "thinking aloud" follows ...

struct rdt_resource:
    In order to track monitor events, resctrl must build a domain list based
    on the smallest measurement scope. So with SNC enabled, that is the
    node. With it disabled it is L3 cache scope (which on existing systems
    is the same as node scope).

    Maybe keep .mon_scope with the existing name, but define it to be the
    minimum measurement scope and use it to build domains. So it
    defaults to RESCTRL_L3_CACHE but SNC detection will rewrite it to
    RESCTRL_L3_NODE.

    Drop the .mon_display_scope field. By definition it must always have
    the value RESCTRL_L3_CACHE. So replace checks that compare values
    rdt_resources_all[RDT_RESOURCE_L3] of .mon_scope & .mon_display_scope
    with:

    	if (r->mon_scope != RESCTRL_L3_CACHE)
    		// SNC stuff
    	else
    		// regular stuff

struct rdt_mon_domain:
    In the rdt_mon_domain rename the display_id field with the more
    honest name "l3_cache_id".  In addition save a pointer to the
    .shared_cpu_map of the L3 cache. When SNC is off, this will be the
    same as the d->hdr.cpu_mask for the domain. For SNC on it will be
    a superset (encompassing all the bits from cpu_masks in all domains
    that share an L3 instance).

    Where SNC specifc code is required, the check becomes:

    	if (d->hdr.id != d->l3_cache_id)
		// SNC stuff
	else
		// regular stuff

    The l3_cache_id can be used in mkdir code to make the mon_L3_XX
    directories. The L3 .shared_cpu_map in picking a CPU to read
    the counters for the "sum" files. l3_cache_id also indicates
    which domains should be summed.


Does this look like a useful direction to pursue?

-Tony

  reply	other threads:[~2024-05-22 23:47 UTC|newest]

Thread overview: 42+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-05-15 22:23 [PATCH v18 00/17] Add support for Sub-NUMA cluster (SNC) systems Tony Luck
2024-05-15 22:23 ` [PATCH v18 01/17] x86/resctrl: Prepare for new domain scope Tony Luck
2024-05-15 22:23 ` [PATCH v18 02/17] x86/resctrl: Prepare to split rdt_domain structure Tony Luck
2024-05-15 22:23 ` [PATCH v18 03/17] x86/resctrl: Prepare for different scope for control/monitor operations Tony Luck
2024-05-15 22:23 ` [PATCH v18 04/17] x86/resctrl: Split the rdt_domain and rdt_hw_domain structures Tony Luck
2024-05-15 22:23 ` [PATCH v18 05/17] x86/resctrl: Add node-scope to the options for feature scope Tony Luck
2024-05-15 22:23 ` [PATCH v18 06/17] x86/resctrl: Introduce snc_nodes_per_l3_cache Tony Luck
2024-05-22 21:08   ` Reinette Chatre
2024-05-23 19:04     ` Luck, Tony
2024-05-23 20:56       ` Reinette Chatre
2024-05-23 21:25         ` Luck, Tony
2024-05-23 22:31           ` Reinette Chatre
2024-05-23 23:18             ` Luck, Tony
2024-05-23 23:48               ` Reinette Chatre
2024-05-15 22:23 ` [PATCH v18 07/17] x86/resctrl: Prepare for new Sub-NUMA (SNC) cluster monitor files Tony Luck
2024-05-22 21:12   ` Reinette Chatre
2024-05-15 22:23 ` [PATCH v18 08/17] x86/resctrl: Add and initialize display_id field to struct rdt_mon_domain Tony Luck
2024-05-22 21:13   ` Reinette Chatre
2024-05-15 22:23 ` [PATCH v18 09/17] x86/resctrl: Add new fields to struct rmid_read for summation of domains Tony Luck
2024-05-22 21:14   ` Reinette Chatre
2024-05-15 22:23 ` [PATCH v18 10/17] x86/resctrl: Refactor mkdir_mondata_subdir() with a helper function Tony Luck
2024-05-22 21:15   ` Reinette Chatre
2024-05-15 22:23 ` [PATCH v18 11/17] x86/resctrl: Allocate a new bit in union mon_data_bits Tony Luck
2024-05-22 21:16   ` Reinette Chatre
2024-05-15 22:23 ` [PATCH v18 12/17] x86/resctrl: Create Sub-NUMA (SNC) monitor files Tony Luck
2024-05-22 21:19   ` Reinette Chatre
2024-05-15 22:23 ` [PATCH v18 13/17] x86/resctrl: Handle removing directories in Sub-NUMA (SNC) mode Tony Luck
2024-05-22 21:20   ` Reinette Chatre
2024-05-15 22:23 ` [PATCH v18 14/17] x86/resctrl: Sum monitor data acrss Sub-NUMA (SNC) nodes when needed Tony Luck
2024-05-22 21:24   ` Reinette Chatre
2024-05-15 22:23 ` [PATCH v18 15/17] x86/resctrl: Fix RMID reading sanity check for Sub-NUMA (SNC) mode Tony Luck
2024-05-16  8:59   ` Maciej Wieczor-Retman
2024-05-22 21:25   ` Reinette Chatre
2024-05-22 23:47     ` Tony Luck [this message]
2024-05-23 17:03       ` Reinette Chatre
2024-05-15 22:23 ` [PATCH v18 16/17] x86/resctrl: Sub NUMA Cluster detection and enable Tony Luck
2024-05-22 21:26   ` Reinette Chatre
2024-05-15 22:23 ` [PATCH v18 17/17] x86/resctrl: Update documentation with Sub-NUMA cluster changes Tony Luck
2024-05-16  8:57   ` Maciej Wieczor-Retman
2024-05-22 21:27   ` Reinette Chatre
2024-05-16  9:28 ` [PATCH v18 00/17] Add support for Sub-NUMA cluster (SNC) systems Maciej Wieczor-Retman
2024-05-16 15:52   ` Luck, Tony

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=Zk6EC12hC0wzPiIu@agluck-desk3.sc.intel.com \
    --to=tony.luck@intel.com \
    --cc=Dave.Martin@arm.com \
    --cc=babu.moger@amd.com \
    --cc=dfustini@baylibre.com \
    --cc=fenghua.yu@intel.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 \
    /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