On Mon, Jun 2, 2014 at 6:04 PM, Alan Stern <st...@rowland.harvard.edu> wrote:
> No, this is completely wrong.  When the driver uses SuperSpeed support,
> there are two hcds: the high speed one and the SuperSpeed one.  They
> are different structures and they both need to be initialized.
>
> It sounds like you have confused struct dummy (there's only one of
> these) with struct dummy_hcd (there are two of these).

I think that indeed I was completely wrong but I wasn't confused about the
structures, but regarding some details of what is executed when, in which
order and in which context.

The reason was that when I simply removed the timer / list initialization
from dummy_start_ss(), (because they belong to the shared struct dummy_hcd
so they better only be initialized in one place) I got a hard lockup
during testing,
when I started dummy_hcd in superspeed mode and added a device.

I think that now I understand why this happened, but I will read the
relevant bits
from dummy_hcd and xhci once more (especially what happens if there is
a suspend / resume between the initialization of the highspeed hcd and the
superspeed hcd) and come back with a different approach that will hopefully
be both correct and DRY.

Thanks a lot for the comments, they have been very helpful!

Regards,
Pantelis
--
To unsubscribe from this list: send the line "unsubscribe linux-usb" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to