James -- > Do you mind expalining the code snippet to me below. It's from ehci-hcd.c lines >423-440. > > static void ehci_tasklet (unsigned long param) > { > struct ehci_hcd *ehci = (struct ehci_hcd *) param; > printk("ehci->reclaim_ready=%x\n", ehci->reclaim_ready);
This is where you added some debug code. What values did this print before your boot-time oops? > //if (ehci->reclaim_ready) > // end_unlink_async (ehci); You've commented out the line which makes unlinking from the async list work. As I said in my original reply: > > You can look at the EHCI > > spec to see what it's supposed to be doing, the "IAA" > > mechanism (4.15.2.3) kicking in _or_ one of two other > > unlink cases found in start_unlink_async(). As I commented, in your case it appears that something in the kernel is setting the reclaim_ready flag ... indicating the "Interrupt on Async Advance" doorbell rang, OR one of those two other cases (where that mechanism doesn't need to be use since the async ring is inactive. Since you're seeing this only at system powerup, it's rather likely that some other code is trashing some of the memory used by this driver. > How come param is declared as unsigned long then in the body > of the ehci_tasklet, it is typecasted as (struct ehci_hcd *)? > Should param be declared as (void *param) not unsigned long? It's declared as "unsigned long" because that's how tasklets work. If "unsigned long" is bigger than a pointer, the extra bits get safely discarded. Declaring it as "void *" would make the compiler justifiably complain about type mismatches, notably at: > ... line 251 of ehci-hcd.c: > > ehci->tasklet.func = ehci_tasklet; > > Why is it that ehci_tasklet is called without any arguments? It wasn't called at all. That's just setting up the tasklet descriptor so it can be scheduled later. _______________________________________________________________ Have big pipes? SourceForge.net is looking for download mirrors. We supply the hardware. You get the recognition. Email Us: [EMAIL PROTECTED] _______________________________________________ [EMAIL PROTECTED] To unsubscribe, use the last form field at: https://lists.sourceforge.net/lists/listinfo/linux-usb-devel