On Mon, Jan 09, 2023 at 10:43:53AM -0600, Babu Moger wrote: > on_each_cpu_mask() runs the function on each CPU specified by cpumask, > which may include the local processor. > > Replace smp_call_function_many() with on_each_cpu_mask() to simplify > the code. > > Reviewed-by: Reinette Chatre <reinette.chatre@xxxxxxxxx> > Signed-off-by: Babu Moger <babu.moger@xxxxxxx> > --- > arch/x86/kernel/cpu/resctrl/ctrlmondata.c | 11 +++------ > arch/x86/kernel/cpu/resctrl/rdtgroup.c | 29 +++++++---------------- > 2 files changed, 11 insertions(+), 29 deletions(-) > > diff --git a/arch/x86/kernel/cpu/resctrl/ctrlmondata.c b/arch/x86/kernel/cpu/resctrl/ctrlmondata.c > index 1df0e3262bca..7eece3d2d0c3 100644 > --- a/arch/x86/kernel/cpu/resctrl/ctrlmondata.c > +++ b/arch/x86/kernel/cpu/resctrl/ctrlmondata.c > @@ -310,7 +310,6 @@ int resctrl_arch_update_domains(struct rdt_resource *r, u32 closid) > enum resctrl_conf_type t; > cpumask_var_t cpu_mask; > struct rdt_domain *d; > - int cpu; > u32 idx; > > if (!zalloc_cpumask_var(&cpu_mask, GFP_KERNEL)) > @@ -341,13 +340,9 @@ int resctrl_arch_update_domains(struct rdt_resource *r, u32 closid) > > if (cpumask_empty(cpu_mask)) > goto done; > - cpu = get_cpu(); > - /* Update resource control msr on this CPU if it's in cpu_mask. */ > - if (cpumask_test_cpu(cpu, cpu_mask)) > - rdt_ctrl_update(&msr_param); > - /* Update resource control msr on other CPUs. */ > - smp_call_function_many(cpu_mask, rdt_ctrl_update, &msr_param, 1); > - put_cpu(); > + > + /* Update resource control msr on all the CPUs. */ > + on_each_cpu_mask(cpu_mask, rdt_ctrl_update, &msr_param, 1); Do you require these updates to done immediately via an IPI? or can they be done bit lazy via schedule_on_each_cpu()? Cheers, Ashok