Received: by 2002:a05:6a10:af89:0:0:0:0 with SMTP id iu9csp3389356pxb; Mon, 17 Jan 2022 19:23:19 -0800 (PST) X-Google-Smtp-Source: ABdhPJxg+zTGKhO7EPj0oecMcyXApN41m2HMyc3+7ja20udATPulgC1pwp8L4QcbRxH4LOyxt2ZG X-Received: by 2002:a17:903:11c6:b0:149:a969:7825 with SMTP id q6-20020a17090311c600b00149a9697825mr25067909plh.33.1642476198982; Mon, 17 Jan 2022 19:23:18 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1642476198; cv=none; d=google.com; s=arc-20160816; b=lvaid+e9AihlbTQhP/zPWn1DT5N3ev+JdmNACCdyTP7D7jTCFd8eYAZphm8hHlyB2A +/HWcq344sIrsm39GwzMrHQVp0F9gcKJZU7RxpmbutW3hAUCNFLfmERBeoDgJX0xGQla bxOakLuqIzNNLB3ublfiaD590C+qwFU+DsavKiSo1MysIMf7tA/1FOT3XfeLM6gTFVYu SNYdwdY5mEONPLm2kwghv43J8MdAu5EFp5RMIEMHB1hO7oobHAHRp5zLwqUm++l95cng f1z/CTnT1XC5uz9LX0RSH4Ig2bKOLSQ0883H5/7UUYSUBQ9NOfZpPgq2jZ/hU2F945UD 8J7A== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=nW0Z1CXQWQPMwlBz/hBMD9Tc+FNbD34ebwQ5vGoxfPs=; b=fO/2pEpYG9sZ14jZC4giyVPIkFrXONGO3bgL0PC9NJzFljWHQiZH+zfwIDJQE3cFLh ALu91flsYEUAHPheqQDbaYuieZzKRAjK3i3BRElpaKJuEN4qxYtfXBQRbg8yJ7RBQon5 lvI7QyMYbF8jTF2lEbK4RcD0LJIVbaH/53JYCQCjiSq3tnSGl1jMyHh0vswJtXYj3J7O dnowfgg/tKP04RyQiCfNsML6aMYAnP5VgQzYcgZXNkQ8yOpQYvjWvNa0gnfxYw8h/TsB H2O51KwNMCBBUb9kwPanfIsx7B482T9y08XNgIh82cxIidNvUeyrzgwcAMZbivY+IBYl Kdow== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=RoIL+wcV; 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=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id q4si9018443pgk.848.2022.01.17.19.23.06; Mon, 17 Jan 2022 19:23:18 -0800 (PST) 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; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=RoIL+wcV; 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=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S244728AbiARC3d (ORCPT + 99 others); Mon, 17 Jan 2022 21:29:33 -0500 Received: from ams.source.kernel.org ([145.40.68.75]:40746 "EHLO ams.source.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S245706AbiARC1W (ORCPT ); Mon, 17 Jan 2022 21:27:22 -0500 Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ams.source.kernel.org (Postfix) with ESMTPS id CFD0FB81238; Tue, 18 Jan 2022 02:27:20 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 4F01CC36AE3; Tue, 18 Jan 2022 02:27:18 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1642472839; bh=/X7H+u8MpxjAE34NavQ2xREoohniDEZDAobyYJsgxb8=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=RoIL+wcVxvH4uUT7KknlrgmF1VFTjg26m98K7xEnWpWAHcSWzorf8RVV+frfqvLjj WEV9O6kNnSCsLhZcSH2l3VcpcIBaDjjQ3vaH0CgUwsYun26BUV/7Y5OIt9VB04vWt9 Ngd1/EmtZ+3Yx/zdPNIFeOBQsnPSDI2aQisTR2B1b36JEyNpNKwNGESHFPI/iQ4WCa kcMGqlJte/1xmmNIdS/BR0fci585zr59NPq5umMl74s4A6QKKjwh/TQsA0Jq2Uh8NP Z/pocm7YtppOa/a26svMRLOM0Gc2pgEWV75I6RE/JtfbbKiAgSizrN3+CSSpHLe2sF cX1bqWnAt98Wg== From: Sasha Levin To: linux-kernel@vger.kernel.org, stable@vger.kernel.org Cc: Kai-Heng Feng , Alan Stern , Greg Kroah-Hartman , Sasha Levin , mathias.nyman@linux.intel.com, Thinh.Nguyen@synopsys.com, bhelgaas@google.com, cuibixuan@huawei.com, chris.chiu@canonical.com, rajatja@google.com, linux-usb@vger.kernel.org Subject: [PATCH AUTOSEL 5.16 151/217] usb: hub: Add delay for SuperSpeed hub resume to let links transit to U0 Date: Mon, 17 Jan 2022 21:18:34 -0500 Message-Id: <20220118021940.1942199-151-sashal@kernel.org> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20220118021940.1942199-1-sashal@kernel.org> References: <20220118021940.1942199-1-sashal@kernel.org> MIME-Version: 1.0 X-stable: review X-Patchwork-Hint: Ignore Content-Transfer-Encoding: 8bit Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Kai-Heng Feng [ Upstream commit 00558586382891540c59c9febc671062425a6e47 ] When a new USB device gets plugged to nested hubs, the affected hub, which connects to usb 2-1.4-port2, doesn't report there's any change, hence the nested hubs go back to runtime suspend like nothing happened: [ 281.032951] usb usb2: usb wakeup-resume [ 281.032959] usb usb2: usb auto-resume [ 281.032974] hub 2-0:1.0: hub_resume [ 281.033011] usb usb2-port1: status 0263 change 0000 [ 281.033077] hub 2-0:1.0: state 7 ports 4 chg 0000 evt 0000 [ 281.049797] usb 2-1: usb wakeup-resume [ 281.069800] usb 2-1: Waited 0ms for CONNECT [ 281.069810] usb 2-1: finish resume [ 281.070026] hub 2-1:1.0: hub_resume [ 281.070250] usb 2-1-port4: status 0203 change 0000 [ 281.070272] usb usb2-port1: resume, status 0 [ 281.070282] hub 2-1:1.0: state 7 ports 4 chg 0010 evt 0000 [ 281.089813] usb 2-1.4: usb wakeup-resume [ 281.109792] usb 2-1.4: Waited 0ms for CONNECT [ 281.109801] usb 2-1.4: finish resume [ 281.109991] hub 2-1.4:1.0: hub_resume [ 281.110147] usb 2-1.4-port2: status 0263 change 0000 [ 281.110234] usb 2-1-port4: resume, status 0 [ 281.110239] usb 2-1-port4: status 0203, change 0000, 10.0 Gb/s [ 281.110266] hub 2-1.4:1.0: state 7 ports 4 chg 0000 evt 0000 [ 281.110426] hub 2-1.4:1.0: hub_suspend [ 281.110565] usb 2-1.4: usb auto-suspend, wakeup 1 [ 281.130998] hub 2-1:1.0: hub_suspend [ 281.137788] usb 2-1: usb auto-suspend, wakeup 1 [ 281.142935] hub 2-0:1.0: state 7 ports 4 chg 0000 evt 0000 [ 281.177828] usb 2-1: usb wakeup-resume [ 281.197839] usb 2-1: Waited 0ms for CONNECT [ 281.197850] usb 2-1: finish resume [ 281.197984] hub 2-1:1.0: hub_resume [ 281.198203] usb 2-1-port4: status 0203 change 0000 [ 281.198228] usb usb2-port1: resume, status 0 [ 281.198237] hub 2-1:1.0: state 7 ports 4 chg 0010 evt 0000 [ 281.217835] usb 2-1.4: usb wakeup-resume [ 281.237834] usb 2-1.4: Waited 0ms for CONNECT [ 281.237845] usb 2-1.4: finish resume [ 281.237990] hub 2-1.4:1.0: hub_resume [ 281.238067] usb 2-1.4-port2: status 0263 change 0000 [ 281.238148] usb 2-1-port4: resume, status 0 [ 281.238152] usb 2-1-port4: status 0203, change 0000, 10.0 Gb/s [ 281.238166] hub 2-1.4:1.0: state 7 ports 4 chg 0000 evt 0000 [ 281.238385] hub 2-1.4:1.0: hub_suspend [ 281.238523] usb 2-1.4: usb auto-suspend, wakeup 1 [ 281.258076] hub 2-1:1.0: hub_suspend [ 281.265744] usb 2-1: usb auto-suspend, wakeup 1 [ 281.285976] hub 2-0:1.0: hub_suspend [ 281.285988] usb usb2: bus auto-suspend, wakeup 1 USB 3.2 spec, 9.2.5.4 "Changing Function Suspend State" says that "If the link is in a non-U0 state, then the device must transition the link to U0 prior to sending the remote wake message", but the hub only transits the link to U0 after signaling remote wakeup. So be more forgiving and use a 20ms delay to let the link transit to U0 for remote wakeup. Suggested-by: Alan Stern Acked-by: Alan Stern Signed-off-by: Kai-Heng Feng Link: https://lore.kernel.org/r/20211215120108.336597-1-kai.heng.feng@canonical.com Signed-off-by: Greg Kroah-Hartman Signed-off-by: Sasha Levin --- drivers/usb/core/hub.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/drivers/usb/core/hub.c b/drivers/usb/core/hub.c index 00070a8a65079..576fdf2c9f3c8 100644 --- a/drivers/usb/core/hub.c +++ b/drivers/usb/core/hub.c @@ -1110,7 +1110,10 @@ static void hub_activate(struct usb_hub *hub, enum hub_activation_type type) } else { hub_power_on(hub, true); } - } + /* Give some time on remote wakeup to let links to transit to U0 */ + } else if (hub_is_superspeed(hub->hdev)) + msleep(20); + init2: /* -- 2.34.1