All of lore.kernel.org
 help / color / mirror / Atom feed
From: Reinette Chatre <reinette.chatre@intel.com>
To: "Chen, Yu C" <yu.c.chen@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>,
	<chen.yu@linux.dev>, <x86@kernel.org>,
	<linux-kernel@vger.kernel.org>
Subject: Re: [PATCH v6 9/9] x86/resctrl: Add MMIO-based LLC occupancy monitoring support
Date: Tue, 25 Aug 2026 10:10:57 -0700	[thread overview]
Message-ID: <fac4af12-7004-4912-871f-98ae7163c297@intel.com> (raw)
In-Reply-To: <7cb2f870-1358-467e-9406-80ec41d8a8c0@intel.com>

Hi Chenyu,

On 8/25/26 9:11 AM, Chen, Yu C wrote:
> On 8/20/2026 7:10 AM, Reinette Chatre wrote:
>> On 7/25/26 2:23 AM, Chen Yu wrote:
>>> Add erdt_mon_read() to read LLC occupancy via MMIO and use it when
>>> the platform supports ERDT. Register the L3 occupancy event with
>>> ERDT enabled when available, falling back to the MSR-based path
>>> otherwise.
>>>
>>> Use the CMRC (Cache Monitoring Registers for CPU Agents Description)
>>> ACPI sub-table to read LLC occupancy counters for each RMID via MMIO
>>> when ERDT is enabled. This CMRC information is stored in the
>>> rdt_hw_l3_mon_domain, which could be accessed directly.
>>
>> Please write in imperative tone.
>>
> 
> OK, let me try to rewrite it(I suppose you were refereeing to:
> This CMRC information is stored -> Store the CMRC information)

I was, yes.

> 
>>>
>>> Currently, the per-domain limbo handler is still in use. There is no need
>>> to switch to a global limbo handler, because even after such a switch, the
>>> worker thread would still have to iterate through all domains one by one.
>>> The per-domain handler already accomplishes this using a worker thread rather
>>> than costly IPIs, so there is no clear benefit to switching to a global handler.
>>
>> Could you please elaborate how a global limbo handler would require IPIs?
>>
> 
> The global limbo handler does not require IPIs. Previously, I wondered what the
> benefit would be of switching from a per-domain limbo handler to a global one.
> 
> per-domain handler:
> N workers, each worker calculates the current occupancy of that domain
> for a rmid. If the occupancy of all the domains drops below the threshold,
> recycle that rmid. No IPI involved.
> 
> global handler:
> One worker iterates over every domain. If the occupancy of all domains drops
> below the threshold, it recycles the RMID - with no IPI involved.
> 
> For both the per-domain and the global handler, no IPI is involved, and
> we still have to iterate over every domain. So it seems that there is not much
> benefit in switching to the global handler, IIUC.

There is still 1 vs N threads to consider but to me it is also not clear
whether it justifies the complication of supporting two thread models.

