genirq: Introduce common irq_force_complete_move() implementation
authorThomas Gleixner <tglx@linutronix.de>
Mon, 17 Feb 2025 08:56:50 +0000 (14:26 +0530)
committerThomas Gleixner <tglx@linutronix.de>
Thu, 20 Feb 2025 14:19:26 +0000 (15:19 +0100)
commit751dc837dabd275d0ab165fc737c10f80e2e863a
treec1e3d63f37e1b7c43612bf025fd17079fc1f6758
parentfe35ecee8ec8d42b1d24ed70e5b33192294bcef0
genirq: Introduce common irq_force_complete_move() implementation

CONFIG_GENERIC_PENDING_IRQ requires an architecture specific implementation
of irq_force_complete_move() for CPU hotplug. At the moment, only x86
implements this unconditionally, but for RISC-V irq_force_complete_move()
is only needed when the RISC-V IMSIC driver is in use and not needed
otherwise.

To allow runtime configuration of this mechanism, introduce a common
irq_force_complete_move() implementation in the interrupt core code, which
only invokes the completion function, when a interrupt chip in the
hierarchy implements it.

Switch X86 over to the new mechanism. No functional change intended.

Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Signed-off-by: Anup Patel <apatel@ventanamicro.com>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Link: https://lore.kernel.org/all/20250217085657.789309-5-apatel@ventanamicro.com
arch/x86/kernel/apic/vector.c
include/linux/irq.h
kernel/irq/internals.h
kernel/irq/migration.c