Messages in this thread | | | Date | Thu, 15 Jun 2023 15:10:32 -0700 | Subject | Re: [PATCH v4 13/24] x86/resctrl: Queue mon_event_read() instead of sending an IPI | From | Reinette Chatre <> |
| |
Hi James,
On 5/25/2023 11:01 AM, James Morse wrote:
...
> @@ -520,12 +521,24 @@ int rdtgroup_schemata_show(struct kernfs_open_file *of, > return ret; > } > > +static int smp_mon_event_count(void *arg) > +{ > + mon_event_count(arg); > + > + return 0; > +} > + > void mon_event_read(struct rmid_read *rr, struct rdt_resource *r, > struct rdt_domain *d, struct rdtgroup *rdtgrp, > int evtid, int first) > { > + int cpu; > + > + /* When picking a CPU from cpu_mask, ensure it can't race with cpuhp */ > + lockdep_assert_held(&rdtgroup_mutex); > + > /* > - * setup the parameters to send to the IPI to read the data. > + * setup the parameters to pass to mon_event_count() to read the data. > */
I understand that you are just copying existing comment but could you please change it so that the sentence starts with a capital letter?
> rr->rgrp = rdtgrp; > rr->evtid = evtid; > @@ -534,7 +547,18 @@ void mon_event_read(struct rmid_read *rr, struct rdt_resource *r, > rr->val = 0; > rr->first = first; > > - smp_call_function_any(&d->cpu_mask, mon_event_count, rr, 1); > + cpu = cpumask_any_housekeeping(&d->cpu_mask); > + > + /* > + * cpumask_any_housekeeping() prefers housekeeping CPUs, but > + * are all the CPUs nohz_full? If yes, pick a CPU to IPI. > + * MPAM's resctrl_arch_rmid_read() is unable to read the > + * counters on some platforms if its called in irq context. > + */ > + if (tick_nohz_full_cpu(cpu)) > + smp_call_function_any(&d->cpu_mask, mon_event_count, rr, 1); > + else > + smp_call_on_cpu(cpu, smp_mon_event_count, rr, false); > } >
Reinette
| |