aboutsummaryrefslogtreecommitdiff
path: root/firmware/isci
diff options
context:
space:
mode:
authorElric Fu <elricfu1@gmail.com>2012-06-27 16:55:43 +0800
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2012-10-28 10:02:14 -0700
commit29b3f4e6bcede9f46132ea1dd52592a9a80a6849 (patch)
tree836b64356cf9a19a57756369b768d2fd43488bc3 /firmware/isci
parent4b360f4937e646f777a3049c65124056c84c6977 (diff)
xHCI: handle command after aborting the command ring
commit b63f4053cc8aa22a98e3f9a97845afe6c15d0a0d upstream. According to xHCI spec section 4.6.1.1 and section 4.6.1.2, after aborting a command on the command ring, xHC will generate a command completion event with its completion code set to Command Ring Stopped at least. If a command is currently executing at the time of aborting a command, xHC also generate a command completion event with its completion code set to Command Abort. When the command ring is stopped, software may remove, add, or rearrage Command Descriptors. To cancel a command, software will initialize a command descriptor for the cancel command, and add it into a cancel_cmd_list of xhci. When the command ring is stopped, software will find the command trbs described by command descriptors in cancel_cmd_list and modify it to No Op command. If software can't find the matched trbs, we can think it had been finished. 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. Note from Sarah: The TRB_TYPE_LINK_LE32 macro is not in the 3.0 stable kernel, so I added it to this patch. 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> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'firmware/isci')
0 files changed, 0 insertions, 0 deletions