xHCI: add aborting command ring function
authorElric Fu <elricfu1@gmail.com>
Wed, 27 Jun 2012 08:31:12 +0000 (16:31 +0800)
committerMandar Padmawar <mpadmawar@nvidia.com>
Thu, 31 Jan 2013 10:32:08 +0000 (02:32 -0800)
commit9ef43cf1fb469c6f10711a231ac27bd402891039
treefe51d8b2b6430ffb557b61d42393507a4e7a47a5
parent33809417fd315cd79c6f1e63b1cb6fccaa31b45d
xHCI: add aborting command ring function

Software have to abort command ring and cancel command
when a command is failed or hang. Otherwise, the command
ring will hang up and can't handle the others. An example
of a command that may hang is the Address Device Command,
because waiting for a SET_ADDRESS request to be acknowledged
by a USB device is outside of the xHC's ability to control.

To cancel a command, software will initialize a command
descriptor for the cancel command, and add it into a
cancel_cmd_list of xhci.

Sarah: Fixed missing newline on "Have the command ring been stopped?"
debugging statement.

This patch should be backported to kernels as old as 3.0, that contain
the commit 7ed603ecf8b68ab81f4c83097d3063d43ec73bb8 "xhci: Add an
assertion to check for virt_dev=0 bug." That commit papers over a NULL
pointer dereference, and this patch fixes the underlying issue that
caused the NULL pointer dereference.

Change-Id: I6d008c9e56b8612393f1952473b3a50fe88b8c0a
Signed-off-by: Elric Fu <elricfu1@gmail.com>
Signed-off-by: Sarah Sharp <sarah.a.sharp@linux.intel.com>
Tested-by: Miroslav Sabljic <miroslav.sabljic@avl.com>
Cc: stable@vger.kernel.org
Signed-off-by: Ajay Gupta <ajayg@nvidia.com>
Reviewed-on: http://git-master/r/192886
(cherry picked from commit 16c9b4cf3e6669864671ef0410e4796ef1796581)

Signed-off-by: JC Kuo <jckuo@nvidia.com>
Change-Id: I84965ed882f049a497a9586fdbfa37b72f69b404
Reviewed-on: http://git-master/r/194692
Reviewed-by: Automatic_Commit_Validation_User
Reviewed-by: Ajay Gupta <ajayg@nvidia.com>
Reviewed-by: Ashutosh Jha <ajha@nvidia.com>
drivers/usb/host/xhci-mem.c
drivers/usb/host/xhci-ring.c
drivers/usb/host/xhci.c
drivers/usb/host/xhci.h