[PATCH v6 1/1] PRUSS UIO driver support
From: TK, Pratheesh Gangadhar <hidden>
Date: 2011-03-01 21:20:32
Also in:
lkml
Hi,
-----Original Message----- From: Hans J. Koch [mailto:hjk at hansjkoch.de] Sent: Wednesday, March 02, 2011 12:04 AM To: TK, Pratheesh Gangadhar Cc: Hans J. Koch; linux-kernel at vger.kernel.org; gregkh at suse.de; tglx at linutronix.de; sshtylyov at mvista.com; arnd at arndb.de; Chatterjee, Amit; davinci-linux-open-source at linux.davincidsp.com; linux-arm- kernel at lists.infradead.org Subject: Re: [PATCH v6 1/1] PRUSS UIO driver support On Tue, Mar 01, 2011 at 10:15:27AM +0530, TK, Pratheesh Gangadhar wrote:quoted
Hi,quoted
-----Original Message----- From: Hans J. Koch [mailto:hjk at hansjkoch.de] Sent: Tuesday, March 01, 2011 2:57 AM To: TK, Pratheesh Gangadhar Cc: linux-kernel at vger.kernel.org; hjk at hansjkoch.de; gregkh at suse.de; tglx at linutronix.de; sshtylyov at mvista.com; arnd at arndb.de; Chatterjee,Amit;quoted
quoted
davinci-linux-open-source at linux.davincidsp.com; linux-arm- kernel at lists.infradead.org Subject: Re: [PATCH v6 1/1] PRUSS UIO driver support On Tue, Mar 01, 2011 at 02:31:35AM +0530, Pratheesh Gangadhar wrote:quoted
+ + /* 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 yourspin_lockquoted
quoted
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