Bartosz Golaszewski
06459901d5
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 >
2018-12-13 09:35:31 +00:00
Bartosz Golaszewski
b5c5f3959b
genirq/irq_sim: Use the SPDX license identifier in the header
...
Use C-style comment for the identifier as per
Documentation/process/license-rules.rst and remove the license boilerplate.
Signed-off-by: Bartosz Golaszewski <brgl@bgdev.pl >
Signed-off-by: Thomas Gleixner <tglx@linutronix.de >
Link: https://lkml.kernel.org/r/20180426200747.8344-2-brgl@bgdev.pl
2018-04-26 22:26:39 +02:00
Bartosz Golaszewski
44e72c7ebf
genirq/irq_sim: Add a devres variant of irq_sim_init()
...
Add a resource managed version of irq_sim_init(). This can be
conveniently used in device drivers.
Signed-off-by: Bartosz Golaszewski <brgl@bgdev.pl >
Acked-by: Jonathan Cameron <Jonathan.Cameron@huawei.com >
Cc: Lars-Peter Clausen <lars@metafoo.de >
Cc: Jonathan Corbet <corbet@lwn.net >
Cc: Marc Zyngier <marc.zyngier@arm.com >
Cc: Linus Walleij <linus.walleij@linaro.org >
Cc: linux-doc@vger.kernel.org
Cc: linux-gpio@vger.kernel.org
Cc: Bamvor Jian Zhang <bamvor.zhangjian@linaro.org >
Cc: Jonathan Cameron <jic23@kernel.org >
Link: http://lkml.kernel.org/r/20170814145318.6495-3-brgl@bgdev.pl
Signed-off-by: Thomas Gleixner <tglx@linutronix.de >
2017-08-16 16:40:02 +02:00
Bartosz Golaszewski
b19af510e6
genirq/irq_sim: Add a simple interrupt simulator framework
...
Implement a simple, irq_work-based framework for simulating
interrupts. Currently the API exposes routines for initializing and
deinitializing the simulator object, enqueueing the interrupts and
retrieving the allocated interrupt numbers based on the offset of the
dummy interrupt in the simulator struct.
Signed-off-by: Bartosz Golaszewski <brgl@bgdev.pl >
Reviewed-by: Jonathan Cameron <Jonathan.Cameron@huawei.com >
Cc: Lars-Peter Clausen <lars@metafoo.de >
Cc: Jonathan Corbet <corbet@lwn.net >
Cc: Marc Zyngier <marc.zyngier@arm.com >
Cc: Linus Walleij <linus.walleij@linaro.org >
Cc: linux-doc@vger.kernel.org
Cc: linux-gpio@vger.kernel.org
Cc: Bamvor Jian Zhang <bamvor.zhangjian@linaro.org >
Cc: Jonathan Cameron <jic23@kernel.org >
Link: http://lkml.kernel.org/r/20170814145318.6495-2-brgl@bgdev.pl
Signed-off-by: Thomas Gleixner <tglx@linutronix.de >
2017-08-16 16:40:02 +02:00