On 10.06.2024 16:20, Roger Pau Monne wrote: > The current check used in fixup_irqs() to decide whether to move around > interrupts is based on the affinity mask, but such mask can have all bits set, > and hence is unlikely to be a subset of the input mask. For example if an > interrupt has an affinity mask of all 1s, any input to fixup_irqs() that's not > an all set CPU mask would cause that interrupt to be shuffled around > unconditionally. > > What fixup_irqs() care about is evacuating interrupts from CPUs not set on the > input CPU mask, and for that purpose it should check whether the interrupt is > assigned to a CPU not present in the input mask. Assume that ->arch.cpu_mask > is a subset of the ->affinity mask, and keep the current logic that resets the > ->affinity mask if the interrupt has to be shuffled around. > > Doing the affinity movement based on ->arch.cpu_mask requires removing the > special handling to ->arch.cpu_mask done for high priority vectors, otherwise > the adjustment done to cpu_mask makes them always skip the CPU interrupt > movement. > > While there also adjust the comment as to the purpose of fixup_irqs(). > > Signed-off-by: Roger Pau Monné <roger....@citrix.com>
Reviewed-by: Jan Beulich <jbeul...@suse.com> Aiui this is independent of patch 1, so could go in while we still settle on how to word things there? Jan