arm smp support patch

Scott Valentine svalentine at concentris-systems.com
Wed Nov 10 15:37:33 EST 2010


> -----Original Message-----
> From: Sergei Shtylyov [mailto:sshtylyov at mvista.com] 
> Sent: Wednesday, November 10, 2010 1:22 AM
> To: svalentine at concentris-systems.com
> Cc: linux at arm.linux.org.uk; laguna at lists.gateworks.com; 
> linux-arm-kernel at lists.infradead.org
> Subject: Re: arm smp support patch
> 
> Hello.
> 
> On 10-11-2010 2:33, Scott Valentine wrote:
> 
> > On arm multi-core platforms that have a gic, the secondary 
> cores fail 
> > to wake if they are booted in WFI mode, as the 
> gic_dist_init disables 
> > all interrupts including IPI. I've included a simple patch to the 
> > gic_dist_init function that enables interrupts 0-15 on SMP enabled 
> > systems. This patch was made against linux-2.6-HEAD-151f52f.
> 
>     Your signoff is necessary for the patch to be applied.
> 
> > diff -uNr a/arch/arm/common/gic.c b/arch/arm/common/gic.c
> > --- a/arch/arm/common/gic.c     2010-11-05 15:57:04.000000000 -1000
> > +++ b/arch/arm/common/gic.c     2010-11-09 13:08:33.000000000 -1000
> > @@ -262,6 +262,13 @@
> >          for (i = 0; i<  max_irq; i += 32)
> >                  writel(0xffffffff, base + 
> GIC_DIST_ENABLE_CLEAR + i * 
> > 4 / 32);
> >
> > +#ifdef CONFIG_SMP
> > +       /*
> > +        * Enable IPI interrupts on SMP systems so we can wake 
> > +secondary
> > cores
> 
>    Your patch is line wrapped.
> 
> > +        */
> > +       writel(0x0000ffff, base + GIC_DIST_ENABLE_SET); #endif
> > +
> >          /*
> >           * Setup the Linux IRQ subsystem.
> >           */
> 
> > Scott Valentine
> 
> WBR, Sergei

Sorry, bad mail-client settings. Also, I'm not really a maintainer, but I will signoff as requested. Below is the non-wrapped patch:

Signed-off-by: Scott Valentine <svalentine at concentris-systems.com>

diff -uNr a/arch/arm/common/gic.c b/arch/arm/common/gic.c
--- a/arch/arm/common/gic.c     2010-11-05 15:57:04.000000000 -1000
+++ b/arch/arm/common/gic.c     2010-11-09 13:08:33.000000000 -1000
@@ -262,6 +262,13 @@
        for (i = 0; i < max_irq; i += 32)
                writel(0xffffffff, base + GIC_DIST_ENABLE_CLEAR + i * 4 / 32);

+#ifdef CONFIG_SMP
+       /*
+        * Enable IPI interrupts on SMP systems so we can wake secondary cores
+        */
+       writel(0x0000ffff, base + GIC_DIST_ENABLE_SET);
+#endif
+
        /*
         * Setup the Linux IRQ subsystem.
         */




More information about the linux-arm-kernel mailing list