Re: [PATCH v6 19/42] x86/resctrl: Add resctrl_arch_is_evt_configurable() to abstract BMEC

From: Reinette Chatre
Date: Wed Feb 19 2025 - 19:14:47 EST


Hi James,

On 2/7/25 10:18 AM, James Morse wrote:
> When BMEC is supported the resctrl event can be configured in a number
> of ways. This depends on architecture support. rdt_get_mon_l3_config()
> modifies the struct mon_evt and calls mbm_config_rftype_init() to create
> the files that allow the configuration.
>
> Splitting this into separate architecture and filesystem parts would
> require the struct mon_evt and mbm_config_rftype_init() to be exposed.
>
> Instead, add resctrl_arch_is_evt_configurable(), and use this from
> resctrl_mon_resource_init() to initialise struct mon_evt and call
> mbm_config_rftype_init().
> resctrl_arch_is_evt_configurable() calls rdt_cpu_has() so it doesn't
> obviously benefit from being inlined. Putting it in core.c will allow
> rdt_cpu_has() to eventually become static.
>

Please replace all instances of mbm_config_rftype_init() with
resctrl_file_fflags_init().

> Signed-off-by: James Morse <james.morse@xxxxxxx>
> Tested-by: Carl Worth <carl@xxxxxxxxxxxxxxxxxxxxxx> # arm64
> Tested-by: Shaopeng Tan <tan.shaopeng@xxxxxxxxxxxxxx>
> Reviewed-by: Shaopeng Tan <tan.shaopeng@xxxxxxxxxxxxxx>
> Reviewed-by: Tony Luck <tony.luck@xxxxxxxxx>
> ---
> Changes since v4:
> * Moved all the __init changes to a later patch now that the exit gubbins
> comes first.
> ---
> arch/x86/kernel/cpu/resctrl/core.c | 15 +++++++++++++++
> arch/x86/kernel/cpu/resctrl/monitor.c | 22 +++++++++++-----------
> include/linux/resctrl.h | 2 ++
> 3 files changed, 28 insertions(+), 11 deletions(-)
>
> diff --git a/arch/x86/kernel/cpu/resctrl/core.c b/arch/x86/kernel/cpu/resctrl/core.c
> index 7d14d80b3f94..43a9291988d3 100644
> --- a/arch/x86/kernel/cpu/resctrl/core.c
> +++ b/arch/x86/kernel/cpu/resctrl/core.c
> @@ -831,6 +831,21 @@ bool __init rdt_cpu_has(int flag)
> return ret;
> }
>
> +bool __init resctrl_arch_is_evt_configurable(enum resctrl_event_id evt)

I know resctrl is not consistent in this regard but I think that it would improve
resctrl quality if new additions follow guidance from Documentation/process/coding-style.rst
(see section 6.1) Function prototypes) to place storage class attribute
(__init) before return type.

> +{
> + if (!rdt_cpu_has(X86_FEATURE_BMEC))
> + return false;
> +
> + switch (evt) {
> + case QOS_L3_MBM_TOTAL_EVENT_ID:
> + return rdt_cpu_has(X86_FEATURE_CQM_MBM_TOTAL);
> + case QOS_L3_MBM_LOCAL_EVENT_ID:
> + return rdt_cpu_has(X86_FEATURE_CQM_MBM_LOCAL);
> + default:
> + return false;
> + }
> +}
> +
> static __init bool get_mem_config(void)
> {
> struct rdt_hw_resource *hw_res = &rdt_resources_all[RDT_RESOURCE_MBA];

Reinette