[PATCH v6 00/21] x86/resctrl: Make resctrl_arch_rmid_read() return values in bytes

James Morse posted 21 patches 3 years, 7 months ago
arch/x86/include/asm/resctrl.h            |   9 +
arch/x86/kernel/cpu/resctrl/core.c        | 117 ++++-------
arch/x86/kernel/cpu/resctrl/ctrlmondata.c |  75 ++++---
arch/x86/kernel/cpu/resctrl/internal.h    |  61 +++---
arch/x86/kernel/cpu/resctrl/monitor.c     | 232 ++++++++++++++--------
arch/x86/kernel/cpu/resctrl/pseudo_lock.c |   2 +-
arch/x86/kernel/cpu/resctrl/rdtgroup.c    | 216 ++++++++++++++++----
include/linux/resctrl.h                   |  64 +++++-
8 files changed, 514 insertions(+), 262 deletions(-)
[PATCH v6 00/21] x86/resctrl: Make resctrl_arch_rmid_read() return values in bytes
Posted by James Morse 3 years, 7 months ago
Changes in this version?
 * Changed supports_mba_mbps() to use is_mbm_local_enabled()

---
The aim of this series is to insert a split between the parts of the monitor
code that the architecture must implement, and those that are part of the
resctrl filesystem. The eventual aim is to move all filesystem parts out
to live in /fs/resctrl, so that resctrl can be wired up for MPAM.

What's MPAM? See the cover letter of a previous series. [1]

The series adds domain online/offline callbacks to allow the filesystem to
manage some of its structures itself, then moves all the 'mba_sc' behaviour
to be part of the filesystem.
This means another architecture doesn't need to provide an mbps_val array.
As its all software, the resctrl filesystem should be able to do this without
any help from the architecture code.

Finally __rmid_read() is refactored to be the API call that the architecture
provides to read a counter value. All the hardware specific overflow detection,
scaling and value correction should occur behind this helper.


This series is based on v6.0-rc3, and can be retrieved from:
git://git.kernel.org/pub/scm/linux/kernel/git/morse/linux.git mpam/resctrl_monitors_in_bytes/v6

[0] git://git.kernel.org/pub/scm/linux/kernel/git/morse/linux.git mpam/resctrl_merge_cdp/v7
[1] https://lore.kernel.org/lkml/20210728170637.25610-1-james.morse@arm.com/

Previous versions of this series:
[v1] https://lore.kernel.org/lkml/20210729223610.29373-1-james.morse@arm.com/ 
[v2] https://lore.kernel.org/lkml/20211001160302.31189-1-james.morse@arm.com/
[v3] https://lore.kernel.org/lkml/20220217182110.7176-1-james.morse@arm.com/
[v4] https://lore.kernel.org/lkml/20220412124419.30689-1-james.morse@arm.com/
[v5] https://lore.kernel.org/lkml/20220622164629.20795-1-james.morse@arm.com/

