Skip to content

irq-urgent-2020-02-22

fixes:

 - The WARN_ON which was put into the MSI setaffinity callback for paranoia
   reasons actually triggered via a callchain which escaped when all the
   possible ways to reach that code were analyzed.

   The proc/irq/$N/*affinity interfaces have a quirk which came in when
   ALPHA moved to the generic interface: In case that the written affinity
   mask does not contain any online CPU it calls into ALPHAs magic auto
   affinity setting code.

   A few years later this mechanism was also made available to x86 for no
   good reasons and in a way which circumvents all sanity checks for
   interrupts which cannot have their affinity set from process context on
   X86 due to the way the X86 interrupt delivery works.

   It would be possible to make this work properly, but there is no point
   in doing so. If the interrupt is not yet started then the affinity
   setting has no effect and if it is started already then it is already
   assigned to an online CPU so there is no point to randomly move it to
   some other CPU. Just return EINVAL as the code has done before that
   change forever.

 - The new MSI quirk bit in the irq domain flags turned out to be already
   occupied, which escaped the author and the reviewers because the already
   in use bits were 0,6,2,3,4,5 listed in that order. That bit 6 was simply
   overlooked because the ordering was straight forward linear
   otherwise. So the new bit ended up being a duplicate. Fix it up by
   switching the oddball 6 to the obvious 1.
Assets 2
Loading