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

Reply via email to