On Wed, May 22, 2019 at 03:37:11PM +0100, Andrew Murray wrote: > > Is perhaps the problem that on_each_cpu_cond() uses cpu_onlne_mask > > without protection? > > Does this prevent racing with a CPU going offline? I guess this prevents > the warning at the expense of a lock - but is only beneficial in the > unlikely path. (In the likely path this prevents new CPUs going offline > but we don't care because we don't WARN if they aren't they when we > attempt to call functions). > > At least this is my limited understanding.
Hmm.. I don't think it could matter, we only use the mask when preempt_disable(), which would already block offline, due to it using stop_machine(). So the patch is a no-op. What's the WARN you see? TLB invalidation should pass mm_cpumask(), which similarly should not contain offline CPUs I'm thinking.