James Morse (21):
  x86/resctrl: Kill off alloc_enabled
  x86/resctrl: Merge mon_capable and mon_enabled
  x86/resctrl: Add domain online callback for resctrl work
  x86/resctrl: Group struct rdt_hw_domain cleanup
  x86/resctrl: Add domain offline callback for resctrl work
  x86/resctrl: Remove set_mba_sc()s control array re-initialisation
  x86/resctrl: Abstract and use supports_mba_mbps()
  x86/resctrl: Create mba_sc configuration in the rdt_domain
  x86/resctrl: Switch over to the resctrl mbps_val list
  x86/resctrl: Remove architecture copy of mbps_val
  x86/resctrl: Allow update_mba_bw() to update controls directly
  x86/resctrl: Calculate bandwidth from the previous __mon_event_count()
    chunks
  x86/resctrl: Add per-rmid arch private storage for overflow and chunks
  x86/resctrl: Allow per-rmid arch private storage to be reset
  x86/resctrl: Abstract __rmid_read()
  x86/resctrl: Pass the required parameters into
    resctrl_arch_rmid_read()
  x86/resctrl: Move mbm_overflow_count() into resctrl_arch_rmid_read()
  x86/resctrl: Move get_corrected_mbm_count() into
    resctrl_arch_rmid_read()
  x86/resctrl: Rename and change the units of resctrl_cqm_threshold
  x86/resctrl: Add resctrl_rmid_realloc_limit to abstract x86's
    boot_cpu_data
  x86/resctrl: Make resctrl_arch_rmid_read() return values in bytes

 arch/x86/include/asm/resctrl.h            |   9 +
 arch/x86/kernel/cpu/resctrl/core.c        | 117 ++++-------
 arch/x86/kernel/cpu/resctrl/ctrlmondata.c |  75 ++++---
 arch/x86/kernel/cpu/resctrl/internal.h    |  61 +++---
 arch/x86/kernel/cpu/resctrl/monitor.c     | 232 ++++++++++++++--------
 arch/x86/kernel/cpu/resctrl/pseudo_lock.c |   2 +-
 arch/x86/kernel/cpu/resctrl/rdtgroup.c    | 216 ++++++++++++++++----
 include/linux/resctrl.h                   |  64 +++++-
 8 files changed, 514 insertions(+), 262 deletions(-)

-- 
2.30.2
RE: [PATCH v6 00/21] x86/resctrl: Make resctrl_arch_rmid_read() return values in bytes
Posted by tan.shaopeng@fujitsu.com 3 years, 6 months ago
Hi James,

> Changes in this version?
>  * Changed supports_mba_mbps() to use is_mbm_local_enabled()
> 
> ---
> The aim of this series is to insert a split between the parts of the monitor code
> that the architecture must implement, and those that are part of the resctrl
> filesystem. The eventual aim is to move all filesystem parts out to live in
> /fs/resctrl, so that resctrl can be wired up for MPAM.
> 
> What's MPAM? See the cover letter of a previous series. [1]
> 
> The series adds domain online/offline callbacks to allow the filesystem to
> manage some of its structures itself, then moves all the 'mba_sc' behaviour to
> be part of the filesystem.
> This means another architecture doesn't need to provide an mbps_val array.
> As its all software, the resctrl filesystem should be able to do this without any
> help from the architecture code.
> 
> Finally __rmid_read() is refactored to be the API call that the architecture
> provides to read a counter value. All the hardware specific overflow detection,
> scaling and value correction should occur behind this helper.
> 
> 
> This series is based on v6.0-rc3, and can be retrieved from:
> git://git.kernel.org/pub/scm/linux/kernel/git/morse/linux.git
> mpam/resctrl_monitors_in_bytes/v6
> 
> [0] git://git.kernel.org/pub/scm/linux/kernel/git/morse/linux.git
> mpam/resctrl_merge_cdp/v7 [1]
> https://lore.kernel.org/lkml/20210728170637.25610-1-james.morse@arm.com
> /
> 
> Previous versions of this series:
> [v1]
> https://lore.kernel.org/lkml/20210729223610.29373-1-james.morse@arm.com
> /
> [v2]
> https://lore.kernel.org/lkml/20211001160302.31189-1-james.morse@arm.com
> /
> [v3]
> https://lore.kernel.org/lkml/20220217182110.7176-1-james.morse@arm.com/
> [v4]
> https://lore.kernel.org/lkml/20220412124419.30689-1-james.morse@arm.com
> /
> [v5]
> https://lore.kernel.org/lkml/20220622164629.20795-1-james.morse@arm.com
> /
> 
> James Morse (21):
>   x86/resctrl: Kill off alloc_enabled
>   x86/resctrl: Merge mon_capable and mon_enabled
>   x86/resctrl: Add domain online callback for resctrl work
>   x86/resctrl: Group struct rdt_hw_domain cleanup
>   x86/resctrl: Add domain offline callback for resctrl work
>   x86/resctrl: Remove set_mba_sc()s control array re-initialisation
>   x86/resctrl: Abstract and use supports_mba_mbps()
>   x86/resctrl: Create mba_sc configuration in the rdt_domain
>   x86/resctrl: Switch over to the resctrl mbps_val list
>   x86/resctrl: Remove architecture copy of mbps_val
>   x86/resctrl: Allow update_mba_bw() to update controls directly
>   x86/resctrl: Calculate bandwidth from the previous __mon_event_count()
>     chunks
>   x86/resctrl: Add per-rmid arch private storage for overflow and chunks
>   x86/resctrl: Allow per-rmid arch private storage to be reset
>   x86/resctrl: Abstract __rmid_read()
>   x86/resctrl: Pass the required parameters into
>     resctrl_arch_rmid_read()
>   x86/resctrl: Move mbm_overflow_count() into resctrl_arch_rmid_read()
>   x86/resctrl: Move get_corrected_mbm_count() into
>     resctrl_arch_rmid_read()
>   x86/resctrl: Rename and change the units of resctrl_cqm_threshold
>   x86/resctrl: Add resctrl_rmid_realloc_limit to abstract x86's
>     boot_cpu_data
>   x86/resctrl: Make resctrl_arch_rmid_read() return values in bytes
> 
>  arch/x86/include/asm/resctrl.h            |   9 +
>  arch/x86/kernel/cpu/resctrl/core.c        | 117 ++++-------
>  arch/x86/kernel/cpu/resctrl/ctrlmondata.c |  75 ++++---
>  arch/x86/kernel/cpu/resctrl/internal.h    |  61 +++---
>  arch/x86/kernel/cpu/resctrl/monitor.c     | 232
> ++++++++++++++--------
>  arch/x86/kernel/cpu/resctrl/pseudo_lock.c |   2 +-
>  arch/x86/kernel/cpu/resctrl/rdtgroup.c    | 216
> ++++++++++++++++----
>  include/linux/resctrl.h                   |  64 +++++-
>  8 files changed, 514 insertions(+), 262 deletions(-)
> 
> --
> 2.30.2
I tested this patch series(patch v6) on Intel(R) Xeon(R) Gold 6254 CPU with resctrl selftest.
It is no problem.

