Hi Reinette, On 7/17/25 13:45, Reinette Chatre wrote: > Hi Babu, > > On 7/8/25 3:17 PM, Babu Moger wrote: >> diff --git a/arch/x86/kernel/cpu/resctrl/core.c b/arch/x86/kernel/cpu/resctrl/core.c >> index 267e9206a999..b48cc67cbbe3 100644 >> --- a/arch/x86/kernel/cpu/resctrl/core.c >> +++ b/arch/x86/kernel/cpu/resctrl/core.c >> @@ -990,7 +990,8 @@ void resctrl_cpu_detect(struct cpuinfo_x86 *c) >> >> if (cpu_has(c, X86_FEATURE_CQM_OCCUP_LLC) || >> cpu_has(c, X86_FEATURE_CQM_MBM_TOTAL) || >> - cpu_has(c, X86_FEATURE_CQM_MBM_LOCAL)) { >> + cpu_has(c, X86_FEATURE_CQM_MBM_LOCAL) || >> + cpu_has(c, X86_FEATURE_ABMC)) { > > I interpret this to mean that ABMC does not depend on any of the > "legacy" monitoring features. > >> u32 eax, ebx, ecx, edx; >> >> /* QoS sub-leaf, EAX=0Fh, ECX=1 */ >> diff --git a/arch/x86/kernel/cpu/resctrl/monitor.c b/arch/x86/kernel/cpu/resctrl/monitor.c >> index 2558b1bdef8b..0a695ce68f46 100644 >> --- a/arch/x86/kernel/cpu/resctrl/monitor.c >> +++ b/arch/x86/kernel/cpu/resctrl/monitor.c >> @@ -339,6 +339,7 @@ int __init rdt_get_mon_l3_config(struct rdt_resource *r) >> unsigned int mbm_offset = boot_cpu_data.x86_cache_mbm_width_offset; >> struct rdt_hw_resource *hw_res = resctrl_to_arch_res(r); >> unsigned int threshold; >> + u32 eax, ebx, ecx, edx; >> >> snc_nodes_per_l3_cache = snc_get_config(); >> >> @@ -368,14 +369,18 @@ int __init rdt_get_mon_l3_config(struct rdt_resource *r) > > rdt_get_mon_l3_config() is only called when one or more of the "legacy" monitoring > features are supported ... > >> */ >> resctrl_rmid_realloc_threshold = resctrl_arch_round_mon_val(threshold); >> >> - if (rdt_cpu_has(X86_FEATURE_BMEC)) { >> - u32 eax, ebx, ecx, edx; >> - >> + if (rdt_cpu_has(X86_FEATURE_BMEC) || rdt_cpu_has(X86_FEATURE_ABMC)) { >> /* Detect list of bandwidth sources that can be tracked */ >> cpuid_count(0x80000020, 3, &eax, &ebx, &ecx, &edx); >> r->mon.mbm_cfg_mask = ecx & MAX_EVT_CONFIG_BITS; >> } >> >> + if (rdt_cpu_has(X86_FEATURE_ABMC)) { > > ... so having this check within rdt_get_mon_l3_config() implies that ABMC depends > on the "legacy" monitoring features. This contradicts the change to resctrl_cpu_detect() > though so it seems that get_rdt_mon_resources() is missing a check for ABMC to ensure > rdt_get_mon_l3_config() is called when ABMC is supported (but "legacy" monitoring features > are not)? Yes. That is correct. Added a new check in get_rdt_mon_resources(). diff --git a/arch/x86/kernel/cpu/resctrl/core.c b/arch/x86/kernel/cpu/resctrl/core.c index b48cc67cbbe3..09cb5a70b1cb 100644 --- a/arch/x86/kernel/cpu/resctrl/core.c +++ b/arch/x86/kernel/cpu/resctrl/core.c @@ -883,6 +883,8 @@ static __init bool get_rdt_mon_resources(void) resctrl_enable_mon_event(QOS_L3_MBM_LOCAL_EVENT_ID); ret = true; } + if (rdt_cpu_has(X86_FEATURE_ABMC)) + ret = true; if (!ret) return false; -- Thanks Babu Moger