From: Felipe Balbi
> Sent: 19 May 2016 10:57
...
> queue it to the command ring
>
> > if (ret) {
> > spin_unlock_irqrestore(&xhci->lock, flags);
> > mutex_unlock(&xhci->mutex);
> > xhci_dbg(xhci, "FIXME: allocate a command ring segment\n");
> > kfree(command);
> > return 0;
> > }
> > xhci_ring_cmd_db(xhci);
> > spin_unlock_irqrestore(&xhci->lock, flags);
> >
> > wait_for_completion(command->completion);
>
> but the command never completes. I wonder if your command doorbell
> completed before wait_for_completion() was called, or if it didn't
> complete at all.
>
> Can you enable XHCI debugging logs and try again? (Mathias, what was the
> easy trick to enable all XHCI debugging logs?)
I remember a problem with the XCHI controller on an amd (x86) motherboard I
have.
What you are seeing might be the same.
Basically it only processed one entry from the command ring each time the
doorbell was rung.
I don't remember seeing a patch go past that would fix it, and I didn't
actually write one.
It might be worth trying re-ringing the command ring doorbell in the
command completion code.
David