• Sarah Sharp's avatar
    USB: xhci: Change how xHCI commands are handled. · 913a8a34
    Sarah Sharp authored
    Some commands to the xHCI hardware cannot be allowed to fail due to out of
    memory issues or the command ring being full.
    
    Add a way to reserve a TRB on the command ring, and make all command
    queueing functions indicate whether they are using a reserved TRB.
    
    Add a way to pre-allocate all the memory a command might need.  A command
    needs an input context, a variable to store the status, and (optionally) a
    completion for the caller to wait on.  Change all code that assumes the
    input device context, status, and completion for a command is stored in
    the xhci virtual USB device structure (xhci_virt_device).
    
    Store pending completions in a FIFO in xhci_virt_device.  Make the event
    handler for a configure endpoint command check to see whether a pending
    command in the list has completed.  We need to use separate input device
    contexts for some configure endpoint commands, since multiple drivers can
    submit requests at the same time that require a configure endpoint
    command.
    Signed-off-by: default avatarSarah Sharp <sarah.a.sharp@linux.intel.com>
    Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
    913a8a34
xhci-hcd.c 51.3 KB