[PATCH v2] [POWERPC] mpic: deal with bogus NIRQ in Feature Reporting Register

Subsystems: linux for powerpc (32-bit and 64-bit), the rest · Maintainers: Madhavan Srinivasan, Linus Torvalds

STALE6731d

5 messages, 3 authors, 2008-05-23 · open the first message on its own page

[PATCH v2] [POWERPC] mpic: deal with bogus NIRQ in Feature Reporting Register

From: Kumar Gala <hidden>
Date: 2008-05-21 21:00:52

Some chips (like the SoCs from Freescale) report the wrong value in NIRQ
and this causes issues if its doesn't match or exceed the value of
irq_count.

Add a flag that board code can set to just use irq_count instead of
FRR[NIRQ].  Eventually we'll add a device tree property with the number
of sources.

Signed-off-by: Kumar Gala <redacted>
---

Screw up with git on the first version.

- k

 arch/powerpc/sysdev/mpic.c |    9 ++++++---
 include/asm-powerpc/mpic.h |    2 ++
 2 files changed, 8 insertions(+), 3 deletions(-)
diff --git a/arch/powerpc/sysdev/mpic.c b/arch/powerpc/sysdev/mpic.c
index 8619f2a..12e285d 100644
--- a/arch/powerpc/sysdev/mpic.c
+++ b/arch/powerpc/sysdev/mpic.c
@@ -1144,9 +1144,12 @@ struct mpic * __init mpic_alloc(struct device_node *node,
 	mpic->num_cpus = ((greg_feature & MPIC_GREG_FEATURE_LAST_CPU_MASK)
 			  >> MPIC_GREG_FEATURE_LAST_CPU_SHIFT) + 1;
 	if (isu_size == 0)
-		mpic->num_sources =
-			((greg_feature & MPIC_GREG_FEATURE_LAST_SRC_MASK)
-			 >> MPIC_GREG_FEATURE_LAST_SRC_SHIFT) + 1;
+		if (flags & MPIC_BROKEN_FRR_NIRQS)
+			mpic->num_sources = mpic->irq_count;
+		else
+			mpic->num_sources =
+				((greg_feature & MPIC_GREG_FEATURE_LAST_SRC_MASK)
+				 >> MPIC_GREG_FEATURE_LAST_SRC_SHIFT) + 1;

 	/* Map the per-CPU registers */
 	for (i = 0; i < mpic->num_cpus; i++) {
diff --git a/include/asm-powerpc/mpic.h b/include/asm-powerpc/mpic.h
index 943c5a3..6802570 100644
--- a/include/asm-powerpc/mpic.h
+++ b/include/asm-powerpc/mpic.h
@@ -353,6 +353,8 @@ struct mpic
 #define MPIC_ENABLE_MCK			0x00000200
 /* Disable bias among target selection, spread interrupts evenly */
 #define MPIC_NO_BIAS			0x00000400
+/* Ignore NIRQS as reported by FRR */
+#define MPIC_BROKEN_FRR_NIRQS		0x00000800

 /* MPIC HW modification ID */
 #define MPIC_REGSET_MASK		0xf0000000
-- 
1.5.4.5

Re: [PATCH v2] [POWERPC] mpic: deal with bogus NIRQ in Feature Reporting Register

From: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Date: 2008-05-21 21:02:03

On Wed, 2008-05-21 at 15:59 -0500, Kumar Gala wrote:
Some chips (like the SoCs from Freescale) report the wrong value in NIRQ
and this causes issues if its doesn't match or exceed the value of
irq_count.

Add a flag that board code can set to just use irq_count instead of
FRR[NIRQ].  Eventually we'll add a device tree property with the number
of sources.

Signed-off-by: Kumar Gala <redacted>
Acked-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
quoted hunk
---

Screw up with git on the first version.

- k

 arch/powerpc/sysdev/mpic.c |    9 ++++++---
 include/asm-powerpc/mpic.h |    2 ++
 2 files changed, 8 insertions(+), 3 deletions(-)
diff --git a/arch/powerpc/sysdev/mpic.c b/arch/powerpc/sysdev/mpic.c
index 8619f2a..12e285d 100644
--- a/arch/powerpc/sysdev/mpic.c
+++ b/arch/powerpc/sysdev/mpic.c
@@ -1144,9 +1144,12 @@ struct mpic * __init mpic_alloc(struct device_node *node,
 	mpic->num_cpus = ((greg_feature & MPIC_GREG_FEATURE_LAST_CPU_MASK)
 			  >> MPIC_GREG_FEATURE_LAST_CPU_SHIFT) + 1;
 	if (isu_size == 0)
-		mpic->num_sources =
-			((greg_feature & MPIC_GREG_FEATURE_LAST_SRC_MASK)
-			 >> MPIC_GREG_FEATURE_LAST_SRC_SHIFT) + 1;
+		if (flags & MPIC_BROKEN_FRR_NIRQS)
+			mpic->num_sources = mpic->irq_count;
+		else
+			mpic->num_sources =
+				((greg_feature & MPIC_GREG_FEATURE_LAST_SRC_MASK)
+				 >> MPIC_GREG_FEATURE_LAST_SRC_SHIFT) + 1;

 	/* Map the per-CPU registers */
 	for (i = 0; i < mpic->num_cpus; i++) {
diff --git a/include/asm-powerpc/mpic.h b/include/asm-powerpc/mpic.h
index 943c5a3..6802570 100644
--- a/include/asm-powerpc/mpic.h
+++ b/include/asm-powerpc/mpic.h
@@ -353,6 +353,8 @@ struct mpic
 #define MPIC_ENABLE_MCK			0x00000200
 /* Disable bias among target selection, spread interrupts evenly */
 #define MPIC_NO_BIAS			0x00000400
+/* Ignore NIRQS as reported by FRR */
+#define MPIC_BROKEN_FRR_NIRQS		0x00000800

3 more quoted lines

RE: [PATCH v2] [POWERPC] mpic: deal with bogus NIRQ in FeatureReporting Register

From: Jin Zhengxiong <hidden>
Date: 2008-05-23 02:15:59

Hi, Kumar,

So I should  change the MSI hwirq num according to this change, The
patches
will be send after this changes updated to your tree. How about applying
the MSI=20
driver firstly?

Jason
-----Original Message-----
From: <redacted>
[mailto:linuxppc-dev-bounces+jinzhengxiong=3Dgmail.com@ozlabs.or
g] On Behalf Of Benjamin Herrenschmidt
Sent: Thursday, May 22, 2008 5:02 AM
To: Kumar Gala
Cc: <redacted>
Subject: Re: [PATCH v2] [POWERPC] mpic: deal with bogus NIRQ=20
in FeatureReporting Register
=20
=20
On Wed, 2008-05-21 at 15:59 -0500, Kumar Gala wrote:
quoted
Some chips (like the SoCs from Freescale) report the wrong value in=20
NIRQ and this causes issues if its doesn't match or exceed=20
the value=20
quoted
of irq_count.
=20
Add a flag that board code can set to just use irq_count instead of=20
FRR[NIRQ].  Eventually we'll add a device tree property with the=20
number of sources.
=20
Signed-off-by: Kumar Gala <redacted>
=20
Acked-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
=20

Re: [PATCH v2] [POWERPC] mpic: deal with bogus NIRQ in FeatureReporting Register

From: Kumar Gala <hidden>
Date: 2008-05-23 03:31:56

On May 22, 2008, at 9:15 PM, Jin Zhengxiong wrote:
Hi, Kumar,

So I should  change the MSI hwirq num according to this change, The
patches
will be send after this changes updated to your tree. How about applying
the MSI
driver firstly?
I've asked Paul to pick up this patch for powerpc-next.  If you can rework the MSI patches with this patch applied and just change the board support for mpc85xx_ds and 8610 to set the flag.

- k

RE: [PATCH v2] [POWERPC] mpic: deal with bogus NIRQ in FeatureReporting Register

From: Jin Zhengxiong <hidden>
Date: 2008-05-23 08:34:33

=20
On May 22, 2008, at 9:15 PM, Jin Zhengxiong wrote:
=20
quoted
Hi, Kumar,

So I should  change the MSI hwirq num according to this change, The=20
patches will be send after this changes updated to your tree. How=20
about applying the MSI driver firstly?
=20
I've asked Paul to pick up this patch for powerpc-next.  If=20
you can rework the MSI patches with this patch applied and=20
just change the board support for mpc85xx_ds and 8610 to set the flag.
=20
Ok, Please find the patchset in the following mail. I'll resend the MSI
driver in this send.

Jason
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help