projects/linux·commit a9cda7c0

Merge tag 'irq_urgent_for_v6.12_rc7' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip

a9cda7c0 · Linus Torvalds <[email protected]> · 2024-11-10 09:37:47 -08:00

Pull irq fix from Borislav Petkov:

 - Make sure GICv3 controller interrupt activation doesn't race with a
   concurrent deactivation due to propagation delays of the register
   write

* tag 'irq_urgent_for_v6.12_rc7' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
  irqchip/gic-v3: Force propagation of the active state with a read-back
Commit
a9cda7c0ffedb47b23002e109bd26ab2a2ab99c9
Parents
28e43197 · 464cb98f

Merge commit. Changes below are compared with the first parent: 28e43197.

Changes

1 files changed · +7 −0

FileStatusAddDelContent
drivers/irqchip/irq-gic-v3.cmodified+7−0View file

drivers/irqchip/irq-gic-v3.c

View file
diff --git a/drivers/irqchip/irq-gic-v3.c b/drivers/irqchip/irq-gic-v3.c
index ce87205..8b6159f 100644
--- a/drivers/irqchip/irq-gic-v3.c
+++ b/drivers/irqchip/irq-gic-v3.c
@@ -524,6 +524,13 @@ static int gic_irq_set_irqchip_state(struct irq_data *d,
}
gic_poke_irq(d, reg);
+
+ /*
+ * Force read-back to guarantee that the active state has taken
+ * effect, and won't race with a guest-driven deactivation.
+ */
+ if (reg == GICD_ISACTIVER)
+ gic_peek_irq(d, reg);
return 0;
}