Reviewed-by: Shaopeng Tan <tan.shaopeng@fujitsu.com>
Tested-by: Shaopeng Tan <tan.shaopeng@fujitsu.com>
Re: [PATCH v6 00/21] x86/resctrl: Make resctrl_arch_rmid_read() return values in bytes
Posted by James Morse 3 years, 6 months ago
Hello!

On 13/09/2022 02:00, tan.shaopeng@fujitsu.com wrote:
>> Changes in this version?
>>  * Changed supports_mba_mbps() to use is_mbm_local_enabled()
>>
>> ---
>> The aim of this series is to insert a split between the parts of the monitor code
>> that the architecture must implement, and those that are part of the resctrl
>> filesystem. The eventual aim is to move all filesystem parts out to live in
>> /fs/resctrl, so that resctrl can be wired up for MPAM.
>>
>> What's MPAM? See the cover letter of a previous series. [1]
>>
>> The series adds domain online/offline callbacks to allow the filesystem to
>> manage some of its structures itself, then moves all the 'mba_sc' behaviour to
>> be part of the filesystem.
>> This means another architecture doesn't need to provide an mbps_val array.
>> As its all software, the resctrl filesystem should be able to do this without any
>> help from the architecture code.
>>
>> Finally __rmid_read() is refactored to be the API call that the architecture
>> provides to read a counter value. All the hardware specific overflow detection,
>> scaling and value correction should occur behind this helper.

> I tested this patch series(patch v6) on Intel(R) Xeon(R) Gold 6254 CPU with resctrl selftest.
> It is no problem.
> 
> Reviewed-by: Shaopeng Tan <tan.shaopeng@fujitsu.com>
> Tested-by: Shaopeng Tan <tan.shaopeng@fujitsu.com>

Thanks for testing it again!


James