All of lore.kernel.org
 help / color / mirror / Atom feed
From: Chen Yu <yu.c.chen@intel.com>
To: Reinette Chatre <reinette.chatre@intel.com>
Cc: <tony.luck@intel.com>, <tglx@kernel.org>, <bp@alien8.de>,
	<mingo@redhat.com>, <dave.hansen@linux.intel.com>,
	<hpa@zytor.com>, <fenghuay@nvidia.com>, <babu.moger@amd.com>,
	<hongyu.ning@intel.com>, <chen.yu@linux.dev>, <x86@kernel.org>,
	<linux-kernel@vger.kernel.org>
Subject: Re: [PATCH v9 07/12] x86/resctrl: Add a global ERDT monitor scale
Date: Tue, 27 Oct 2026 18:53:49 +0800	[thread overview]
Message-ID: <auCCvYQpfXj9CTgv@chenyu-dev> (raw)
In-Reply-To: <4e594656-b883-47c3-975c-087d10b98c74@intel.com>

On Fri, Oct 23, 2026 at 05:02:05PM -0700, Reinette Chatre wrote:
> Hi Chenyu,
> 
> On 10/13/26 7:59 PM, Chen Yu wrote:
> > The limbo handler polls the LLC occupancy of stale RMIDs and frees an RMID
> 
> "stale RMIDs"? This is a new concept unfamiliar to resctrl.
>

OK, changed to "limbo RMIDs".

> > once its occupancy drops below max_threshold_occupancy. User space writes
> 
> Please do not interchangeably use the name of the resctrl file and the variable
> that backs it because the variable that backs the file may not have the value
> that user space wrote to the file.
> 

OK, will use resctrl_rmid_realloc_threshold for the value the limbo handler
compares against, and only mentions "max_threshold_occupancy" as the file
userspace writes to.

> > that threshold in bytes, but the hardware counts occupancy in units of the
> > occupancy scale, so the threshold is rounded down to a multiple of that
> > scale. The scale is the number of bytes one counter unit represents, i.e.
> 
> This does not sound right, the threshold is explicitly noted as:
>  	"This is the threshold cache occupancy in *bytes* ..."
> 

Yes, the threshold is always in bytes, let me rephrase it:
The occupancy counter only has the granularity of its scale, the number of
bytes one counter unit represents, so resctrl_arch_round_mon_val() rounds the
written byte value down to a multiple of that scale before it is stored in
resctrl_rmid_realloc_threshold.

> > the granularity of the occupancy counter.
> > 
> > ERDT may provide per-domain monitoring scale factors, but resctrl rounds
> > max_threshold_occupancy through a single global
> > resctrl_rmid_realloc_threshold value that is visible to user space.
> > 
> > Prepare for that by adding erdt_scale/erdt_get_scale() and teaching
> 
> "Prepare for that" - Prepare for what?
>

Will remove this sentence after rearranging the patch sequence.

