irq/irq_sim: Store multiple interrupt offsets in a bitmap
authorBartosz Golaszewski <brgl@bgdev.pl>
Fri, 9 Nov 2018 17:21:32 +0000 (18:21 +0100)
committerMarc Zyngier <marc.zyngier@arm.com>
Thu, 13 Dec 2018 09:35:31 +0000 (09:35 +0000)
commit06459901d55ee2f690b8e1fe084fb03061d617cf
tree80ca6e836924930684dfaa8ee308267ad71e5e5e
parent81b1e6e6a8590a19257e37a1633bec098d499c57
irq/irq_sim: Store multiple interrupt offsets in a bitmap

Two threads can try to fire the irq_sim with different offsets and will
end up fighting for the irq_work asignment. Thomas Gleixner suggested a
solution based on a bitfield where we set a bit for every offset
associated with an interrupt that should be fired and then iterate over
all set bits in the interrupt handler.

This is a slightly modified solution using a bitmap so that we don't
impose a limit on the number of interrupts one can allocate with
irq_sim.

Suggested-by: Thomas Gleixner <tglx@linutronix.de>
Signed-off-by: Bartosz Golaszewski <brgl@bgdev.pl>
Signed-off-by: Marc Zyngier <marc.zyngier@arm.com>
include/linux/irq_sim.h
kernel/irq/irq_sim.c