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: Borislav Petkov <bp@alien8.de>,
	Thomas Gleixner <tglx@linutronix.de>,
	"Dave Hansen" <dave.hansen@linux.intel.com>,
	Peter Newman <peternewman@google.com>,
	"x86@kernel.org" <x86@kernel.org>,
	"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
	Ben Horgan <ben.horgan@arm.com>,
	James Morse <james.morse@arm.com>,
	Fenghua Yu <fenghuay@nvidia.com>, Tony Luck <tony.luck@intel.com>,
	Dave Martin <Dave.Martin@arm.com>,
	Babu Moger <babu.moger@amd.com>,
	Drew Fustini <fustini@kernel.org>,
	"chen.yu@linux.dev" <chen.yu@linux.dev>
Subject: Re: [RFC] mpam,x86,fs/resctrl: Generic schema description Proof of Concept
Date: Fri, 17 Jul 2026 09:55:30 -0700	[thread overview]
Message-ID: <87e4ca90-01bb-47e9-8892-0d2d56468bc0@intel.com> (raw)
In-Reply-To: <4b297b46-995b-4b94-9fb0-bd69276dc957@intel.com>

Hi Chenyu,

On 7/17/26 9:02 AM, Chen, Yu C wrote:
> Hi Reinette,
> 
> On 7/17/2026 12:04 AM, Reinette Chatre wrote:
>> Hi Ben, Chenyu, and Tony,
>>
> 
> [ ... ]
> 
>>>>> Alternatively, could the "mode" file be used to switch between "MB" and "MB_MAX" and the two never
>>>>> need be shown at the same time. The user opts in to using the new interface, "MB_MAX" by setting
>>>>> "mode" and can just toggle back if they want to use "MB" directly again.
> 
> Would this approach also work for region‑aware MBA, where a "mode" file is used to
> toggle between "MB" and "MB_REGIONx_MAX", ensuring that the two are never displayed
> simultaneously in the schemata?

The goal is indeed for this approach to work for all features we are currently
aware of. Please do point out if it does not.

> 
> [ ... ]
> 
>> RDT region aware when using MSR interface for legacy controls
>> =============================================================
> 
> Do you mean there is a requirement to use the MSR interface when region‑aware
> MMIO is available? My thought was that, if fine‑grained control(like MMIO) is
> available, it would be good to always let the fine‑grained control emulate the
> legacy one.

resctrl makes no requirement to use MSR interface when region-aware MMIO is available.
 
> And I'm trying to figure out the definition of "legacy controls":
> Previously I thought that "legacy control" means using the existing MB interface
> in the schemata to change the percentage value. That is to say, no matter whether
> the underlying mechanism is based on MSR or MMIO, it is transparent to the
> resctrl user.

That is correct.

> 
> For example, if the mode is "legacy", and user writes "MB:0=50" to the schemata
> file,
> 1. If that platform only supports the MSR interface, then it will be translated
> into an MSR write. Or,
> 2. If that platform supports MMIO access (i.e., the ACPI table is available),
> we convert 50 into 50 × 255 / 100, and write it to the MMIO address. In this way,
> the user still sees the "legacy" interface.

The requirement here is that when user space writes, as in your example,
"MB:0=50" then user space expects 50% bandwidth allocation. The underlying hardware
MMIO control could be used if there exists a conversion from percentage memory bandwidth
to the underlying hardware control value. I do not believe such conversion exists for
all hardware that support the MMIO interface. Specifically, from what I understand,
50 × 255 / 100 in MMIO cannot be guaranteed to represent 50% memory bandwidth? On
systems where such conversion can be made it is indeed possible to use MMIO for
the legacy "MB" control.

