Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit d69c50aa authored by Manu Gautam's avatar Manu Gautam Committed by Gerrit - the friendly Code Review server
Browse files

usb: xhci: clean up command queue on HC halt failure as well



'Commit c9cabb7ee02bcb0c ("usb: xhci: clean up command queue when
halting"); fixes deadlock condition when some commands are pending
at the time of usb_remove_hcd() or when controller is halted.
That change cleans up command queue if halting of controller is
successful. But, this deadlock may still be seen in case if due
to some reason halting of controller fails. To handle that scenario
as well cleanup command queue irrespective of controller halt
succeeds or fails.

Change-Id: I2c88fca3614af7fe58bc858898449d47546da247
Signed-off-by: default avatarManu Gautam <mgautam@codeaurora.org>
parent 46692be6
Loading
Loading
Loading
Loading
+12 −9
Original line number Diff line number Diff line
@@ -116,6 +116,11 @@ int xhci_halt(struct xhci_hcd *xhci)
			STS_HALT, STS_HALT, XHCI_MAX_HALT_USEC);
	if (!ret) {
		xhci->xhc_state |= XHCI_STATE_HALTED;
	} else {
		xhci_warn(xhci, "Host not halted after %u microseconds.\n",
				XHCI_MAX_HALT_USEC);
	}

	xhci->cmd_ring_state = CMD_RING_STATE_STOPPED;

	if (timer_pending(&xhci->cmd_timer)) {
@@ -124,9 +129,7 @@ int xhci_halt(struct xhci_hcd *xhci)
		del_timer(&xhci->cmd_timer);
		xhci_cleanup_command_queue(xhci);
	}
	} else
		xhci_warn(xhci, "Host not halted after %u microseconds.\n",
				XHCI_MAX_HALT_USEC);

	return ret;
}