linux-mips.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH V2 1/2] MIPS: Loongson64: Increase NR_IRQS to 320
@ 2020-09-11 10:26 Huacai Chen
  2020-09-11 10:26 ` [PATCH V2 2/2] irqchip/loongson-htvec: Fix initial interrupts clearing Huacai Chen
                   ` (2 more replies)
  0 siblings, 3 replies; 4+ messages in thread
From: Huacai Chen @ 2020-09-11 10:26 UTC (permalink / raw)
  To: Thomas Bogendoerfer, Thomas Gleixner, Jason Cooper, Marc Zyngier
  Cc: linux-mips, Fuxin Zhang, Huacai Chen, Jiaxun Yang, Huacai Chen

Modernized Loongson64 uses a hierarchical organization for interrupt
controllers (INTCs), all INTC nodes (not only leaf nodes) need some IRQ
numbers. This means 280 (i.e., NR_IRQS_LEGACY + NR_MIPS_CPU_IRQS + 256)
is not enough to represent all interrupts, so let's increase NR_IRQS to
320 (NR_IRQS_LEGACY + NR_MIPS_CPU_IRQS + NR_MAX_CHAINED_IRQS + 256).

Signed-off-by: Huacai Chen <chenhc@lemote.com>
---
 arch/mips/include/asm/mach-loongson64/irq.h | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/arch/mips/include/asm/mach-loongson64/irq.h b/arch/mips/include/asm/mach-loongson64/irq.h
index f5e362f7..7450d45 100644
--- a/arch/mips/include/asm/mach-loongson64/irq.h
+++ b/arch/mips/include/asm/mach-loongson64/irq.h
@@ -7,7 +7,8 @@
 /* cpu core interrupt numbers */
 #define NR_IRQS_LEGACY		16
 #define NR_MIPS_CPU_IRQS	8
-#define NR_IRQS			(NR_IRQS_LEGACY + NR_MIPS_CPU_IRQS + 256)
+#define NR_MAX_CHAINED_IRQS	40 /* Chained IRQs means those not directly used by devices */
+#define NR_IRQS			(NR_IRQS_LEGACY + NR_MIPS_CPU_IRQS + NR_MAX_CHAINED_IRQS + 256)
 
 #define MIPS_CPU_IRQ_BASE 	NR_IRQS_LEGACY
 
-- 
2.7.0


^ permalink raw reply related	[flat|nested] 4+ messages in thread

* [PATCH V2 2/2] irqchip/loongson-htvec: Fix initial interrupts clearing
  2020-09-11 10:26 [PATCH V2 1/2] MIPS: Loongson64: Increase NR_IRQS to 320 Huacai Chen
@ 2020-09-11 10:26 ` Huacai Chen
  2020-09-13 15:20 ` [PATCH V2 1/2] MIPS: Loongson64: Increase NR_IRQS to 320 Marc Zyngier
  2020-09-18 13:51 ` Thomas Bogendoerfer
  2 siblings, 0 replies; 4+ messages in thread
From: Huacai Chen @ 2020-09-11 10:26 UTC (permalink / raw)
  To: Thomas Bogendoerfer, Thomas Gleixner, Jason Cooper, Marc Zyngier
  Cc: linux-mips, Fuxin Zhang, Huacai Chen, Jiaxun Yang, Huacai Chen, stable

In htvec_reset() only the first group of initial interrupts is cleared.
This sometimes causes spurious interrupts, so let's clear all groups.

BTW, commit c47e388cfc648421bd821f ("irqchip/loongson-htvec: Support 8
groups of HT vectors") increase interrupt lines from 4 to 8, so update
comments as well.

Cc: stable@vger.kernel.org
Fixes: 818e915fbac518e8c78e1877 ("irqchip: Add Loongson HyperTransport Vector support")
Signed-off-by: Huacai Chen <chenhc@lemote.com>
---
 drivers/irqchip/irq-loongson-htvec.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/drivers/irqchip/irq-loongson-htvec.c b/drivers/irqchip/irq-loongson-htvec.c
index 13e6016..6392aaf 100644
--- a/drivers/irqchip/irq-loongson-htvec.c
+++ b/drivers/irqchip/irq-loongson-htvec.c
@@ -151,7 +151,7 @@ static void htvec_reset(struct htvec *priv)
 	/* Clear IRQ cause registers, mask all interrupts */
 	for (idx = 0; idx < priv->num_parents; idx++) {
 		writel_relaxed(0x0, priv->base + HTVEC_EN_OFF + 4 * idx);
-		writel_relaxed(0xFFFFFFFF, priv->base);
+		writel_relaxed(0xFFFFFFFF, priv->base + 4 * idx);
 	}
 }
 
@@ -172,7 +172,7 @@ static int htvec_of_init(struct device_node *node,
 		goto free_priv;
 	}
 
-	/* Interrupt may come from any of the 4 interrupt line */
+	/* Interrupt may come from any of the 8 interrupt lines */
 	for (i = 0; i < HTVEC_MAX_PARENT_IRQ; i++) {
 		parent_irq[i] = irq_of_parse_and_map(node, i);
 		if (parent_irq[i] <= 0)
-- 
2.7.0


^ permalink raw reply related	[flat|nested] 4+ messages in thread

* Re: [PATCH V2 1/2] MIPS: Loongson64: Increase NR_IRQS to 320
  2020-09-11 10:26 [PATCH V2 1/2] MIPS: Loongson64: Increase NR_IRQS to 320 Huacai Chen
  2020-09-11 10:26 ` [PATCH V2 2/2] irqchip/loongson-htvec: Fix initial interrupts clearing Huacai Chen
