linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH v4 0/3] genirq: Saving/restoring the irqchip state of an irq line
@ 2015-03-18 11:01 Marc Zyngier
  2015-03-18 11:01 ` [PATCH v4 1/3] genirq: Allow the irqchip state of an IRQ to be save/restored Marc Zyngier
                   ` (3 more replies)
  0 siblings, 4 replies; 21+ messages in thread
From: Marc Zyngier @ 2015-03-18 11:01 UTC (permalink / raw)
  To: Abhijeet Dharmapurikar, Stephen Boyd, Phong Vo, Linus Walleij,
	Tin Huynh, Y Vo, Thomas Gleixner, Toan Le, Bjorn Andersson,
	Jason Cooper, Arnd Bergmann
  Cc: linux-arm-msm, linux-kernel, linux-arm-kernel

Despite Linux offering a rather fine grained control over the life
cycle of an interrupt, there is a few cases where it would be very
useful to snapshot (or even set) the internal state of the interrupt
controller for a given interrupt line:

- With KVM, a device shared between VMs must have its whole context
  switched, and that includes the interrupt line state. KVM/arm is
  moving to using this.
- Some GPIO controllers seem to require peeking into the interrupt
  controller they are connected to to report their internal state.

Instead of letting people facing this situation doing horrible
(controller specific) hacks in their code, let's offer a couple of new
entry points that allow a few attributes to be read and set.

Of course, this is a very dangerous thing to do if you don't know what
you doing, and I wouldn't expect most drivers to use this. But this
can also be a life saver at times.

This patch series implement said API, and adds support for this to the
two main ARM interrupt controllers (GIC and GICv3). Available at:

git://git.kernel.org/pub/scm/linux/kernel/git/maz/arm-platforms.git irq/irqchip_state

This has been fairly heavily tested with KVM on ARM, which makes use
of this feature to context switch the timer interrupt (see the last
three patch in the above branch).

Thanks,

	M.

* From v3 [3]
- Rebased on top of 4.0-rc4

* From v2 [2]:
- Rebased on top of 3.19-rc3
- Fixed irq_set_irqchip_state return value

* From v1 [1]:
- Rebased on top of 3.18-rc7 + tip/irq/irqdomain-arm
- Now deals with stacked domains
- Changed the API to be less ambiguous (after review by tglx)
- Added IRQCHIP_STATE_LINE_LEVEL (as requested by Bjorn Anderson)

[1] https://lkml.org/lkml/2014/10/25/134
[2] https://lkml.org/lkml/2014/12/3/612
[3] http://lkml.iu.edu/hypermail/linux/kernel/1501.0/03473.html

Marc Zyngier (3):
  genirq: Allow the irqchip state of an IRQ to be save/restored
  irqchip: GIC: Add support for irq_{get,set}_irqchip_state
  irqchip: GICv3: Add support for irq_{get,set}_irqchip_state

 drivers/irqchip/irq-gic-v3.c | 83 +++++++++++++++++++++++++++++++++-------
 drivers/irqchip/irq-gic.c    | 69 +++++++++++++++++++++++++++++++--
 include/linux/interrupt.h    | 14 +++++++
 include/linux/irq.h          |  6 +++
 kernel/irq/manage.c          | 91 ++++++++++++++++++++++++++++++++++++++++++++
 5 files changed, 246 insertions(+), 17 deletions(-)

-- 
2.1.4


^ permalink raw reply	[flat|nested] 21+ messages in thread

end of thread, other threads:[~2015-05-20  7:57 UTC | newest]

Thread overview: 21+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2015-03-18 11:01 [PATCH v4 0/3] genirq: Saving/restoring the irqchip state of an irq line Marc Zyngier
2015-03-18 11:01 ` [PATCH v4 1/3] genirq: Allow the irqchip state of an IRQ to be save/restored Marc Zyngier
2015-04-08 17:48   ` Bjorn Andersson
2015-04-13 16:18     ` Srinivas Kandagatla
2015-04-13 16:21       ` Marc Zyngier
2015-04-08 21:30   ` [tip:irq/core] " tip-bot for Marc Zyngier
2015-03-18 11:01 ` [PATCH v4 2/3] irqchip: GIC: Add support for irq_{get,set}_irqchip_state Marc Zyngier
2015-04-08 21:31   ` [tip:irq/core] irqchip: GIC: Add support for irq_[get, set] _irqchip_state() tip-bot for Marc Zyngier
2015-05-13  2:25   ` [PATCH v4 2/3] irqchip: GIC: Add support for irq_{get,set}_irqchip_state Feng Kan
2015-05-13 11:58     ` Linus Walleij
2015-05-13 15:44       ` Feng Kan
2015-05-14 10:32         ` Linus Walleij
2015-05-14 20:14           ` Feng Kan
2015-05-19  8:40             ` Linus Walleij
2015-05-19 10:01               ` Marc Zyngier
2015-05-19 15:01                 ` Linus Walleij
2015-05-19 21:45                 ` Feng Kan
2015-05-20  7:58                   ` Marc Zyngier
2015-03-18 11:01 ` [PATCH v4 3/3] irqchip: GICv3: " Marc Zyngier
2015-04-08 21:31   ` [tip:irq/core] irqchip: GICv3: Add support for irq_[get, set] _irqchip_state() tip-bot for Marc Zyngier
2015-04-13 14:12 ` [PATCH v4 0/3] genirq: Saving/restoring the irqchip state of an irq line Eric Auger

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).