IRQ fixes
Subsystems (4)
Linus,
Please pull the latest irq/urgent git tree from:
git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip.git irq-urgent-2021-07-11
# HEAD: 48400483565f0b7e633cbef94b139ff295b59de3 Merge tag 'irqchip-fixes-5.14-1' of git://git.kernel.org/pub/scm/linux/kernel/git/maz/arm-platforms into irq/urgent
Two fixes:
- Fix a MIPS IRQ handling RCU bug
- Remove a DocBook annotation for a parameter that doesn't exist anymore
Thanks,
Ingo
------------------>
Marc Zyngier (1):
irqchip/mips: Fix RCU violation when using irqdomain lookup on interrupt entry
Randy Dunlap (1):
genirq/irqdesc: Drop excess kernel-doc entry @lookup
arch/mips/include/asm/irq.h | 3 +++ arch/mips/kernel/irq.c | 16 ++++++++++++++++ drivers/irqchip/irq-mips-cpu.c | 10 ++++++---- drivers/irqchip/irq-mips-gic.c | 8 ++++---- drivers/irqchip/irq-pic32-evic.c | 5 ++--- kernel/irq/irqdesc.c | 1 - 6 files changed, 31 insertions(+), 12 deletions(-)
arch/mips/include/asm/irq.h +3 -0
@@ -57,6 +57,9 @@ asmlinkage void plat_irq_dispatch(void);extern void do_IRQ (unsigned int irq); +struct irq_domain ; +extern void do_domain_IRQ (struct irq_domain *domain,unsigned int irq); +extern void arch_init_irq (void );extern void spurious_interrupt (void );
arch/mips/kernel/irq.c +16 -0
@@ -21,6 +21,7 @@#include <linux/kallsyms.h> #include <linux/kgdb.h> #include <linux/ftrace.h> +#include <linux/irqdomain.h> #include <linux/atomic.h> #include <linux/uaccess.h>
@@ -107,3 +108,18 @@ void __irq_entry do_IRQ(unsigned int irq)irq_exit (); } +#ifdef CONFIG_IRQ_DOMAIN +void __irq_entry do_domain_IRQ(struct irq_domain *domain, unsigned int hwirq) +{ +struct irq_desc *desc; + +irq_enter (); +check_stack_overflow (); + + desc =irq_resolve_mapping (domain, hwirq); +if (likely (desc)) +handle_irq_desc (desc); + +irq_exit (); +} +#endif
drivers/irqchip/irq-mips-cpu.c +6 -4
@@ -127,7 +127,6 @@ static struct irq_chip mips_mt_cpu_irq_controller = { asmlinkage void __weak plat_irq_dispatch(void) {unsigned long pending =read_c0_cause () &read_c0_status () &ST0_IM ; -unsigned int virq;int irq;if (!pending) {
@@ -137,12 +136,15 @@ asmlinkage void __weak plat_irq_dispatch(void) pending >>=CAUSEB_IP ;while (pending) { +struct irq_domain *d; + irq =fls (pending) -1 ;if (IS_ENABLED (CONFIG_GENERIC_IRQ_IPI ) && irq <2 ) - virq =irq_linear_revmap (ipi_domain, irq); + d = ipi_domain;else - virq =irq_linear_revmap (irq_domain, irq); -do_IRQ (virq); + d = irq_domain; + +do_domain_IRQ (d, irq); pending &= ~BIT (irq); } }
drivers/irqchip/irq-mips-gic.c +4 -4
@@ -169,8 +169,8 @@ static void gic_handle_shared_int(bool chained)generic_handle_domain_irq (gic_irq_domain,GIC_SHARED_TO_HWIRQ (intr)); else -do_IRQ (irq_find_mapping (gic_irq_domain , -GIC_SHARED_TO_HWIRQ (intr ))); +do_domain_IRQ (gic_irq_domain , +GIC_SHARED_TO_HWIRQ (intr )); } }
@@ -320,8 +320,8 @@ static void gic_handle_local_int(bool chained)generic_handle_domain_irq (gic_irq_domain,GIC_LOCAL_TO_HWIRQ (intr)); else -do_IRQ (irq_find_mapping (gic_irq_domain , -GIC_LOCAL_TO_HWIRQ (intr ))); +do_domain_IRQ (gic_irq_domain , +GIC_LOCAL_TO_HWIRQ (intr )); } }
drivers/irqchip/irq-pic32-evic.c +2 -3
@@ -42,11 +42,10 @@ static void __iomem *evic_base; asmlinkage void __weak plat_irq_dispatch(void) { -unsigned int irq, hwirq; +unsigned int hwirq; hwirq =readl (evic_base +REG_INTSTAT ) &0xFF ; - irq =irq_linear_revmap (evic_irq_domain, hwirq); -do_IRQ (irq); +do_domain_IRQ (evic_irq_domain, hwirq); }static struct evic_chip_data *irqd_to_priv (struct irq_data *data)
kernel/irq/irqdesc.c +0 -1
@@ -682,7 +682,6 @@ EXPORT_SYMBOL_GPL(generic_handle_domain_irq);* usually for a root interrupt controller * @domain: The domain where to perform the lookup * @hwirq: The HW irq number to convert to a logical one -* @lookup: Whether to perform the domain lookup or not * @regs: Register file coming from the low-level handling code * * Returns: 0 on success, or -EINVAL if conversion has failed
The pull request you sent on Sun, 11 Jul 2021 15:40:29 +0200:
The pull request you sent on Sun, 11 Jul 2021 15:40:29 +0200:
Quoted 1 line
git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip.gitirq-urgent-2021-07-11
has been merged into torvalds/linux.git:
https://git.kernel.org/torvalds/c/98f7fdced2e0efb1599a37b3e57671a7884f3a25
Thank you!
Signature · 2 lines
Deet-doot-dot, I am a bot. https://korg.docs.kernel.org/prtracker.html