Patch "xhci: Fix command ring stop regression in 4.11" has been added to the 4.11-stable tree
Subsystems (3)
This is a note to let you know that I've just added the patch titled
xhci: Fix command ring stop regression in 4.11
to the 4.11-stable tree which can be found at:
http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary
The filename of the patch is:
xhci-fix-command-ring-stop-regression-in-4.11.patch
and it can be found in the queue-4.11 subdirectory.
If you, or anyone else, feels it should not be added to the stable tree, please let <[email protected]> know about it.
Quoted 1 line
From
604d02a2a66ab7f93fd3b2bde3698c29ef057b65Mon Sep 17 00:00:00 2001
From: Mathias Nyman <[email protected]>
Date: Wed, 17 May 2017 18:32:05 +0300
Subject: xhci: Fix command ring stop regression in 4.11
From: Mathias Nyman <[email protected]>
commit 604d02a2a66ab7f93fd3b2bde3698c29ef057b65 upstream.
In 4.11 TRB completion codes were renamed to match spec.
Completion codes for command ring stopped and endpoint stopped were mixed, leading to failures while handling a stopped command ring.
Use the correct completion code for command ring stopped events.
--- drivers/usb/host/xhci-hub.c | 2 +- drivers/usb/host/xhci-ring.c | 8 ++++---- drivers/usb/host/xhci.c | 8 ++++---- 3 files changed, 9 insertions(+), 9 deletions(-)
drivers/usb/host/xhci-hub.c +1 -1
@@ -421,7 +421,7 @@ static int xhci_stop_device(struct xhci_wait_for_completion (cmd->completion);if (cmd->status ==COMP_COMMAND_ABORTED || - cmd->status ==COMP_STOPPED ) { + cmd->status ==COMP_COMMAND_RING_STOPPED ) {xhci_warn (xhci,"Timeout while waiting for stop endpoint command\n" ); ret = -ETIME ; }
drivers/usb/host/xhci-ring.c +4 -4
@@ -321,7 +321,7 @@ static void xhci_handle_stopped_cmd_ringif (i_cmd->status !=COMP_COMMAND_ABORTED )continue ; - i_cmd->status =COMP_STOPPED ; + i_cmd->status =COMP_COMMAND_RING_STOPPED ;xhci_dbg (xhci,"Turn aborted command %p to no-op\n" , i_cmd->command_trb);
@@ -1342,7 +1342,7 @@ static void handle_cmd_completion(struct cmd_comp_code =GET_COMP_CODE (le32_to_cpu (event->status));/* If CMD ring stopped we own the trbs between enqueue and dequeue */ -if (cmd_comp_code ==COMP_STOPPED ) { +if (cmd_comp_code ==COMP_COMMAND_RING_STOPPED ) {complete_all (&xhci->cmd_ring_stop_completion);return ; }
@@ -1397,8 +1397,8 @@ static void handle_cmd_completion(structbreak ;case TRB_CMD_NOOP :/* Is this an aborted command turned to NO-OP? */ -if (cmd->status ==COMP_STOPPED ) - cmd_comp_code =COMP_STOPPED ; +if (cmd->status ==COMP_COMMAND_RING_STOPPED ) + cmd_comp_code =COMP_COMMAND_RING_STOPPED ;break ;case TRB_RESET_EP : WARN_ON(slot_id != TRB_TO_SLOT_ID(
drivers/usb/host/xhci.c +4 -4
@@ -1805,7 +1805,7 @@ static int xhci_configure_endpoint_resulswitch (*cmd_status) {case COMP_COMMAND_ABORTED : -case COMP_STOPPED : +case COMP_COMMAND_RING_STOPPED :xhci_warn (xhci,"Timeout while waiting for configure endpoint command\n" ); ret = -ETIME ;break ;
@@ -1856,7 +1856,7 @@ static int xhci_evaluate_context_result(switch (*cmd_status) {case COMP_COMMAND_ABORTED : -case COMP_STOPPED : +case COMP_COMMAND_RING_STOPPED :xhci_warn (xhci,"Timeout while waiting for evaluate context command\n" ); ret = -ETIME ;break ;
@@ -3478,7 +3478,7 @@ int xhci_discover_or_reset_device(struct ret = reset_device_cmd->status;switch (ret) {case COMP_COMMAND_ABORTED : -case COMP_STOPPED : +case COMP_COMMAND_RING_STOPPED :xhci_warn (xhci,"Timeout waiting for reset device command\n" ); ret = -ETIME ; goto command_cleanup;
@@ -3845,7 +3845,7 @@ static int xhci_setup_device(struct usb_*/ switch (command->status) {case COMP_COMMAND_ABORTED : -case COMP_STOPPED : +case COMP_COMMAND_RING_STOPPED :xhci_warn (xhci,"Timeout while waiting for setup device command\n" ); ret = -ETIME ;break ;
Patches currently in stable-queue which might be from [email protected] are
queue-4.11/xhci-remove-gfp_dma-flag-from-allocation.patch queue-4.11/xhci-apply-pme_stuck_quirk-and-missing_cas-quirk-for-denverton.patch queue-4.11/usb-host-xhci-mem-allocate-zeroed-scratchpad-buffer.patch queue-4.11/usb-host-xhci-plat-propagate-return-value-of-platform_get_irq.patch queue-4.11/xhci-fix-command-ring-stop-regression-in-4.11.patch queue-4.11/usb-xhci-fix-lock-inversion-problem.patch