[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <CY1PR0301MB08438E910102580D0C0ECEBD838E0@CY1PR0301MB0843.namprd03.prod.outlook.com>
Date: Mon, 27 Jul 2015 13:58:17 +0000
From: Shenwei Wang <Shenwei.Wang@...escale.com>
To: Thomas Gleixner <tglx@...utronix.de>
CC: "shawn.guo@...aro.org" <shawn.guo@...aro.org>,
"jason@...edaemon.net" <jason@...edaemon.net>,
"linux-arm-kernel@...ts.infradead.org"
<linux-arm-kernel@...ts.infradead.org>,
"linux-kernel@...r.kernel.org" <linux-kernel@...r.kernel.org>,
Huang Anson <Anson.Huang@...escale.com>
Subject: RE: [PATCH v6 1/2] irqchip: imx-gpcv2: IMX GPCv2 driver for wakeup
sources
> -----Original Message-----
> From: Thomas Gleixner [mailto:tglx@...utronix.de]
> Sent: 2015年7月26日 6:48
> To: Wang Shenwei-B38339
> Cc: shawn.guo@...aro.org; jason@...edaemon.net;
> linux-arm-kernel@...ts.infradead.org; linux-kernel@...r.kernel.org; Huang
> Yongcai-B20788
> Subject: Re: [PATCH v6 1/2] irqchip: imx-gpcv2: IMX GPCv2 driver for wakeup
> sources
>
> On Wed, 22 Jul 2015, Shenwei Wang wrote:
> > +static int imx_gpcv2_irq_set_wake(struct irq_data *d, unsigned int
> > +on) {
> > + struct imx_gpcv2_irq *cd = d->chip_data;
> > + unsigned int idx = d->hwirq / 32;
> > + unsigned long flags;
> > + void __iomem *reg;
> > + u32 mask, val;
> > +
> > + raw_spin_lock_irqsave(&cd->lock.rlock, flags);
>
> Oh no. You need to make cd->lock a raw_spinlock and then use
> raw_spin_lock_irqsave() on it. How on earth did you come up with this hackery?
I was thinking to use one spin_lock between the current two modules. But it should be
okay to use a dedicate one for irqchip.
> Thanks,
>
> tglx
Powered by blists - more mailing lists