About threaded interrupt handler CPU affinity

From: John Garry
Date: Mon Jul 22 2019 - 10:14:46 EST

Hi Thomas,

I have a question on commit cbf8699996a6 ("genirq: Let irq thread follow the effective hard irq affinity"), if you could kindly check:

Here we set the thread affinity to be the same as the hard interrupt affinity. For an arm64 system with GIC ITS, this will be a single CPU, the lowest in the interrupt affinity mask. So, in this case, effectively the thread will be bound to a single CPU. I think APIC is the same for this.

The commit message describes the problem that we solve here is that the thread may become affine to a different CPU to the hard interrupt - does it mean that the thread CPU mask could not cover that of the hard interrupt? I couldn't follow the reason.

We have experimented with fixing the thread mask to be the same as the interrupt mask (we're using managed interrupts), like before, and get a significant performance boost at high IO datarates on our storage controller - like ~11%.

Thanks in advance,