Hi Babu, On 06/08/2024 23:00, Babu Moger wrote: > Enable ABMC by default when supported during the boot up. > > Users will not see any difference in the behavior when resctrl is > mounted. With automatic assignment everything will work as running > in the legacy monitor mode. > diff --git a/arch/x86/kernel/cpu/resctrl/core.c b/arch/x86/kernel/cpu/resctrl/core.c > index 6fb0cfdb5529..a7980f84c487 100644 > --- a/arch/x86/kernel/cpu/resctrl/core.c > +++ b/arch/x86/kernel/cpu/resctrl/core.c > @@ -599,6 +599,7 @@ static void domain_add_cpu_mon(int cpu, struct rdt_resource *r) > d = container_of(hdr, struct rdt_mon_domain, hdr); > > cpumask_set_cpu(cpu, &d->hdr.cpu_mask); > + resctrl_arch_mbm_cntr_assign_configure(); > return; > } > > @@ -620,6 +621,7 @@ static void domain_add_cpu_mon(int cpu, struct rdt_resource *r) > arch_mon_domain_online(r, d); > > resctrl_mbm_evt_config_init(hw_dom); > + resctrl_arch_mbm_cntr_assign_configure(); > > if (arch_domain_mbm_alloc(r->mon.num_rmid, hw_dom)) { > mon_domain_free(hw_dom); > diff --git a/arch/x86/kernel/cpu/resctrl/rdtgroup.c b/arch/x86/kernel/cpu/resctrl/rdtgroup.c > index 66febff2a3d3..d15fd1bde5f4 100644 > --- a/arch/x86/kernel/cpu/resctrl/rdtgroup.c > +++ b/arch/x86/kernel/cpu/resctrl/rdtgroup.c > @@ -2756,6 +2756,23 @@ void resctrl_arch_mbm_cntr_assign_disable(void) > } > } > > +void resctrl_arch_mbm_cntr_assign_configure(void) > +{ > + struct rdt_resource *r = &rdt_resources_all[RDT_RESOURCE_L3].r_resctrl; > + struct rdt_hw_resource *hw_res = resctrl_to_arch_res(r); > + bool enable = true; > + > + mutex_lock(&rdtgroup_mutex); As before - this lock isn't available to the architecture code after the filesystem code moves to /fs/. To prevent concurrent calls to resctrl_abmc_set_one_amd() I think you need your own mutex. > + if (r->mon.mbm_cntr_assignable) { > + if (!hw_res->mbm_cntr_assign_enabled) > + hw_res->mbm_cntr_assign_enabled = true; > + resctrl_abmc_set_one_amd(&enable); > + } > + > + mutex_unlock(&rdtgroup_mutex); > +} Neither of this functions callers are in filesystem code, could you drop the 'arch' from the name - it isn't part of the fs/arch interface. Thanks, James