From: Jiaxun Yang <jiaxun.yang@flygoat.com> To: linux-mips@vger.kernel.org Cc: Jiaxun Yang <jiaxun.yang@flygoat.com>, Huacai Chen <chenhc@lemote.com>, Thomas Gleixner <tglx@linutronix.de>, Jason Cooper <jason@lakedaemon.net>, Marc Zyngier <maz@kernel.org>, Rob Herring <robh+dt@kernel.org>, Mark Rutland <mark.rutland@arm.com>, Thomas Bogendoerfer <tsbogend@alpha.franken.de>, Greg Kroah-Hartman <gregkh@linuxfoundation.org>, Allison Randal <allison@lohutok.net>, linux-kernel@vger.kernel.org, devicetree@vger.kernel.org Subject: [PATCH v6 02/11] irqchip: loongson-liointc: Workaround LPC IRQ Errata Date: Tue, 24 Mar 2020 23:35:59 +0800 Message-ID: <20200324153624.23109-3-jiaxun.yang@flygoat.com> (raw) In-Reply-To: <20200324153624.23109-1-jiaxun.yang@flygoat.com> The 1.0 version of that controller has a bug that status bit of LPC IRQ sometimes doesn't get set correctly. So we can always blame LPC IRQ when spurious interrupt happens at the parent interrupt line which LPC IRQ supposed to route to. Co-developed-by: Huacai Chen <chenhc@lemote.com> Signed-off-by: Jiaxun Yang <jiaxun.yang@flygoat.com> --- drivers/irqchip/irq-loongson-liointc.c | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/drivers/irqchip/irq-loongson-liointc.c b/drivers/irqchip/irq-loongson-liointc.c index 8b6d7b8ddaca..d5054e90eab8 100644 --- a/drivers/irqchip/irq-loongson-liointc.c +++ b/drivers/irqchip/irq-loongson-liointc.c @@ -32,6 +32,8 @@ #define LIOINTC_SHIFT_INTx 4 +#define LIOINTC_ERRATA_IRQ 10 + struct liointc_handler_data { struct liointc_priv *priv; u32 parent_int_map; @@ -41,6 +43,7 @@ struct liointc_priv { struct irq_chip_generic *gc; struct liointc_handler_data handler[LIOINTC_NUM_PARENT]; u8 map_cache[LIOINTC_CHIP_IRQ]; + bool have_lpc_irq_errata; }; static void liointc_chained_handle_irq(struct irq_desc *desc) @@ -54,8 +57,14 @@ static void liointc_chained_handle_irq(struct irq_desc *desc) pending = readl(gc->reg_base + LIOINTC_REG_INTC_STATUS); - if (!pending) - spurious_interrupt(); + if (!pending) { + /* Always blame LPC IRQ if we have that bug and LPC IRQ is enabled */ + if (handler->priv->have_lpc_irq_errata && + (handler->parent_int_map & ~gc->mask_cache & BIT(LIOINTC_ERRATA_IRQ))) + pending = BIT(LIOINTC_ERRATA_IRQ); + else + spurious_interrupt(); + } while (pending) { int bit = __ffs(pending); @@ -164,6 +173,9 @@ int __init liointc_of_init(struct device_node *node, goto out_iounmap; } + if (of_device_is_compatible(node, "loongson,liointc-1.0")) + priv->have_lpc_irq_errata = true; + sz = of_property_read_variable_u32_array(node, "loongson,parent_int_map", &of_parent_int_map[0], LIOINTC_NUM_PARENT, LIOINTC_NUM_PARENT); -- 2.26.0.rc2
next prev parent reply index Thread overview: 175+ messages / expand[flat|nested] mbox.gz Atom feed top 2019-08-27 8:52 [PATCH 00/13] Modernize Loongson64 Machine Jiaxun Yang 2019-08-27 8:52 ` [PATCH 01/13] MIPS: Loongson64: Rename CPU TYPES Jiaxun Yang 2019-08-27 8:52 ` [PATCH 02/13] MIPS: Loongson64: Sepreate loongson2ef/loongson64 code Jiaxun Yang 2019-08-27 22:05 ` Aaro Koskinen 2019-08-28 0:37 ` Jiaxun Yang 2019-09-02 17:51 ` Aaro Koskinen 2019-08-27 8:52 ` [PATCH 03/13] MAINTAINERS: Fix entries for new loongson64 path Jiaxun Yang 2019-08-27 8:52 ` [PATCH 04/13] irqchip: Add driver for Loongson-3 I/O interrupt controller Jiaxun Yang 2019-08-27 16:45 ` Marc Zyngier 2019-08-28 0:27 ` Jiaxun Yang 2019-08-28 6:59 ` Marc Zyngier 2019-08-28 15:31 ` Jiaxun Yang 2019-08-28 16:02 ` Marc Zyngier 2019-08-27 8:52 ` [PATCH 05/13] dt-bindings: interrupt-controller: Add Loongson-3 IOINTC Jiaxun Yang 2019-08-27 13:08 ` Rob Herring 2019-08-27 8:52 ` [PATCH 06/13] irqchip: Add driver for Loongson-3 HyperTransport interrupt controller Jiaxun Yang 2019-08-27 12:53 ` Marc Zyngier 2019-08-27 8:52 ` [PATCH 07/13] dt-bindings: interrupt-controller: Add Loongson-3 HTINTC Jiaxun Yang 2019-08-27 12:49 ` Rob Herring 2019-08-27 14:08 ` Jiaxun Yang 2019-08-27 8:52 ` [PATCH 08/13] irqchip: i8259: Add plat-poll support Jiaxun Yang 2019-08-27 8:52 ` [PATCH 09/13] irqchip: mips-cpu: Convert to simple domain Jiaxun Yang 2019-08-27 8:52 ` [PATCH 10/13] MIPS: Loongson64: Drop legacy IRQ code Jiaxun Yang 2019-08-27 8:53 ` [PATCH 11/13] dt-bindings: mips: Add loongson cpus & boards Jiaxun Yang 2019-08-27 12:45 ` Rob Herring 2019-08-27 14:18 ` Jiaxun Yang 2019-08-27 20:41 ` Paul Burton 2019-08-28 0:15 ` Jiaxun Yang 2019-09-02 14:50 ` Rob Herring 2019-09-03 9:07 ` Paul Burton 2019-09-04 3:33 ` Huacai Chen 2019-08-27 8:53 ` [PATCH 12/13] MIPS: Loongson64: Add generic dts Jiaxun Yang 2019-08-27 8:53 ` [PATCH 13/13] MIPS: Loongson64: Load built-in dtbs Jiaxun Yang 2019-08-27 13:25 ` Re:[PATCH 00/13] Modernize Loongson64 Machine 陈华才 2019-08-27 14:39 ` [PATCH " Jiaxun Yang 2019-08-30 4:25 ` [PATCH v1 00/18] " Jiaxun Yang 2019-08-30 4:25 ` [PATCH v1 01/18] MIPS: Loongson64: Rename CPU TYPES Jiaxun Yang 2019-08-30 4:25 ` [PATCH v1 02/18] MIPS: Loongson64: separate loongson2ef/loongson64 code Jiaxun Yang 2019-08-30 4:25 ` [PATCH v1 03/18] MAINTAINERS: Fix entries for new loongson64 path Jiaxun Yang 2019-08-30 4:25 ` [PATCH v1 04/18] irqchip: Export generic chip domain map/unmap functions Jiaxun Yang 2019-08-30 4:25 ` [PATCH v1 05/18] irqchip: Add driver for Loongson-3 I/O interrupt controller Jiaxun Yang 2019-08-30 4:25 ` [PATCH v1 06/18] dt-bindings: interrupt-controller: Add Loongson-3 IOINTC Jiaxun Yang 2019-09-05 14:42 ` [PATCH v2 00/19] Modernize Loongson64 Machine Jiaxun Yang 2019-09-05 14:42 ` [PATCH v2 01/19] MIPS: Loongson64: Rename CPU TYPES Jiaxun Yang 2019-09-05 14:42 ` [PATCH v2 02/19] MIPS: Loongson64: separate loongson2ef/loongson64 code Jiaxun Yang 2019-09-10 0:12 ` Paul Burton 2019-09-16 2:23 ` Huacai Chen 2019-09-18 0:38 ` Jiaxun Yang 2019-09-05 14:43 ` [PATCH v2 03/19] MAINTAINERS: Fix entries for new loongson64 path Jiaxun Yang 2019-09-05 14:43 ` [PATCH v2 04/19] irqchip: Export generic chip domain map/unmap functions Jiaxun Yang 2019-09-05 14:43 ` [PATCH v2 05/19] irqchip: Add driver for Loongson-3 I/O interrupt controller Jiaxun Yang 2019-09-05 14:43 ` [PATCH v2 06/19] dt-bindings: interrupt-controller: Add Loongson-3 IOINTC Jiaxun Yang 2019-09-17 21:26 ` Rob Herring 2019-09-05 14:43 ` [PATCH v2 07/19] irqchip: Add driver for Loongson-3 HyperTransport interrupt controller Jiaxun Yang 2019-09-05 14:43 ` [PATCH v2 08/19] dt-bindings: interrupt-controller: Add Loongson-3 HTINTC Jiaxun Yang 2019-09-05 14:43 ` [PATCH v2 09/19] irqchip: i8259: Add plat-poll support Jiaxun Yang 2019-09-05 14:43 ` [PATCH v2 10/19] irqchip: mips-cpu: Convert to simple domain Jiaxun Yang 2019-09-05 14:43 ` [PATCH v2 11/19] MIPS: Loongson64: Drop legacy IRQ code Jiaxun Yang 2019-09-05 14:43 ` [PATCH v2 12/19] dt-bindings: mips: Add loongson boards Jiaxun Yang 2019-09-30 13:23 ` Rob Herring 2019-09-05 14:43 ` [PATCH v2 13/19] dt-bindings: Document loongson vendor-prefix Jiaxun Yang 2019-09-05 14:43 ` [PATCH v2 14/19] MIPS: Loongson64: Add generic dts Jiaxun Yang 2019-09-07 2:53 ` Huacai Chen 2019-09-07 3:14 ` Jiaxun Yang 2019-09-30 13:20 ` Rob Herring 2019-09-05 14:43 ` [PATCH v2 15/19] MIPS: Loongson64: Load built-in dtbs Jiaxun Yang 2019-09-05 14:43 ` [PATCH v2 16/19] GPIO: loongson: Drop Loongson-3A/3B support Jiaxun Yang 2019-09-05 14:43 ` [PATCH v2 17/19] MIPS: Loongson: Regenerate defconfigs Jiaxun Yang 2019-09-05 14:43 ` [PATCH v2 18/19] MAINTAINERS: Add new pathes to LOONGSON64 ARCHITECTURE Jiaxun Yang 2019-09-05 14:43 ` [PATCH v2 19/19] MAINTAINERS: Add myself as maintainer of LOONGSON64 Jiaxun Yang 2019-09-07 3:13 ` [PATCH v2 00/19] Modernize Loongson64 Machine Huacai Chen 2019-09-12 6:30 ` [PATCH 00/13] " Matt Turner 2019-09-18 0:33 ` Jiaxun Yang 2020-01-12 8:14 ` [PATCH v3 00/10] " Jiaxun Yang 2020-01-12 8:14 ` [PATCH v3 01/10] dt-bindings: Document loongson vendor-prefix Jiaxun Yang 2020-01-15 18:59 ` Paul Burton 2020-01-12 8:14 ` [PATCH v3 02/10] irqchip: Add driver for Loongson I/O interrupt controller Jiaxun Yang 2020-01-12 8:14 ` [PATCH v3 03/10] dt-bindings: interrupt-controller: Add Loongson IOINTC Jiaxun Yang 2020-01-13 3:44 ` Huacai Chen 2020-01-13 3:40 ` Jiaxun Yang 2020-01-12 8:14 ` [PATCH v3 04/10] irqchip: Add driver for Loongson-3 HyperTransport PIC controller Jiaxun Yang 2020-01-12 8:14 ` [PATCH v3 05/10] dt-bindings: interrupt-controller: Add Loongson-3 HTPIC Jiaxun Yang 2020-01-12 8:14 ` [PATCH v3 06/10] irqchip: mips-cpu: Convert to simple domain Jiaxun Yang 2020-01-12 8:14 ` [PATCH v3 07/10] MIPS: Loongson64: Drop legacy IRQ code Jiaxun Yang 2020-01-12 8:14 ` [PATCH v3 08/10] dt-bindings: mips: Add loongson boards Jiaxun Yang 2020-01-13 3:39 ` Huacai Chen 2020-01-12 8:14 ` [PATCH v3 09/10] MIPS: Loongson64: Add generic dts Jiaxun Yang 2020-01-12 8:14 ` [PATCH v3 10/10] MIPS: Loongson64: Load built-in dtbs Jiaxun Yang 2020-01-13 3:38 ` [PATCH v3 00/10] Modernize Loongson64 Machine Huacai Chen 2020-02-21 5:09 ` [PATCH v4 00/10] Modernize Loongson64 Machine v4 Jiaxun Yang 2020-02-21 5:09 ` [PATCH v4 01/10] irqchip: Add driver for Loongson I/O Local Interrupt Controller Jiaxun Yang 2020-02-29 2:30 ` 回复:[PATCH " Jiaxun Yang 2020-03-07 14:50 ` [PATCH " Marc Zyngier 2020-02-21 5:09 ` [PATCH v4 02/10] dt-bindings: interrupt-controller: Add Loongson LIOINTC Jiaxun Yang 2020-02-21 5:09 ` [PATCH v4 03/10] irqchip: Add driver for Loongson-3 HyperTransport PIC controller Jiaxun Yang 2020-03-07 15:01 ` Marc Zyngier 2020-02-21 5:09 ` [PATCH v4 04/10] dt-bindings: interrupt-controller: Add Loongson-3 HTPIC Jiaxun Yang 2020-02-21 5:09 ` [PATCH v4 05/10] irqchip: mips-cpu: Convert to simple domain Jiaxun Yang 2020-02-21 5:09 ` [PATCH v4 06/10] MIPS: Loongson64: Drop legacy IRQ code Jiaxun Yang 2020-02-21 5:09 ` [PATCH v4 07/10] dt-bindings: mips: Add loongson boards Jiaxun Yang 2020-02-26 16:52 ` Rob Herring 2020-02-29 2:28 ` Jiaxun Yang 2020-02-21 5:09 ` [PATCH v4 08/10] MIPS: Loongson64: Add generic dts Jiaxun Yang 2020-02-21 5:09 ` [PATCH v4 09/10] MIPS: Loongson64: Load built-in dtbs Jiaxun Yang 2020-02-21 5:09 ` [PATCH v4 10/10] MIPS: Loongson64: Move MIPS_CPU_IRQ_BASE Jiaxun Yang 2020-03-18 6:20 ` [PATCH v5 00/11] Modernize Loongson64 Machine v5 Jiaxun Yang 2020-03-18 6:20 ` [PATCH v5 01/11] irqchip: Add driver for Loongson I/O Local Interrupt Controller Jiaxun Yang 2020-03-18 6:20 ` [PATCH v5 02/11] irqchip: loongson-liointc: Workaround LPC IRQ Errata Jiaxun Yang 2020-03-18 6:20 ` [PATCH v5 03/11] dt-bindings: interrupt-controller: Add Loongson LIOINTC Jiaxun Yang 2020-03-18 6:20 ` [PATCH v5 04/11] irqchip: Add driver for Loongson-3 HyperTransport PIC controller Jiaxun Yang 2020-03-21 14:14 ` Marc Zyngier 2020-03-18 6:20 ` [PATCH v5 05/11] dt-bindings: interrupt-controller: Add Loongson-3 HTPIC Jiaxun Yang 2020-03-18 6:20 ` [PATCH v5 06/11] irqchip: mips-cpu: Convert to simple domain Jiaxun Yang 2020-03-18 6:20 ` [PATCH v5 07/11] MIPS: Loongson64: Drop legacy IRQ code Jiaxun Yang 2020-03-18 6:20 ` [PATCH v5 08/11] dt-bindings: mips: Add loongson boards Jiaxun Yang 2020-03-20 22:36 ` Rob Herring 2020-03-22 5:33 ` Zhou Yanjie 2020-03-18 6:20 ` [PATCH v5 09/11] MIPS: Loongson64: Add generic dts Jiaxun Yang 2020-03-18 6:20 ` [PATCH v5 10/11] MIPS: Loongson64: Load built-in dtbs Jiaxun Yang 2020-03-18 6:20 ` [PATCH v5 11/11] MIPS: Loongson64: Move MIPS_CPU_IRQ_BASE Jiaxun Yang 2020-03-24 15:35 ` [PATCH v6 00/11] Modernize Loongson64 Machine v6 Jiaxun Yang 2020-03-24 15:35 ` [PATCH v6 01/11] irqchip: Add driver for Loongson I/O Local Interrupt Controller Jiaxun Yang 2020-03-24 15:35 ` Jiaxun Yang [this message] 2020-03-25 1:52 ` [PATCH v6 02/11] irqchip: loongson-liointc: Workaround LPC IRQ Errata Huacai Chen 2020-03-25 2:31 ` Jiaxun Yang 2020-03-24 15:36 ` [PATCH v6 03/11] dt-bindings: interrupt-controller: Add Loongson LIOINTC Jiaxun Yang 2020-03-24 15:36 ` [PATCH v6 04/11] irqchip: Add driver for Loongson-3 HyperTransport PIC controller Jiaxun Yang 2020-03-24 15:36 ` [PATCH v6 05/11] dt-bindings: interrupt-controller: Add Loongson-3 HTPIC Jiaxun Yang 2020-03-24 15:36 ` [PATCH v6 06/11] irqchip: mips-cpu: Convert to simple domain Jiaxun Yang 2020-03-24 15:36 ` [PATCH v6 07/11] MIPS: Loongson64: Drop legacy IRQ code Jiaxun Yang 2020-03-24 15:36 ` [PATCH v6 08/11] dt-bindings: mips: Add loongson boards Jiaxun Yang 2020-03-24 15:36 ` [PATCH v6 09/11] MIPS: Loongson64: Add generic dts Jiaxun Yang 2020-03-25 2:11 ` Huacai Chen 2020-03-25 2:08 ` Jiaxun Yang 2020-03-25 2:49 ` Huacai Chen 2020-03-24 15:36 ` [PATCH v6 10/11] MIPS: Loongson64: Load built-in dtbs Jiaxun Yang 2020-03-24 15:36 ` [PATCH v6 11/11] MIPS: Loongson64: Move MIPS_CPU_IRQ_BASE Jiaxun Yang 2020-03-24 15:47 ` [PATCH v6 00/11] Modernize Loongson64 Machine v6 Marc Zyngier 2020-03-24 15:51 ` Jiaxun Yang 2020-03-24 18:07 ` Thomas Bogendoerfer 2020-03-25 2:28 ` [PATCH v7 00/12] " Jiaxun Yang 2020-03-25 2:28 ` [PATCH v7 01/12] irqchip: Add driver for Loongson I/O Local Interrupt Controller Jiaxun Yang 2020-03-25 11:25 ` Paul Cercueil 2020-03-25 11:35 ` Marc Zyngier 2020-03-25 2:28 ` [PATCH v7 01/12] MIPS: Loongson: Do not initialise statics to 0 Jiaxun Yang 2020-03-25 2:28 ` [PATCH v7 02/12] irqchip: loongson-liointc: Workaround LPC IRQ Errata Jiaxun Yang 2020-03-25 2:28 ` [PATCH v7 02/12] MIPS: DTS: CI20: add DT node for IR sensor Jiaxun Yang 2020-03-25 2:28 ` [PATCH v7 03/12] dt-bindings: interrupt-controller: Add Loongson LIOINTC Jiaxun Yang 2020-03-25 3:54 ` [PATCH v8 00/11] Modernize Loongson64 Machine v8 Jiaxun Yang 2020-03-25 3:54 ` [PATCH v8 01/11] irqchip: Add driver for Loongson I/O Local Interrupt Controller Jiaxun Yang 2020-03-25 3:54 ` [PATCH v8 02/11] irqchip: loongson-liointc: Workaround LPC IRQ Errata Jiaxun Yang 2020-03-25 3:54 ` [PATCH v8 03/11] dt-bindings: interrupt-controller: Add Loongson LIOINTC Jiaxun Yang 2020-03-25 3:54 ` [PATCH v8 04/11] irqchip: Add driver for Loongson-3 HyperTransport PIC controller Jiaxun Yang 2020-03-25 3:54 ` [PATCH v8 05/11] dt-bindings: interrupt-controller: Add Loongson-3 HTPIC Jiaxun Yang 2020-03-25 3:54 ` [PATCH v8 06/11] irqchip: mips-cpu: Convert to simple domain Jiaxun Yang 2020-03-25 12:37 ` Thomas Bogendoerfer 2020-03-25 12:48 ` Jiaxun Yang 2020-03-25 13:00 ` Marc Zyngier 2020-03-25 13:07 ` Jiaxun Yang 2020-03-25 13:57 ` Marc Zyngier 2020-03-25 13:59 ` Jiaxun Yang 2020-03-25 14:15 ` Marc Zyngier 2020-03-25 14:31 ` Jiaxun Yang 2020-03-25 15:02 ` Marc Zyngier 2020-03-25 15:04 ` Thomas Bogendoerfer 2020-03-25 15:09 ` Jiaxun Yang 2020-03-25 15:46 ` Thomas Bogendoerfer 2020-03-25 16:02 ` Jiaxun Yang 2020-03-25 16:31 ` Thomas Bogendoerfer 2020-03-25 3:55 ` [PATCH v8 07/11] MIPS: Loongson64: Drop legacy IRQ code Jiaxun Yang 2020-03-25 3:55 ` [PATCH v8 08/11] dt-bindings: mips: Add loongson boards Jiaxun Yang 2020-03-25 3:55 ` [PATCH v8 09/11] MIPS: Loongson64: Add generic dts Jiaxun Yang 2020-03-25 3:55 ` [PATCH v8 10/11] MIPS: Loongson64: Load built-in dtbs Jiaxun Yang 2020-03-25 3:55 ` [PATCH v8 11/11] MAINTAINERS: Update Loongson64 entry Jiaxun Yang 2020-03-25 17:33 ` [PATCH v8 00/11] Modernize Loongson64 Machine v8 Thomas Bogendoerfer
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=20200324153624.23109-3-jiaxun.yang@flygoat.com \ --to=jiaxun.yang@flygoat.com \ --cc=allison@lohutok.net \ --cc=chenhc@lemote.com \ --cc=devicetree@vger.kernel.org \ --cc=gregkh@linuxfoundation.org \ --cc=jason@lakedaemon.net \ --cc=linux-kernel@vger.kernel.org \ --cc=linux-mips@vger.kernel.org \ --cc=mark.rutland@arm.com \ --cc=maz@kernel.org \ --cc=robh+dt@kernel.org \ --cc=tglx@linutronix.de \ --cc=tsbogend@alpha.franken.de \ /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: link
Linux-MIPS Archive on lore.kernel.org Archives are clonable: git clone --mirror https://lore.kernel.org/linux-mips/0 linux-mips/git/0.git # If you have public-inbox 1.1+ installed, you may # initialize and index your mirror using the following commands: public-inbox-init -V2 linux-mips linux-mips/ https://lore.kernel.org/linux-mips \ linux-mips@vger.kernel.org public-inbox-index linux-mips Example config snippet for mirrors Newsgroup available over NNTP: nntp://nntp.lore.kernel.org/org.kernel.vger.linux-mips AGPL code for this site: git clone https://public-inbox.org/public-inbox.git