Messages in this thread | | | Date | Wed, 21 Feb 2024 12:06:46 +0000 | Subject | Re: [PATCH] x86/resctrl: Fix WARN in get_domain_from_cpu() | From | James Morse <> |
| |
Hi Tony,
On 21/02/2024 00:34, Tony Luck wrote: > reset_all_ctrls() and resctrl_arch_update_domains() use > on_each_cpu_mask() to call rdt_ctrl_update() on potentially > one CPU from each domain. > > But this means rdt_ctrl_update() needs to figure out which domain > to apply changes to. Doing so requires a search of all domains > in a resource, which can only be done safely if cpus_lock is > held. Both callers do hold this lock, but there isn't a way > for a function called on another CPU via IPI to verify this. > > Fix by adding the target domain to the msr_param structure and > calling for each domain separately using smp_call_function_single()
Cunning - this trades the memory allocation for multiple IPI. I think this is much better for the case where only the local domains configuration is modified.
With the double-IPI when both CDP configurations are changed fixed: Reviewed-by: James Morse <james.morse@arm.com>
I think we should rip out the false positive check, I'll post a patch to do that. I'll double check this was the only IPI path, if so its safe again after this patch and we can add lockdep_assert_cpus_held(). If anyone ever hits this during a bisect its should be clear(er).
Thanks,
James
| |