>> 1) System default
>>
>> info hierarchy
>> --------------
>> info/
>> └── MB/
>>      └── schemata/
>>          ├── MB/
>>          │   ├── MB_REGION0_MAX/
>>          │   │   └── status:disabled
>>          │   ├── MB_REGION1_MAX/
>>          │   │   └── status:disabled
>>          │   ├── MB_REGION2_MAX/
>>          │   │   └── status:disabled
>>          │   ├── MB_REGION3_MAX/
>>          │   │   └── status:disabled
>>          │   └── status:enabled
>>          └── mode:[legacy] native
>>
>> schemata file
>> -------------
>> MB:...
>>
>> 2) User space switches to fine grained controls
>>
>> # echo "native" > /sys/fs/resctrl/info/MB/schemata/mode
>>
>> info hierarchy
>> --------------
>> info/
>> └── MB/
>>      └── schemata/
>>          ├── MB/
>>          │   ├── MB_REGION0_MAX/
>>          │   │   └── status:enabled
>>          │   ├── MB_REGION1_MAX/
>>          │   │   └── status:enabled
>>          │   ├── MB_REGION2_MAX/
>>          │   │   └── status:enabled
>>          │   ├── MB_REGION3_MAX/
>>          │   │   └── status:enabled
>>          │   └── status:disabled
>>          └── mode:legacy [native]
>>
>> schemata file
>> -------------
>> MB_REGION0_MAX:...
>> MB_REGION1_MAX:...
>> MB_REGION2_MAX:...
>> MB_REGION3_MAX:...
>>
>>
> 
> If I understand correctly, the "enable/disable" knobs are used to decide
> whether to display this  control in the schemata file. If we make legacy
> and native exclusive, do we still need the "enable/disable" knob?

Indeed. If the controls are exclusive then the "enable/disable" knobs 
are not required to force them to be exclusive (but also see below).

There may still be scenarios where controls need to be enabled explicitly and
thus a need to keep the enable/disable knob. Here I am thinking about, for
example, in MPAM that controls could be enabled/disabled (like MPAMCFG_MBW_PROP.EN for
proportional-stride partitioning).

> 
> On a platform where MSR/MMIO are both available:
> 
> 1) System default
> 
>  info hierarchy
>  --------------
>  info/
>  └── MB/
>       └── schemata/
>           ├── MB/
>           │   ├── MB_REGION0_MAX/
>           │   ├── MB_REGION1_MAX/
>           │   ├── MB_REGION2_MAX/
>           │   ├── MB_REGION3_MAX/
>           └── mode:[legacy] native
> 
>  schemata file
>  -------------
>  MB:...
> 
>  2) User space switches to fine grained controls
> 
>  # echo "native" > /sys/fs/resctrl/info/MB/schemata/mode
> 
>  info hierarchy
>  --------------
>  info/
>  └── MB/
>       └── schemata/
>           ├── MB/
>           │   ├── MB_REGION0_MAX/
>           │   ├── MB_REGION1_MAX/
>           │   ├── MB_REGION2_MAX/
>           │   ├── MB_REGION3_MAX/
>           └── mode:legacy [native]
> 
>  schemata file
>  -------------
>  MB_REGION0_MAX:...
>  MB_REGION1_MAX:...
>  MB_REGION2_MAX:...
>  MB_REGION3_MAX:...
> 
> 

Above looks to be where resctrl is headed at the moment. It may still
be helpful to keep the "enable/disable" knobs to describe to user space
when emulation is active. Specifically, when mode is "legacy" then there
could be two region-aware scenarios: use MSR directly or use MMIO to emulate.
Having the "enable/disable" knob will help to distinguish these two scenarios.

Reinette

  reply	other threads:[~2026-07-17 16:55 UTC|newest]