> > resctrl_arch_round_mon_val() to consult the ERDT scale when firmware has
> > populated one.
> > 
> > When CMRC parsing provides per-domain up_scale values, erdt_scale will be
> > updated with max(). The reason to use max is because rounding is a floor:
> > a larger scale yields a slightly lower threshold, i.e. an RMID has to
> > drop to a slightly lower occupancy before it is reused.
> > 
> > For now erdt_scale is intentionally left at its default value of 0.
> 
> This is a clear signal that the patch ordering needs to change.
>
> > +/*
> > + * Used only to round the global resctrl_rmid_realloc_threshold for the limbo
> > + * handler. resctrl_rmid_realloc_threshold is exposed to user space as a single
> > + * global value, so ERDT uses one scale derived from the per-domain
> > + * cmrc->up_scale values. max() keeps this single threshold conservative across
> > + * domains because the rounding is a floor: a larger scale yields a slightly
> > + * lower threshold, i.e. an RMID has to drop to a slightly lower occupancy
> > + * before it is reused.
> 
> This documents changes that do not exist at this point in series. Please reorder
> this patch to ensure its dependencies land first.
>

OK, will adjust this patch to include above max() logic and adjust the
patch sequence:
("x86/resctrl: Add the ERDT CMT scale") will be moved after
("x86/resctrl: Introduce erdt_cpu_has() and erdt_support()")
and before
("x86/resctrl: Add MMIO-based LLC occupancy monitoring support")

> > + */
> > +static unsigned int erdt_scale;
> > +
> > +unsigned int erdt_get_scale(void)
> > +{
> > +	return erdt_scale;
> 
> The name and usage implies that this is a global scale. This will become more confusing
> when trying to land the memory bandwidth monitoring changes that have separate scale values.
> 
> Having this change pretend it is a global change and then add a snippet to final
> patch to constrain it with a "if (!erdt_cpu_has(X86_FEATURE_CQM_OCCUP_LLC))" just makes
> this work difficult to consume. 
> 
> If this is specific to the CMT scale only then let the global variable and its accessor
> make that obvious. Let this change land after the CMRC parsing and erdt_cpu_has()
> introduction so that it can be introduced as one coherent change.
>

OK, adjusted the patch sequence as suggested.

> >  
> >  unsigned int resctrl_arch_round_mon_val(unsigned int val)
> >  {
> > -	unsigned int scale = boot_cpu_data.x86_cache_occ_scale;
> > +	unsigned int scale = erdt_get_scale();
> > +
> > +	if (!scale)
> > +		scale = boot_cpu_data.x86_cache_occ_scale;
> >  
> >  	/* h/w works in units of "boot_cpu_data.x86_cache_occ_scale" */
> 
> The fixup of this comment found in patch #12 needs to be squashed here.
>

OK, will do.

thanks,
Chenyu

  reply	other threads:[~2026-10-27 11:06 UTC|newest]

Thread overview: 37+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-10-14  2:56 [PATCH v9 00/12] Introduce MMIO-based CMT access for Enhanced RDT Chen Yu
2026-10-14  2:57 ` [PATCH v9 01/12] x86/topology: Export topo_lookup_cpuid() for resctrl use Chen Yu
2026-10-14  2:58 ` [PATCH v9 02/12] x86/resctrl: Require 64-bit x86 for resctrl support Chen Yu
2026-10-23 23:46   ` Reinette Chatre
2026-10-27  7:54     ` Chen Yu
2026-10-14  2:58 ` [PATCH v9 03/12] x86/resctrl: Parse ACPI ERDT table and save CACD cpumask per RMD Chen Yu
2026-10-23 23:50   ` Reinette Chatre
2026-10-27  8:14     ` Chen Yu
2026-10-14  2:58 ` [PATCH v9 04/12] x86/resctrl: Do not enable ERDT when Sub-NUMA Cluster is enabled Chen Yu
2026-10-23 23:54   ` Reinette Chatre
2026-10-27  8:54     ` Chen Yu
2026-10-27 16:16       ` Reinette Chatre
2026-10-28  2:44         ` Chen Yu
2026-10-14  2:58 ` [PATCH v9 05/12] x86/resctrl: Attach ACPI ERDT information to L3 mon domain on CPU online Chen Yu
2026-10-23 23:57   ` Reinette Chatre
2026-10-24  0:37     ` Reinette Chatre
2026-10-27 10:36     ` Chen Yu
2026-10-27 16:17       ` Reinette Chatre
2026-10-28  2:57         ` Chen Yu
2026-10-14  2:59 ` [PATCH v9 06/12] x86,fs/resctrl: Move resctrl_arch_round_mon_val() out of line Chen Yu
2026-10-23 23:59   ` Reinette Chatre
2026-10-27 10:39     ` Chen Yu
2026-11-03 20:38   ` Ben Horgan
2026-11-04  3:00     ` Chen Yu
2026-10-14  2:59 ` [PATCH v9 07/12] x86/resctrl: Add a global ERDT monitor scale Chen Yu
2026-10-24  0:02   ` Reinette Chatre
2026-10-27 10:53     ` Chen Yu [this message]
2026-10-14  2:59 ` [PATCH v9 08/12] x86/resctrl: Parse ACPI CMRC table Chen Yu
2026-10-14  3:00 ` [PATCH v9 09/12] x86/resctrl: Refactor the monitor read function Chen Yu
2026-10-14  3:00 ` [PATCH v9 10/12] fs/resctrl: Do not invoke smp_processor_id() in preemptible context Chen Yu
2026-10-14  3:00 ` [PATCH v9 11/12] x86/resctrl: Introduce erdt_cpu_has() and erdt_support() Chen Yu
2026-10-14  3:01 ` [PATCH v9 12/12] x86/resctrl: Add MMIO-based LLC occupancy monitoring support Chen Yu
2026-10-24  0:08   ` Reinette Chatre
2026-10-27 11:22     ` Chen Yu
2026-10-27 16:21       ` Reinette Chatre
2026-10-28  2:59         ` Chen Yu
2026-10-19 12:45 ` [PATCH v9 00/12] Introduce MMIO-based CMT access for Enhanced RDT Chen Yu

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=auCCvYQpfXj9CTgv@chenyu-dev \
    --to=yu.c.chen@intel.com \
    --cc=babu.moger@amd.com \
    --cc=bp@alien8.de \
    --cc=chen.yu@linux.dev \
    --cc=dave.hansen@linux.intel.com \
    --cc=fenghuay@nvidia.com \
    --cc=hongyu.ning@intel.com \
    --cc=hpa@zytor.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mingo@redhat.com \
    --cc=reinette.chatre@intel.com \
    --cc=tglx@kernel.org \
    --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.