> 
>>> diff --git a/arch/x86/include/asm/resctrl.h b/arch/x86/include/asm/resctrl.h
>>> index 5491853113dd..0948f64856ef 100644
>>> --- a/arch/x86/include/asm/resctrl.h
>>> +++ b/arch/x86/include/asm/resctrl.h
>>> @@ -132,7 +132,13 @@ static inline void __resctrl_sched_in(struct task_struct *tsk)
>>>     static inline unsigned int resctrl_arch_round_mon_val(unsigned int val)
>>>   {
>>> -    unsigned int scale = boot_cpu_data.x86_cache_occ_scale;
>>> +    unsigned int scale = boot_cpu_data.x86_cache_occ_scale, escale;
>>
>> related to earlier topic, "scale" being unsigned int is ok since
>> x86_cache_occ_scale is initialized from 32bits. As I understand it the
>> ERDT scale value is initialized from 64 bits instead so the existing
>> types do not seem to accommodate?
>>
> 
> As you mentioned in another thread, there seems to be an inconsistency
> in the spec, I'll check with the team.
> 
>>>   @@ -39,6 +43,9 @@ static int erdt_scale;
>>>     bool erdt_support(int flag)
>>>   {
>>> +    if (flag == X86_FEATURE_CQM_OCCUP_LLC)
>>> +        return valid_subtbl_mask & BIT(ACPI_ERDT_TYPE_CMRC);
>>> +
>>
>> Is the plan to keep adding more if() statements as new flags need to be tested?
>>
>>
> 
> Yes. For example, to also support MBM:
> 
>      if (flag == X86_FEATURE_CQM_OCCUP_LLC)
>          return valid_subtbl_mask & BIT(ACPI_ERDT_TYPE_CMRC);
> 
>     if (flag == X86_FEATURE_CQM_MBM_TOTAL)
>         return valid_subtbl_mask & BIT(ACPI_ERDT_TYPE_MMRC);
> 

Your example makes it clear that the possible values of @flag are mutually exclusive.
The sequential evaluation as above is not optimal. Every if() needs to be evaluated
until the match is found. I would suggest that this uses switch() instead.

Reinette

  reply	other threads:[~2026-08-25 17:12 UTC|newest]

Thread overview: 50+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-07-25  9:20 [PATCH v6 0/9] Introduce MMIO-based CMT access for Enhanced RDT Chen Yu
2026-07-25  9:22 ` [PATCH v6 1/9] x86/topology: Export topo_lookup_cpuid() for resctrl use Chen Yu
2026-08-19 22:55   ` Reinette Chatre
2026-08-22  4:16     ` Chen Yu
2026-07-25  9:22 ` [PATCH v6 2/9] x86/resctrl: Require 64-bit x86 for resctrl support Chen Yu
2026-08-19 22:55   ` Reinette Chatre
2026-08-20 15:20     ` Luck, Tony
2026-08-20 15:54       ` Reinette Chatre
2026-08-20 17:01         ` Luck, Tony
2026-08-20 17:12           ` Dave Hansen
2026-08-20 17:48             ` Reinette Chatre
2026-08-21  2:37               ` Borislav Petkov
2026-08-21 15:47                 ` Reinette Chatre
2026-08-21 15:54                   ` Borislav Petkov
2026-08-25 13:12                   ` Chen Yu
2026-08-24 14:18                     ` Dave Hansen
2026-08-24 15:15                       ` Chen, Yu C
2026-08-25  2:40                       ` Borislav Petkov
2026-08-21 11:28             ` Peter Zijlstra
2026-08-21 15:52               ` Borislav Petkov
2026-08-21 16:58                 ` Luck, Tony
2026-08-22  0:04                   ` Borislav Petkov
2026-07-25  9:22 ` [PATCH v6 3/9] x86/resctrl: Parse ACPI ERDT table and save CACD cpumask for RMDD domains Chen Yu
2026-08-19 23:01   ` Reinette Chatre
2026-08-25  8:06     ` Chen Yu
2026-08-24 15:54       ` Reinette Chatre
2026-08-25 16:18         ` Chen, Yu C
2026-07-25  9:23 ` [PATCH v6 4/9] x86/resctrl: Attach ACPI ERDT information to L3 mon domain on CPU online Chen Yu
2026-08-19 23:04   ` Reinette Chatre
2026-08-25  5:54     ` Chen, Yu C
2026-07-25  9:23 ` [PATCH v6 5/9] x86/resctrl: Parse ACPI CMRC table Chen Yu
2026-08-19 23:06   ` Reinette Chatre
2026-08-25  9:19     ` Chen, Yu C
2026-08-25 15:39       ` Reinette Chatre
2026-08-25 16:11         ` Chen, Yu C
2026-08-25 16:38           ` Luck, Tony
2026-07-25  9:23 ` [PATCH v6 6/9] x86/resctrl: Refactor the monitor read function Chen Yu
2026-08-19 23:07   ` Reinette Chatre
2026-08-25 10:03     ` Chen, Yu C
2026-07-25  9:23 ` [PATCH v6 7/9] fs/resctrl: Do not invoke smp_processor_id() in preemptible context Chen Yu
2026-08-19 23:08   ` Reinette Chatre
2026-08-25 11:17     ` Chen, Yu C
2026-07-25  9:23 ` [PATCH v6 8/9] x86/resctrl: Introduce erdt_cpu_has() and erdt_support() Chen Yu
2026-08-19 23:08   ` Reinette Chatre
2026-08-25 11:55     ` Chen, Yu C
2026-07-25  9:23 ` [PATCH v6 9/9] x86/resctrl: Add MMIO-based LLC occupancy monitoring support Chen Yu
2026-08-19 23:10   ` Reinette Chatre
2026-08-25 16:11     ` Chen, Yu C
2026-08-25 17:10       ` Reinette Chatre [this message]
2026-08-13  6:43 ` [PATCH v6 0/9] 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=fac4af12-7004-4912-871f-98ae7163c297@intel.com \
    --to=reinette.chatre@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=hpa@zytor.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mingo@redhat.com \
    --cc=tglx@kernel.org \
    --cc=tony.luck@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.