FAILED: patch "[PATCH] MIPS: Loongson-3: Fix BRIDGE irq delivery problem" failed to apply to 4.14-stable tree
Subsystems (3)
[email protected]
maintainerThe patch below does not apply to the 4.14-stable tree.
If someone wants it applied there, or to any other stable or longterm tree, then please email the backport, including the original git commit id to <[email protected]>.
thanks,
greg k-h
------------------ original commit in Linus's tree ------------------
Quoted 1 line
From
360fe725f8849aaddc53475fef5d4a0c439b05aeMon Sep 17 00:00:00 2001
From: Huacai Chen <[email protected]>
Date: Wed, 5 Sep 2018 17:33:09 +0800
Subject: [PATCH] MIPS: Loongson-3: Fix BRIDGE irq delivery problem
After commit e509bd7da149dc349160 ("genirq: Allow migration of chained interrupts by installing default action") Loongson-3 fails at here:
setup_irq(LOONGSON_HT1_IRQ, &cascade_irqaction);
This is because both chained_action and cascade_irqaction don't have IRQF_SHARED flag. This will cause Loongson-3 resume fails because HPET timer interrupt can't be delivered during S3. So we set the irqchip of the chained irq to loongson_irq_chip which doesn't disable the chained irq in CP0.Status.
Patchwork: https://patchwork.linux-mips.org/patch/20434/
Cc: Ralf Baechle <[email protected]>
Cc: James Hogan <[email protected]>
Cc: [email protected]
Cc: Fuxin Zhang <[email protected]>
Cc: Zhangjin Wu <[email protected]>
Cc: Huacai Chen <[email protected]>
arch/mips/include/asm/mach-loongson64/irq.h +1 -1
@@ -10,7 +10,7 @@#define MIPS_CPU_IRQ_BASE 56#define LOONGSON_UART_IRQ (MIPS_CPU_IRQ_BASE + 2)/* UART */ -#define LOONGSON_HT1_IRQ (MIPS_CPU_IRQ_BASE + 3)/* HT1 */ +#define LOONGSON_BRIDGE_IRQ (MIPS_CPU_IRQ_BASE + 3)/* CASCADE */ #define LOONGSON_TIMER_IRQ (MIPS_CPU_IRQ_BASE + 7)/* CPU Timer */ #define LOONGSON_HT1_CFG_BASE loongson_sysconf.ht_control_base
arch/mips/loongson64/loongson-3/irq.c +3 -10
@@ -96,12 +96,6 @@ void mach_irq_dispatch(unsigned int pending) } } -static struct irqaction cascade_irqaction = { - .handler = no_action, - .flags =IRQF_NO_SUSPEND , - .name ="cascade" , -}; -static inline void mask_loongson_irq (struct irq_data *d) { }static inline void unmask_loongson_irq (struct irq_data *d) { }
@@ -147,11 +141,10 @@ void __init mach_init_irq(void)irq_set_chip_and_handler (LOONGSON_UART_IRQ , &loongson_irq_chip, handle_percpu_irq); +irq_set_chip_and_handler (LOONGSON_BRIDGE_IRQ , + &loongson_irq_chip, handle_percpu_irq); -/* setup HT1 irq */ -setup_irq (LOONGSON_HT1_IRQ , &cascade_irqaction); - -set_c0_status (STATUSF_IP2 |STATUSF_IP6 ); +set_c0_status (STATUSF_IP2 |STATUSF_IP3 |STATUSF_IP6 ); }#ifdef CONFIG_HOTPLUG_CPU