[patch v4 0/4] Cypress c67x00 (EZ-Host/EZ-OTG) support

Peter Korsgaard jacmet at sunsite.dk
Tue Jan 29 08:01:30 EST 2008


>>>>> "Grant" == Grant Likely <grant.likely at secretlab.ca> writes:

Hi,

 Grant> I've now merged the driver into my tree and tested it.

 Grant> The good news is that using only one device node is absolutely
 Grant> no problem.  It works without error or complaint and sysfs
 Grant> looks sane.

Great.

 Grant> The bad news is that I discovered a race condition on
 Grant> initialization.  The problem is that IRQs are enabled before
 Grant> the SIEs are configured.  The interrupt handler is firing
 Grant> immediately and tries to get the status of each SIE.  Since
 Grant> the SIE probe has not yet occured, sie->dev is NULL and we get
 Grant> a kernel oops when c67x00_ll_get_siemsg() tries to dereference
 Grant> it.

Not so great. I unfortunately don't see it here.

 Grant> However, register_irq() cannot be easily moved to after the
 Grant> SIE probe because the current probe code depends on interrupts
 Grant> being enabled.  Below is an ugly workaround that solves the
 Grant> problem to me, but there is probably a better solution.

Wouldn't it be simpler to just add a if (sie->dev) check to
_ll_get_siemsg()? Or doesn't the hcd init properly reinitialize the
device?

-- 
Bye, Peter Korsgaard



More information about the Linuxppc-dev mailing list