From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga04.intel.com ([192.55.52.120]:64714 "EHLO mga04.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751316AbcEMJmf (ORCPT ); Fri, 13 May 2016 05:42:35 -0400 Message-ID: <5735A32C.2070802@linux.intel.com> Date: Fri, 13 May 2016 12:49:32 +0300 From: Mathias Nyman MIME-Version: 1.0 To: Greg KH CC: stable Subject: Re: [RFT PATCH] xhci: Fix handling timeouted commands on hosts in weird states. References: <1463051261-7748-1-git-send-email-mathias.nyman@linux.intel.com> <20160513082959.GA11986@kroah.com> In-Reply-To: <20160513082959.GA11986@kroah.com> Content-Type: text/plain; charset=windows-1252; format=flowed Content-Transfer-Encoding: 7bit Sender: stable-owner@vger.kernel.org List-ID: On 13.05.2016 11:29, Greg KH wrote: > On Thu, May 12, 2016 at 02:07:41PM +0300, Mathias Nyman wrote: >> If commands timeout we mark them for abortion, then stop the command >> ring, and turn the commands to no-ops and finally restart the command >> ring. >> >> If the host is working properly the no-op commands will finish and >> pending completions are called. >> If we notice the host is failing driver clears the command ring and >> completes, deletes and frees all pending commands. >> >> There are two separate cases reported where host is believed to work >> properly but is not. In the first case we successfully stop the ring >> but no abort or stop commnand ring event is ever sent and host locks up. >> >> The second case is if a host is removed, command times out and driver >> believes the ring is stopped, and assumes it be restarted, but actually >> ends up timing out on the same command forever. >> If one of the pending commands has the xhci->mutex held it will block >> xhci_stop() in the remove codepath which otherwise would cleanup pending >> commands. >> >> Add a check that clears all pending commands in case host is removed, >> or we are stuck timeouting on the same command. Also restart the >> command timeout timer when stopping the command ring to ensure we >> recive an ring stop/abort event. >> >> Cc: stable >> Signed-off-by: Mathias Nyman > > Any reason why you just sent this to stable@ and not linux-usb@? > Missing --suppress-cc=all, was supposed to go only to me for a testapply-build round. Same patch is now in linux-usb with correct people and lists in the to and cc fields. Sorry about the extra fuss -Mathias