RE: [PATCH v6 1/1] PRUSS UIO driver support

From: TK, Pratheesh Gangadhar
Date: Tue Mar 01 2011 - 16:20:35 EST


Hi,
> -----Original Message-----
> From: Hans J. Koch [mailto:hjk@xxxxxxxxxxxx]
> Sent: Wednesday, March 02, 2011 12:04 AM
> To: TK, Pratheesh Gangadhar
> Cc: Hans J. Koch; linux-kernel@xxxxxxxxxxxxxxx; gregkh@xxxxxxx;
> tglx@xxxxxxxxxxxxx; sshtylyov@xxxxxxxxxx; arnd@xxxxxxxx; Chatterjee, Amit;
> davinci-linux-open-source@xxxxxxxxxxxxxxxxxxxx; linux-arm-
> kernel@xxxxxxxxxxxxxxxxxxx
> Subject: Re: [PATCH v6 1/1] PRUSS UIO driver support
>
> On Tue, Mar 01, 2011 at 10:15:27AM +0530, TK, Pratheesh Gangadhar wrote:
> > Hi,
> >
> > > -----Original Message-----
> > > From: Hans J. Koch [mailto:hjk@xxxxxxxxxxxx]
> > > Sent: Tuesday, March 01, 2011 2:57 AM
> > > To: TK, Pratheesh Gangadhar
> > > Cc: linux-kernel@xxxxxxxxxxxxxxx; hjk@xxxxxxxxxxxx; gregkh@xxxxxxx;
> > > tglx@xxxxxxxxxxxxx; sshtylyov@xxxxxxxxxx; arnd@xxxxxxxx; Chatterjee,
> Amit;
> > > davinci-linux-open-source@xxxxxxxxxxxxxxxxxxxx; linux-arm-
> > > kernel@xxxxxxxxxxxxxxxxxxx
> > > Subject: Re: [PATCH v6 1/1] PRUSS UIO driver support
> > >
> > > On Tue, Mar 01, 2011 at 02:31:35AM +0530, Pratheesh Gangadhar wrote:
> > > > +
> > > > + /* Register PRUSS IRQ lines */
> > > > + p->irq = IRQ_DA8XX_EVTOUT0 + cnt;
> > > > + p->handler = pruss_handler;
> > > > +
> > > > + ret = uio_register_device(&dev->dev, p);
> > > > +
> > > > + if (ret < 0)
> > > > + goto out_free;
> > > > + }
> > > > +
> > > > + spin_lock_init(&lock);
> > >
> > > That's too late. uio_register_device() enables the irq, and your
> spin_lock
> > > is not ready at that time.
> >
> > This is ok in this context as "modprobe uio_pruss" is pre-requisite for
> > running PRUSS firmware and without firmware running PRUSS won't
> > generate interrupts. Actually PRUSS INTC is not setup till we start
> > user application.
>
> What if the user application is stopped, UIO driver module unloaded
> and loaded again?
>
This is a possible scenario - may be a buggy application. Normally when
application is stopped, PRUs are stopped by exit handler.

> Anyway, please don't use that kind of argumentation. The next newbie
> developer might copy your work as a basis for his new driver, and there
> it probably won't work.
>
> Simply put the spin_lock_init before the loop.
>
Agree, will fix this in next version.

Thanks,
Pratheesh
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/