diff options
author | Mark Rutland <mark.rutland@arm.com> | 2021-10-19 19:28:39 +0200 |
---|---|---|
committer | Mark Rutland <mark.rutland@arm.com> | 2021-10-26 11:12:53 +0200 |
commit | 26dc129342cfc1e09dcf8473331efcf419a471af (patch) | |
tree | 5b0519ef8c8ddd1b55312c06c6589d1d1df33d20 /arch/csky/Kconfig | |
parent | irq: arm: perform irqentry in entry code (diff) | |
download | linux-26dc129342cfc1e09dcf8473331efcf419a471af.tar.xz linux-26dc129342cfc1e09dcf8473331efcf419a471af.zip |
irq: arm64: perform irqentry in entry code
In preparation for removing HANDLE_DOMAIN_IRQ_IRQENTRY, have arch/arm64
perform all the irqentry accounting in its entry code.
As arch/arm64 already performs portions of the irqentry logic in
enter_from_kernel_mode() and exit_to_kernel_mode(), including
rcu_irq_{enter,exit}(), the only additional calls that need to be made
are to irq_{enter,exit}_rcu(). Removing the calls to
rcu_irq_{enter,exit}() from handle_domain_irq() ensures that we inform
RCU once per IRQ entry and will correctly identify quiescent periods.
Since we should not call irq_{enter,exit}_rcu() when entering a
pseudo-NMI, el1_interrupt() is reworked to have separate __el1_irq() and
__el1_pnmi() paths for regular IRQ and psuedo-NMI entry, with
irq_{enter,exit}_irq() only called for the former.
In preparation for removing HANDLE_DOMAIN_IRQ, the irq regs are managed
in do_interrupt_handler() for both regular IRQ and pseudo-NMI. This is
currently redundant, but not harmful.
For clarity the preemption logic is moved into __el1_irq(). We should
never preempt within a pseudo-NMI, and arm64_enter_nmi() already
enforces this by incrementing the preempt_count, but it's clearer if we
never invoke the preemption logic when entering a pseudo-NMI.
Signed-off-by: Mark Rutland <mark.rutland@arm.com>
Reviewed-by: Pingfan Liu <kernelfans@gmail.com>
Reviewed-by: Marc Zyngier <maz@kernel.org>
Acked-by: Catalin Marinas <catalin.marinas@arm.com>
Cc: Catalin Marinas <catalin.marinas@arm.com>
Cc: Thomas Gleixner <tglx@linutronix.de>
Cc: Will Deacon <will@kernel.org>
Diffstat (limited to 'arch/csky/Kconfig')
0 files changed, 0 insertions, 0 deletions