From: Mark Rutland <mark.rutland@arm.com> To: linux-kernel@vger.kernel.org Cc: aou@eecs.berkeley.edu, catalin.marinas@arm.com, deanbo422@gmail.com, green.hu@gmail.com, guoren@kernel.org, jonas@southpole.se, kernelfans@gmail.com, linux-arm-kernel@lists.infradead.org, linux@armlinux.org.uk, mark.rutland@arm.com, maz@kernel.org, nickhu@andestech.com, palmer@dabbelt.com, paulmck@kernel.org, paul.walmsley@sifive.com, peterz@infradead.org, shorne@gmail.com, stefan.kristiansson@saunalahti.fi, tglx@linutronix.de, torvalds@linux-foundation.org, tsbogend@alpha.franken.de, vgupta@kernel.org, will@kernel.org Subject: [PATCH 13/15] irq: riscv: perform irqentry in entry code Date: Thu, 21 Oct 2021 19:02:34 +0100 [thread overview] Message-ID: <20211021180236.37428-14-mark.rutland@arm.com> (raw) In-Reply-To: <20211021180236.37428-1-mark.rutland@arm.com> In preparation for removing HANDLE_DOMAIN_IRQ_IRQENTRY, have arch/riscv perform all the irqentry accounting in its entry code. As arch/riscv uses GENERIC_IRQ_MULTI_HANDLER, we can use generic_handle_arch_irq() to do so. Since generic_handle_arch_irq() handles the irq entry and setting the irq regs, and happens before the irqchip code calls handle_IPI(), we can remove the redundant irq entry and irq regs manipulation from handle_IPI(). There should be no functional change as a result of this patch. Signed-off-by: Mark Rutland <mark.rutland@arm.com> Cc: Albert Ou <aou@eecs.berkeley.edu> Cc: Marc Zyngier <maz@kernel.org> Cc: Palmer Dabbelt <palmer@dabbelt.com> Cc: Paul Walmsley <paul.walmsley@sifive.com> Cc: Thomas Gleixner <tglx@linutronix.de> --- arch/riscv/Kconfig | 1 - arch/riscv/kernel/entry.S | 3 +-- arch/riscv/kernel/smp.c | 9 +-------- 3 files changed, 2 insertions(+), 11 deletions(-) diff --git a/arch/riscv/Kconfig b/arch/riscv/Kconfig index 740653063a56..301a54233c7e 100644 --- a/arch/riscv/Kconfig +++ b/arch/riscv/Kconfig @@ -63,7 +63,6 @@ config RISCV select GENERIC_SMP_IDLE_THREAD select GENERIC_TIME_VSYSCALL if MMU && 64BIT select HANDLE_DOMAIN_IRQ - select HANDLE_DOMAIN_IRQ_IRQENTRY select HAVE_ARCH_AUDITSYSCALL select HAVE_ARCH_JUMP_LABEL if !XIP_KERNEL select HAVE_ARCH_JUMP_LABEL_RELATIVE if !XIP_KERNEL diff --git a/arch/riscv/kernel/entry.S b/arch/riscv/kernel/entry.S index 98f502654edd..64236f7efde5 100644 --- a/arch/riscv/kernel/entry.S +++ b/arch/riscv/kernel/entry.S @@ -130,8 +130,7 @@ skip_context_tracking: /* Handle interrupts */ move a0, sp /* pt_regs */ - la a1, handle_arch_irq - REG_L a1, (a1) + la a1, generic_handle_arch_irq jr a1 1: /* diff --git a/arch/riscv/kernel/smp.c b/arch/riscv/kernel/smp.c index 921d9d7df400..2f6da845c9ae 100644 --- a/arch/riscv/kernel/smp.c +++ b/arch/riscv/kernel/smp.c @@ -140,12 +140,9 @@ void arch_irq_work_raise(void) void handle_IPI(struct pt_regs *regs) { - struct pt_regs *old_regs = set_irq_regs(regs); unsigned long *pending_ipis = &ipi_data[smp_processor_id()].bits; unsigned long *stats = ipi_data[smp_processor_id()].stats; - irq_enter(); - riscv_clear_ipi(); while (true) { @@ -156,7 +153,7 @@ void handle_IPI(struct pt_regs *regs) ops = xchg(pending_ipis, 0); if (ops == 0) - goto done; + return; if (ops & (1 << IPI_RESCHEDULE)) { stats[IPI_RESCHEDULE]++; @@ -189,10 +186,6 @@ void handle_IPI(struct pt_regs *regs) /* Order data access and bit testing. */ mb(); } - -done: - irq_exit(); - set_irq_regs(old_regs); } static const char * const ipi_names[] = { -- 2.11.0
WARNING: multiple messages have this Message-ID (diff)
From: Mark Rutland <mark.rutland@arm.com> To: linux-kernel@vger.kernel.org Cc: aou@eecs.berkeley.edu, catalin.marinas@arm.com, deanbo422@gmail.com, green.hu@gmail.com, guoren@kernel.org, jonas@southpole.se, kernelfans@gmail.com, linux-arm-kernel@lists.infradead.org, linux@armlinux.org.uk, mark.rutland@arm.com, maz@kernel.org, nickhu@andestech.com, palmer@dabbelt.com, paulmck@kernel.org, paul.walmsley@sifive.com, peterz@infradead.org, shorne@gmail.com, stefan.kristiansson@saunalahti.fi, tglx@linutronix.de, torvalds@linux-foundation.org, tsbogend@alpha.franken.de, vgupta@kernel.org, will@kernel.org Subject: [PATCH 13/15] irq: riscv: perform irqentry in entry code Date: Thu, 21 Oct 2021 19:02:34 +0100 [thread overview] Message-ID: <20211021180236.37428-14-mark.rutland@arm.com> (raw) In-Reply-To: <20211021180236.37428-1-mark.rutland@arm.com> In preparation for removing HANDLE_DOMAIN_IRQ_IRQENTRY, have arch/riscv perform all the irqentry accounting in its entry code. As arch/riscv uses GENERIC_IRQ_MULTI_HANDLER, we can use generic_handle_arch_irq() to do so. Since generic_handle_arch_irq() handles the irq entry and setting the irq regs, and happens before the irqchip code calls handle_IPI(), we can remove the redundant irq entry and irq regs manipulation from handle_IPI(). There should be no functional change as a result of this patch. Signed-off-by: Mark Rutland <mark.rutland@arm.com> Cc: Albert Ou <aou@eecs.berkeley.edu> Cc: Marc Zyngier <maz@kernel.org> Cc: Palmer Dabbelt <palmer@dabbelt.com> Cc: Paul Walmsley <paul.walmsley@sifive.com> Cc: Thomas Gleixner <tglx@linutronix.de> --- arch/riscv/Kconfig | 1 - arch/riscv/kernel/entry.S | 3 +-- arch/riscv/kernel/smp.c | 9 +-------- 3 files changed, 2 insertions(+), 11 deletions(-) diff --git a/arch/riscv/Kconfig b/arch/riscv/Kconfig index 740653063a56..301a54233c7e 100644 --- a/arch/riscv/Kconfig +++ b/arch/riscv/Kconfig @@ -63,7 +63,6 @@ config RISCV select GENERIC_SMP_IDLE_THREAD select GENERIC_TIME_VSYSCALL if MMU && 64BIT select HANDLE_DOMAIN_IRQ - select HANDLE_DOMAIN_IRQ_IRQENTRY select HAVE_ARCH_AUDITSYSCALL select HAVE_ARCH_JUMP_LABEL if !XIP_KERNEL select HAVE_ARCH_JUMP_LABEL_RELATIVE if !XIP_KERNEL diff --git a/arch/riscv/kernel/entry.S b/arch/riscv/kernel/entry.S index 98f502654edd..64236f7efde5 100644 --- a/arch/riscv/kernel/entry.S +++ b/arch/riscv/kernel/entry.S @@ -130,8 +130,7 @@ skip_context_tracking: /* Handle interrupts */ move a0, sp /* pt_regs */ - la a1, handle_arch_irq - REG_L a1, (a1) + la a1, generic_handle_arch_irq jr a1 1: /* diff --git a/arch/riscv/kernel/smp.c b/arch/riscv/kernel/smp.c index 921d9d7df400..2f6da845c9ae 100644 --- a/arch/riscv/kernel/smp.c +++ b/arch/riscv/kernel/smp.c @@ -140,12 +140,9 @@ void arch_irq_work_raise(void) void handle_IPI(struct pt_regs *regs) { - struct pt_regs *old_regs = set_irq_regs(regs); unsigned long *pending_ipis = &ipi_data[smp_processor_id()].bits; unsigned long *stats = ipi_data[smp_processor_id()].stats; - irq_enter(); - riscv_clear_ipi(); while (true) { @@ -156,7 +153,7 @@ void handle_IPI(struct pt_regs *regs) ops = xchg(pending_ipis, 0); if (ops == 0) - goto done; + return; if (ops & (1 << IPI_RESCHEDULE)) { stats[IPI_RESCHEDULE]++; @@ -189,10 +186,6 @@ void handle_IPI(struct pt_regs *regs) /* Order data access and bit testing. */ mb(); } - -done: - irq_exit(); - set_irq_regs(old_regs); } static const char * const ipi_names[] = { -- 2.11.0 _______________________________________________ linux-arm-kernel mailing list linux-arm-kernel@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
next prev parent reply other threads:[~2021-10-21 18:03 UTC|newest] Thread overview: 108+ messages / expand[flat|nested] mbox.gz Atom feed top 2021-10-21 18:02 [PATCH 00/15] irq: remove handle_domain_{irq,nmi}() Mark Rutland 2021-10-21 18:02 ` Mark Rutland 2021-10-21 18:02 ` [PATCH 01/15] irq: mips: avoid nested irq_enter() Mark Rutland 2021-10-21 18:02 ` Mark Rutland 2021-10-22 10:38 ` Marc Zyngier 2021-10-22 10:38 ` Marc Zyngier 2021-10-22 15:05 ` Mark Rutland 2021-10-22 15:05 ` Mark Rutland 2021-10-24 15:31 ` Thomas Bogendoerfer 2021-10-24 15:31 ` Thomas Bogendoerfer 2021-10-21 18:02 ` [PATCH 02/15] irq: mips: stop (ab)using handle_domain_irq() Mark Rutland 2021-10-21 18:02 ` Mark Rutland 2021-10-24 15:30 ` Thomas Bogendoerfer 2021-10-24 15:30 ` Thomas Bogendoerfer 2021-10-21 18:02 ` [PATCH 03/15] irq: mips: simplify do_domain_IRQ() Mark Rutland 2021-10-21 18:02 ` Mark Rutland 2021-10-24 15:31 ` Thomas Bogendoerfer 2021-10-24 15:31 ` Thomas Bogendoerfer 2021-10-28 17:07 ` Guenter Roeck 2021-10-28 17:07 ` Guenter Roeck 2021-10-28 17:11 ` Mark Rutland 2021-10-28 17:11 ` Mark Rutland 2021-10-21 18:02 ` [PATCH 04/15] irq: simplify handle_domain_{irq,nmi}() Mark Rutland 2021-10-21 18:02 ` Mark Rutland 2021-10-22 10:52 ` Marc Zyngier 2021-10-22 10:52 ` Marc Zyngier 2021-10-22 15:05 ` Mark Rutland 2021-10-22 15:05 ` Mark Rutland 2021-10-21 18:02 ` [PATCH 05/15] irq: add generic_handle_arch_irq() Mark Rutland 2021-10-21 18:02 ` Mark Rutland 2021-10-22 2:10 ` Pingfan Liu 2021-10-22 2:10 ` Pingfan Liu 2021-10-22 9:02 ` Mark Rutland 2021-10-22 9:02 ` Mark Rutland 2021-10-22 2:33 ` Guo Ren 2021-10-22 2:33 ` Guo Ren 2021-10-22 8:52 ` Mark Rutland 2021-10-22 8:52 ` Mark Rutland 2021-10-24 1:53 ` Guo Ren 2021-10-24 1:53 ` Guo Ren 2021-10-21 18:02 ` [PATCH 06/15] irq: arc: avoid CONFIG_HANDLE_DOMAIN_IRQ Mark Rutland 2021-10-21 18:02 ` Mark Rutland 2021-10-21 18:02 ` [PATCH 07/15] irq: nds32: " Mark Rutland 2021-10-21 18:02 ` Mark Rutland 2021-10-22 6:35 ` Greentime Hu 2021-10-22 6:35 ` Greentime Hu 2021-10-21 18:02 ` [PATCH 08/15] irq: add a (temporary) CONFIG_HANDLE_DOMAIN_IRQ_IRQENTRY Mark Rutland 2021-10-21 18:02 ` Mark Rutland 2021-10-21 18:02 ` [PATCH 09/15] irq: arm: perform irqentry in entry code Mark Rutland 2021-10-21 18:02 ` Mark Rutland 2021-10-22 15:18 ` Vladimir Murzin 2021-10-22 15:18 ` Vladimir Murzin 2021-10-22 15:36 ` Mark Rutland 2021-10-22 15:36 ` Mark Rutland 2021-10-22 16:34 ` Vladimir Murzin 2021-10-22 16:34 ` Vladimir Murzin 2021-10-22 17:58 ` Mark Rutland 2021-10-22 17:58 ` Mark Rutland 2021-10-22 18:43 ` Marc Zyngier 2021-10-22 18:43 ` Marc Zyngier 2021-10-23 12:06 ` Vladimir Murzin 2021-10-23 12:06 ` Vladimir Murzin 2021-10-23 13:18 ` Marc Zyngier 2021-10-23 13:18 ` Marc Zyngier 2021-10-23 13:36 ` Vladimir Murzin 2021-10-23 13:36 ` Vladimir Murzin 2021-11-30 8:49 ` Vladimir Murzin 2021-11-30 8:49 ` Vladimir Murzin 2021-12-01 7:56 ` Marc Zyngier 2021-12-01 7:56 ` Marc Zyngier 2021-10-21 18:02 ` [PATCH 10/15] irq: arm64: " Mark Rutland 2021-10-21 18:02 ` Mark Rutland 2021-10-22 1:57 ` Pingfan Liu 2021-10-22 1:57 ` Pingfan Liu 2021-10-25 18:00 ` Catalin Marinas 2021-10-25 18:00 ` Catalin Marinas 2021-10-21 18:02 ` [PATCH 11/15] irq: csky: " Mark Rutland 2021-10-21 18:02 ` Mark Rutland 2021-10-22 2:19 ` Guo Ren 2021-10-22 2:19 ` Guo Ren 2021-10-22 2:26 ` Guo Ren 2021-10-22 2:26 ` Guo Ren 2021-10-21 18:02 ` [PATCH 12/15] irq: openrisc: " Mark Rutland 2021-10-21 18:02 ` Mark Rutland 2021-10-22 20:40 ` Stafford Horne 2021-10-22 20:40 ` Stafford Horne 2021-10-21 18:02 ` Mark Rutland [this message] 2021-10-21 18:02 ` [PATCH 13/15] irq: riscv: " Mark Rutland 2021-10-22 1:59 ` Guo Ren 2021-10-22 1:59 ` Guo Ren 2021-10-27 21:22 ` Palmer Dabbelt 2021-10-27 21:22 ` Palmer Dabbelt 2021-10-21 18:02 ` [PATCH 14/15] irq: remove CONFIG_HANDLE_DOMAIN_IRQ_IRQENTRY Mark Rutland 2021-10-21 18:02 ` Mark Rutland 2021-10-21 18:02 ` [PATCH 15/15] irq: remove handle_domain_{irq,nmi}() Mark Rutland 2021-10-21 18:02 ` Mark Rutland 2021-10-22 10:05 ` Marc Zyngier 2021-10-22 10:05 ` Marc Zyngier 2021-10-22 15:06 ` Mark Rutland 2021-10-22 15:06 ` Mark Rutland 2021-10-22 1:26 ` [PATCH 00/15] " Linus Torvalds 2021-10-22 1:26 ` Linus Torvalds 2021-10-22 11:20 ` Marc Zyngier 2021-10-22 11:20 ` Marc Zyngier 2021-10-22 15:10 ` Mark Rutland 2021-10-22 15:10 ` Mark Rutland 2021-10-23 16:06 ` Marc Zyngier 2021-10-23 16:06 ` Marc Zyngier
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=20211021180236.37428-14-mark.rutland@arm.com \ --to=mark.rutland@arm.com \ --cc=aou@eecs.berkeley.edu \ --cc=catalin.marinas@arm.com \ --cc=deanbo422@gmail.com \ --cc=green.hu@gmail.com \ --cc=guoren@kernel.org \ --cc=jonas@southpole.se \ --cc=kernelfans@gmail.com \ --cc=linux-arm-kernel@lists.infradead.org \ --cc=linux-kernel@vger.kernel.org \ --cc=linux@armlinux.org.uk \ --cc=maz@kernel.org \ --cc=nickhu@andestech.com \ --cc=palmer@dabbelt.com \ --cc=paul.walmsley@sifive.com \ --cc=paulmck@kernel.org \ --cc=peterz@infradead.org \ --cc=shorne@gmail.com \ --cc=stefan.kristiansson@saunalahti.fi \ --cc=tglx@linutronix.de \ --cc=torvalds@linux-foundation.org \ --cc=tsbogend@alpha.franken.de \ --cc=vgupta@kernel.org \ --cc=will@kernel.org \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.