Thread overview: 94+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-05-29 18:06 [RFC] mpam,x86,fs/resctrl: Generic schema description Proof of Concept Reinette Chatre
2026-06-02 20:23 ` Babu Moger
2026-06-02 22:56   ` Reinette Chatre
2026-06-03  1:14     ` Moger, Babu
2026-06-03  3:55       ` Reinette Chatre
2026-06-03 14:40         ` Babu Moger
2026-06-02 23:32 ` Chen, Yu C
2026-06-03  3:45   ` Reinette Chatre
2026-06-03 11:53     ` Chen, Yu C
2026-06-04 16:37       ` Reinette Chatre
2026-06-05 15:43         ` Chen, Yu C
2026-06-05 16:20           ` Reinette Chatre
2026-06-03 15:15 ` Ben Horgan
2026-06-03 19:34   ` Drew Fustini
2026-06-04 11:24     ` Ben Horgan
2026-06-04 17:38       ` Drew Fustini
2026-06-12  1:30         ` Shaopeng Tan (Fujitsu)
2026-06-17 15:29           ` Reinette Chatre
2026-06-19  1:42             ` Shaopeng Tan (Fujitsu)
2026-06-22 16:10               ` Reinette Chatre
2026-06-23  5:04                 ` Shaopeng Tan (Fujitsu)
2026-06-04 21:05     ` Reinette Chatre
2026-06-05 19:35       ` Drew Fustini
2026-06-06  5:10         ` Drew Fustini
2026-06-06  5:23           ` Drew Fustini
2026-06-04 17:43   ` Reinette Chatre
2026-06-05 14:53     ` Ben Horgan
2026-06-05 15:39       ` Reinette Chatre
2026-06-05 16:37         ` Ben Horgan
2026-06-08 16:16           ` Reinette Chatre
2026-06-09 10:10             ` Ben Horgan
2026-06-09 15:28               ` Reinette Chatre
2026-06-09 16:37                 ` Ben Horgan
2026-06-09 17:41                   ` Reinette Chatre
2026-06-10  7:09                     ` Chen, Yu C
2026-06-10 14:27                       ` Chen, Yu C
2026-06-10 16:13                         ` Reinette Chatre
2026-06-10 17:57                           ` Chen, Yu C
2026-06-10 18:10                             ` Reinette Chatre
2026-06-10 15:59                       ` Reinette Chatre
2026-06-10 18:05                         ` Chen, Yu C
2026-06-11  3:26                         ` Chen, Yu C
2026-06-11 15:45                           ` Reinette Chatre
2026-06-26 15:46                             ` Chen, Yu C
2026-07-02 14:27                               ` Ben Horgan
2026-07-03  9:01                                 ` Chen, Yu C
2026-07-14 21:37                               ` Reinette Chatre
2026-07-15  2:49                                 ` Chen, Yu C
2026-06-10  4:31                 ` Drew Fustini
2026-06-10 15:14                   ` Reinette Chatre
2026-06-03 18:46 ` Luck, Tony
2026-06-04 10:02   ` Ben Horgan
2026-06-04 21:42   ` Reinette Chatre
2026-07-08 12:56     ` Chen, Yu C
2026-07-14 21:39       ` Reinette Chatre
2026-06-03 22:14 ` Drew Fustini
2026-06-04 21:47   ` Reinette Chatre
2026-06-05 19:48     ` Drew Fustini
2026-06-15 21:05 ` Moger, Babu
2026-06-17 17:18   ` Reinette Chatre
2026-06-17 20:29     ` Babu Moger
2026-06-24 19:08 ` Fenghua Yu
2026-06-24 22:22   ` Reinette Chatre
2026-06-25  1:26     ` Fenghua Yu
2026-06-25 15:43       ` Reinette Chatre
2026-07-10 20:59         ` Fenghua Yu
2026-07-14 22:06           ` Reinette Chatre
2026-07-15  8:34             ` Ben Horgan
2026-07-15 15:41               ` Reinette Chatre
2026-07-16 14:59                 ` Ben Horgan
2026-07-16 16:02                   ` Luck, Tony
2026-07-16 16:22                     ` Ben Horgan
2026-07-16 17:50                       ` Reinette Chatre
2026-07-17 10:27                         ` Ben Horgan
2026-07-16 16:04                   ` Reinette Chatre
2026-07-16 16:44                     ` Ben Horgan
2026-07-16 17:07                       ` Reinette Chatre
2026-07-17 12:20                         ` Ben Horgan
2026-07-17 16:00                           ` Reinette Chatre
2026-07-20 13:30                             ` Ben Horgan
2026-07-20 22:54                               ` Reinette Chatre
2026-07-21 13:23                                 ` Ben Horgan
2026-07-21 17:30                                   ` Reinette Chatre
2026-07-21 20:02                                     ` Babu Moger
2026-07-22 10:47                                       ` Ben Horgan
2026-07-22 17:02                                         ` Babu Moger
2026-07-22 10:03                                     ` Ben Horgan
2026-07-22 16:32                                       ` Reinette Chatre
2026-07-17 16:02                     ` Chen, Yu C
2026-07-17 16:55                       ` Reinette Chatre [this message]
2026-07-23  0:17             ` Fenghua Yu
2026-07-02 13:37       ` Ben Horgan
2026-07-02 15:16         ` Fenghua Yu
2026-07-03 13:42           ` Ben Horgan

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=87e4ca90-01bb-47e9-8892-0d2d56468bc0@intel.com \
    --to=reinette.chatre@intel.com \
    --cc=Dave.Martin@arm.com \
    --cc=babu.moger@amd.com \
    --cc=ben.horgan@arm.com \
    --cc=bp@alien8.de \
    --cc=chen.yu@linux.dev \
    --cc=dave.hansen@linux.intel.com \
    --cc=fenghuay@nvidia.com \
    --cc=fustini@kernel.org \
    --cc=james.morse@arm.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=peternewman@google.com \
    --cc=tglx@linutronix.de \
    --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.