On Wed, Aug 19, 2020 at 04:05:51PM +0000, Frank van der Linden wrote: > On Wed, Aug 19, 2020 at 11:55:37AM +0200, Greg KH wrote: > > 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? > > The issue of set_affinity being called on inactive interrupts, and it > not being handled correctly, was already there in 4.14. The commit in > the Fixes: tag is the x86 workaround, which came in in 4.15, and is > no longer needed. > > So we still need the backport of the genirq changes, to fix it in 4.14. > This is mostly for arm64 (gicv3), where this issue results in interrupts > getting messed up. Ok, thanks, both now queued up. greg k-h