@ 2020-09-13 15:20 ` Marc Zyngier
  2020-09-18 13:51 ` Thomas Bogendoerfer
  2 siblings, 0 replies; 4+ messages in thread
From: Marc Zyngier @ 2020-09-13 15:20 UTC (permalink / raw)
  To: Thomas Bogendoerfer, Jason Cooper, Huacai Chen, Thomas Gleixner
  Cc: Huacai Chen, Fuxin Zhang, Jiaxun Yang, linux-mips

On Fri, 11 Sep 2020 18:26:17 +0800, Huacai Chen wrote:
> Modernized Loongson64 uses a hierarchical organization for interrupt
> controllers (INTCs), all INTC nodes (not only leaf nodes) need some IRQ
> numbers. This means 280 (i.e., NR_IRQS_LEGACY + NR_MIPS_CPU_IRQS + 256)
> is not enough to represent all interrupts, so let's increase NR_IRQS to
> 320 (NR_IRQS_LEGACY + NR_MIPS_CPU_IRQS + NR_MAX_CHAINED_IRQS + 256).

Applied to irq/irqchip-fixes-5.9, thanks!

[2/2] irqchip/loongson-htvec: Fix initial interrupt clearing
      commit: 1d1e5630de78f7253ac24b92cee6427c3ff04d56

Patch 1/1 can go via the MIPS tree.

Cheers,

	M.
-- 
Without deviation from the norm, progress is not possible.



^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [PATCH V2 1/2] MIPS: Loongson64: Increase NR_IRQS to 320
  2020-09-11 10:26 [PATCH V2 1/2] MIPS: Loongson64: Increase NR_IRQS to 320 Huacai Chen
  2020-09-11 10:26 ` [PATCH V2 2/2] irqchip/loongson-htvec: Fix initial interrupts clearing Huacai Chen
  2020-09-13 15:20 ` [PATCH V2 1/2] MIPS: Loongson64: Increase NR_IRQS to 320 Marc Zyngier
@ 2020-09-18 13:51 ` Thomas Bogendoerfer
  2 siblings, 0 replies; 4+ messages in thread
From: Thomas Bogendoerfer @ 2020-09-18 13:51 UTC (permalink / raw)
  To: Huacai Chen
  Cc: Thomas Gleixner, Jason Cooper, Marc Zyngier, linux-mips,
	Fuxin Zhang, Huacai Chen, Jiaxun Yang

On Fri, Sep 11, 2020 at 06:26:17PM +0800, Huacai Chen wrote:
> Modernized Loongson64 uses a hierarchical organization for interrupt
> controllers (INTCs), all INTC nodes (not only leaf nodes) need some IRQ
> numbers. This means 280 (i.e., NR_IRQS_LEGACY + NR_MIPS_CPU_IRQS + 256)
> is not enough to represent all interrupts, so let's increase NR_IRQS to
> 320 (NR_IRQS_LEGACY + NR_MIPS_CPU_IRQS + NR_MAX_CHAINED_IRQS + 256).
> 
> Signed-off-by: Huacai Chen <chenhc@lemote.com>
> ---
>  arch/mips/include/asm/mach-loongson64/irq.h | 3 ++-
>  1 file changed, 2 insertions(+), 1 deletion(-)

applied to mips-next.

Thomas.

-- 
Crap can work. Given enough thrust pigs will fly, but it's not necessarily a
good idea.                                                [ RFC1925, 2.3 ]

^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2020-09-18 13:57 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-09-11 10:26 [PATCH V2 1/2] MIPS: Loongson64: Increase NR_IRQS to 320 Huacai Chen
2020-09-11 10:26 ` [PATCH V2 2/2] irqchip/loongson-htvec: Fix initial interrupts clearing Huacai Chen
2020-09-13 15:20 ` [PATCH V2 1/2] MIPS: Loongson64: Increase NR_IRQS to 320 Marc Zyngier
2020-09-18 13:51 ` Thomas Bogendoerfer

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).