On Mon, Aug 10, 2020 at 08:11:43PM +0000, Frank van der Linden wrote: > From: Thomas Gleixner <tglx@xxxxxxxxxxxxx> > > commit baedb87d1b53532f81b4bd0387f83b05d4f7eb9a upstream. > > Setting interrupt affinity on inactive interrupts is inconsistent when > hierarchical irq domains are enabled. The core code should just store the > affinity and not call into the irq chip driver for inactive interrupts > because the chip drivers may not be in a state to handle such requests. > > X86 has a hacky workaround for that but all other irq chips have not which > causes problems e.g. on GIC V3 ITS. > > Instead of adding more ugly hacks all over the place, solve the problem in > the core code. If the affinity is set on an inactive interrupt then: > > - Store it in the irq descriptors affinity mask > - Update the effective affinity to reflect that so user space has > a consistent view > - Don't call into the irq chip driver > > This is the core equivalent of the X86 workaround and works correctly > because the affinity setting is established in the irq chip when the > interrupt is activated later on. > > Note, that this is only effective when hierarchical irq domains are enabled > by the architecture. Doing it unconditionally would break legacy irq chip > implementations. > > For hierarchial irq domains this works correctly as none of the drivers can > have a dependency on affinity setting in inactive state by design. > > Remove the X86 workaround as it is not longer required. > > Fixes: 02edee152d6e ("x86/apic/vector: Ignore set_affinity call for inactive interrupts") Why is this needed for 4.14.y, when this "Fixes:" tag says a commit that showed up in 4.15? thanks, greg k-h