• Marc Zyngier's avatar
    genirq: Allow the irqchip state of an IRQ to be save/restored · 1b7047ed
    Marc Zyngier authored
    There is a number of cases where a kernel subsystem may want to
    introspect the state of an interrupt at the irqchip level:
    
    - When a peripheral is shared between virtual machines,
      its interrupt state becomes part of the guest's state,
      and must be switched accordingly. KVM on arm/arm64 requires
      this for its guest-visible timer
    - Some GPIO controllers seem to require peeking into the
      interrupt controller they are connected to to report
      their internal state
    
    This seem to be a pattern that is common enough for the core code
    to try and support this without too many horrible hacks. Introduce
    a pair of accessors (irq_get_irqchip_state/irq_set_irqchip_state)
    to retrieve the bits that can be of interest to another subsystem:
    pending, active, and masked.
    
    - irq_get_irqchip_state returns the state of the interrupt according
      to a parameter set to IRQCHIP_STATE_PENDING, IRQCHIP_STATE_ACTIVE,
      IRQCHIP_STATE_MASKED or IRQCHIP_STATE_LINE_LEVEL.
    - irq_set_irqchip_state similarly sets the state of the interrupt.
    Signed-off-by: default avatarMarc Zyngier <marc.zyngier@arm.com>
    Reviewed-by: default avatarBjorn Andersson <bjorn.andersson@sonymobile.com>
    Tested-by: default avatarBjorn Andersson <bjorn.andersson@sonymobile.com>
    Cc: linux-arm-kernel@lists.infradead.org
    Cc: Abhijeet Dharmapurikar <adharmap@codeaurora.org>
    Cc: Stephen Boyd <sboyd@codeaurora.org>
    Cc: Phong Vo <pvo@apm.com>
    Cc: Linus Walleij <linus.walleij@linaro.org>
    Cc: Tin Huynh <tnhuynh@apm.com>
    Cc: Y Vo <yvo@apm.com>
    Cc: Toan Le <toanle@apm.com>
    Cc: Bjorn Andersson <bjorn@kryo.se>
    Cc: Jason Cooper <jason@lakedaemon.net>
    Cc: Arnd Bergmann <arnd@arndb.de>
    Link: http://lkml.kernel.org/r/1426676484-21812-2-git-send-email-marc.zyngier@arm.comSigned-off-by: default avatarThomas Gleixner <tglx@linutronix.de>
    1b7047ed
manage.c 48.6 KB