Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
apic_ack_edge() is explicitely for handling interrupt affinity cleanup when interrupt remapping is not available or disable. Remapped interrupts and also some of the platform specific special interrupts, e.g. UV, invoke ack_APIC_irq() directly. To address the issue of failing an affinity update with -EBUSY the delayed affinity mechanism can be reused, but ack_APIC_irq() does not handle that. Adding this to ack_APIC_irq() is not possible, because that function is also used for exceptions and directly handled interrupts like IPIs. Create a new function, which just contains the conditional invocation of irq_move_irq() and the final ack_APIC_irq(). Reuse the new function in apic_ack_edge(). Preparatory change for the real fix. Fixes: dccfe31 ("x86/vector: Simplify vector move cleanup") Signed-off-by: Thomas Gleixner <[email protected]> Tested-by: Song Liu <[email protected]> Cc: Joerg Roedel <[email protected]> Cc: Peter Zijlstra <[email protected]> Cc: Song Liu <[email protected]> Cc: Dmitry Safonov <[email protected]> Cc: [email protected] Cc: Mike Travis <[email protected]> Cc: Borislav Petkov <[email protected]> Cc: Tariq Toukan <[email protected]> Link: https://lkml.kernel.org/r/[email protected]
- Loading branch information