From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S942160AbcLWGxJ (ORCPT ); Fri, 23 Dec 2016 01:53:09 -0500 Received: from mga06.intel.com ([134.134.136.31]:56654 "EHLO mga06.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1758193AbcLWGxH (ORCPT ); Fri, 23 Dec 2016 01:53:07 -0500 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.33,392,1477983600"; d="scan'208";a="1085826030" From: Lu Baolu To: Mathias Nyman Cc: linux-usb@vger.kernel.org, linux-kernel@vger.kernel.org, Lu Baolu Subject: [PATCH 4/4] usb: xhci: warn on command timeout in stopped command ring Date: Fri, 23 Dec 2016 14:52:58 +0800 Message-Id: <1482475978-18203-5-git-send-email-baolu.lu@linux.intel.com> X-Mailer: git-send-email 2.1.4 In-Reply-To: <1482475978-18203-1-git-send-email-baolu.lu@linux.intel.com> References: <1482475978-18203-1-git-send-email-baolu.lu@linux.intel.com> Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org If xhci host fails to response to a command, the command watchdog timer will be fired. The callback function will abort and clear current command and restart the command execution. If driver fails to restart command execution, it will assume there is a larger problem in host and report the situation to the upper layer. In rare cases, if the driver sees a command timeout in a stopped command ring, driver should let the user know it. Signed-off-by: Lu Baolu --- drivers/usb/host/xhci-ring.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/drivers/usb/host/xhci-ring.c b/drivers/usb/host/xhci-ring.c index 6a23c37..16baefc 100644 --- a/drivers/usb/host/xhci-ring.c +++ b/drivers/usb/host/xhci-ring.c @@ -1308,8 +1308,12 @@ void xhci_handle_command_timeout(struct work_struct *work) goto time_out_completed; } - /* command timeout on stopped ring, ring can't be aborted */ - xhci_dbg(xhci, "Command timeout on stopped ring\n"); + /* + * We should never reach here until a command times out on a stopped + * ring and xhci driver has no idea about the reason why the command + * ring was stopped. + */ + xhci_warn(xhci, "WARN command timeout on stopped ring\n"); xhci_handle_stopped_cmd_ring(xhci, xhci->current_cmd); time_out_completed: -- 2.1.4