diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2024-11-10 09:37:47 -0800 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2024-11-10 09:37:47 -0800 |
commit | a9cda7c0ffedb47b23002e109bd26ab2a2ab99c9 (patch) | |
tree | 543ce61728b3bd1d08a915ea8840da23230aa6ac /drivers | |
parent | 28e43197c4460e08b55554c05998d6de9da7d0b6 (diff) | |
parent | 464cb98f1c07298c4c10e714ae0c36338d18d316 (diff) | |
download | linux-a9cda7c0ffedb47b23002e109bd26ab2a2ab99c9.tar.gz linux-a9cda7c0ffedb47b23002e109bd26ab2a2ab99c9.tar.bz2 linux-a9cda7c0ffedb47b23002e109bd26ab2a2ab99c9.zip |
Merge tag 'irq_urgent_for_v6.12_rc7' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip
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
Diffstat (limited to 'drivers')
-rw-r--r-- | drivers/irqchip/irq-gic-v3.c | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/drivers/irqchip/irq-gic-v3.c b/drivers/irqchip/irq-gic-v3.c index ce87205e3e82..8b6159f4cdaf 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; } |