Received: by 2002:a25:1985:0:0:0:0:0 with SMTP id 127csp3092421ybz; Mon, 27 Apr 2020 09:49:36 -0700 (PDT) X-Google-Smtp-Source: APiQypLgxWckBjrBSdachz8CAu604vLzkJHVBKsfzuQ24tuGteaRkKrWGKK2W/0vS9Sqaqui01f/ X-Received: by 2002:a17:907:20ce:: with SMTP id qq14mr19593801ejb.10.1588006176603; Mon, 27 Apr 2020 09:49:36 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1588006176; cv=none; d=google.com; s=arc-20160816; b=Wk4Lg+H4pah2Na9rgYEFvEz/3pgftQwjhMndcPPY8631QkmHcFm8rpbUSdG8We+UWz NY8chFWNZV/PvaYZOSPEdrHZ/aqp1VqVfa8hp/Ls6PXgt5HWQr61jTOVgkEogTxo6kzw 0bA70Lz7EfkTkeVY1Wh8RpmtL7p4SU3b6wPUw7Dl4A/8XRh1xyM4ij0MNjoYnIy0V2Bv Bgh//EHy2sFBRgIiuf8zL5BiJaF3E5dQFnXV8+1wnuLZwSKiXc/ShDQdV21EugtLWGxY F2z78mYX7EEhok9kIGCJuboaEaidvE8xNZ1PXX3o5Sv/TSyaa2dP01QV2wjuPBk3LkkH HiiA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding :content-language:in-reply-to:mime-version:user-agent:date :message-id:autocrypt:openpgp:from:references:cc:to:subject :ironport-sdr:ironport-sdr; bh=5k864OqOIGDFaGXLnNfESOsxQfZdVrRsu9UnoCHvpHU=; b=zIiVf3QpCeNffbYE//JW+FGt44r6znS5u1VlFZDeNaRX7TQghpKSGyPDOva4Gj37hs ZFOSByx6oclSk88KznTlS+n6h/YyQ1R7E+571KYZQKet0L+3freYDlZrGWgEmZQkT+Ah omBX8t+GzYYU01vlxWGLL2EOUkWnfzYKqtgZcS4fSwp4pYpE5AZ/eZSHP4lJ7AXytaVu eWiHirQUIjcaZDBJ8hYHzGkMwb3jSTsFbaIbhKiWHCsl6HVIbW5dN/YbnFFtn7+iCbVN kD4KWiv9ky96NxyoSUhoj4HFDa+HrGKC+YzmVnyFmR69P9jp4jgLz3IllscwytAb9d6j O67Q== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=intel.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id k2si82518edr.528.2020.04.27.09.49.11; Mon, 27 Apr 2020 09:49:36 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=intel.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726357AbgD0Qq7 (ORCPT + 99 others); Mon, 27 Apr 2020 12:46:59 -0400 Received: from mga14.intel.com ([192.55.52.115]:29687 "EHLO mga14.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726343AbgD0Qq6 (ORCPT ); Mon, 27 Apr 2020 12:46:58 -0400 IronPort-SDR: HYpjMAqTteJ9AgngUNHYg0B/Hhfypo8EgPsuF79zgmFuyCcyTNQWUv4/onH8FA5+fVLpXNmwfv TW6D8yHr62VA== X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from orsmga003.jf.intel.com ([10.7.209.27]) by fmsmga103.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 27 Apr 2020 09:46:58 -0700 IronPort-SDR: Icd76BLoOj4h1ENYdGXxAgwVsYZlUPwbyAyIz2a4se/QHLZjKAW6vn0hhuPKMb4JwvnHGAyZ0/ q5KGhXYOI/eQ== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.73,324,1583222400"; d="scan'208";a="257325114" Received: from mattu-haswell.fi.intel.com (HELO [10.237.72.170]) ([10.237.72.170]) by orsmga003.jf.intel.com with ESMTP; 27 Apr 2020 09:46:56 -0700 Subject: Re: [PATCH v2] xhci: Set port link to RxDetect if port is not enabled after resume To: Kai-Heng Feng Cc: Mathias Nyman , Greg Kroah-Hartman , Alan Stern , "open list:USB NETWORKING DRIVERS" , linux-kernel@vger.kernel.org References: <20200311040456.25851-1-kai.heng.feng@canonical.com> <635B3350-F064-4B45-B194-40F793423049@canonical.com> <35fbb517-31b1-7bba-8e07-795ab18af1ff@linux.intel.com> <47BCEDDA-2E91-4CE3-AA45-B2EEB1DA111D@canonical.com> From: Mathias Nyman Openpgp: preference=signencrypt Autocrypt: addr=mathias.nyman@linux.intel.com; prefer-encrypt=mutual; keydata= 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 fiD/ Message-ID: Date: Mon, 27 Apr 2020 19:49:41 +0300 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Thunderbird/60.9.0 MIME-Version: 1.0 In-Reply-To: <47BCEDDA-2E91-4CE3-AA45-B2EEB1DA111D@canonical.com> Content-Type: text/plain; charset=utf-8 Content-Language: en-US Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On 27.4.2020 12.05, Kai-Heng Feng wrote: > > >> On Apr 23, 2020, at 19:25, Mathias Nyman wrote: >> >> Was this roothub port forcefully suspended xhci_bus_suspend()? >> i.e. was a bit set in bus_state->bus_suspended for this port? > > No, it's a USB3 device so it was set to U3 via USB_PORT_FEAT_LINK_STATE. Logs show port was first forced by xhci_bus_suspend() to U3 ("port 0 not suspended" message) and only later set to U3 by USB_PORT_FEAT_LINK_STATE. Seems line wrong order or race. while suspended we get a port event about a connect status change, showing port link state is in disabled. Cherry picked messages: [ 1330.021450] xhci_hcd 0000:3f:00.0: port 0 not suspended [ 1330.036822] xhci_hcd 0000:3f:00.0: Set port 4-1 link state, portsc: 0x1203, write 0x11261 [ 1331.020736] xhci_hcd 0000:3f:00.0: Port change event, 4-1, id 1, portsc: 0x20280 [ 1331.020738] xhci_hcd 0000:3f:00.0: resume root hub [ 1331.020741] xhci_hcd 0000:3f:00.0: handle_port_status: starting port polling. If we force the port link state to U3 in xhci_bus_suspend() maybe it would make sense to try and recover it in xhci_bus_resume(). But only for that forced port. None of the previous suspend/resume cycles in the logs went smooth either. Each time device 4-1 was forced to U3 bus xhci_bus_suspend(), and at resume the link was stuck in polling until timeout, after which it went to compliance mode, and had to be warm reset to recover. We could add the code to recover USB3 ports from disabled state in case we forced them to U3, but the rootcause of theus suspend/resume issues should be found as well Limiting your code to USB3 devices that xhi_bus_suspend forced to U3 would look something like this: diff --git a/drivers/usb/host/xhci-hub.c b/drivers/usb/host/xhci-hub.c index 9eca1fe81061..0f16dd936ab8 100644 --- a/drivers/usb/host/xhci-hub.c +++ b/drivers/usb/host/xhci-hub.c @@ -1789,6 +1789,15 @@ int xhci_bus_resume(struct usb_hcd *hcd) case XDEV_RESUME: /* resume already initiated */ break; + case XDEV_DISABLED: + if (hcd->speed >= HCD_USB3) { + portsc = xhci_port_state_to_neutral( + portsc); + portsc &= ~PORT_PLS_MASK; + portsc |= PORT_LINK_STROBE | + XDEV_RXDETECT; + } + /* fall through for both USB3 abd USB2 */ default: /* not in a resumeable state, ignore it */ clear_bit(port_index, -Mathias