Received: by 2002:a05:6a10:af89:0:0:0:0 with SMTP id iu9csp3579161pxb; Mon, 24 Jan 2022 12:41:37 -0800 (PST) X-Google-Smtp-Source: ABdhPJzPpsUNdIbACFCraBU7/BmlKgP8CsbohUtc/jKF/23Y3oTm8M457fJ+GjYE3Xg2cjIBYoIV X-Received: by 2002:a63:114:: with SMTP id 20mr6064360pgb.524.1643056897159; Mon, 24 Jan 2022 12:41:37 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1643056897; cv=none; d=google.com; s=arc-20160816; b=g6BNTWYqzOkMGhyvkaGch4mTyD4ZBsqO2pzqqjTtnZSvhxXXPNsLRw9bYqVAmtOur1 KBdE9PaW6KayDtTH0D9xh1ipI9DKgV4mgC7lSlfyZLa1PkG7KzHqQKplZ8re1PzkGSAr q9nLioMUNURp26bODUu0yrls/KBurIikbdZ8AR20i1dKjpnUzH3GnGAiFa59xG4aZYdc ccviPNDIztj2B9oC2Y0ZdjxPSTPYp0k7pKrM7YK0yuACYTU9SjrGtWgHst+JKfW07+uu vQyF/TcWn/BsW4pV0v5II7FpHPnXE+evfUCwCXLUqgadQoDuqjKooK/tdo/dzrLJOInv yXKg== 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 :user-agent:references:in-reply-to:message-id:date:subject:cc:to :from:dkim-signature; bh=JGw8EmiT3RxN/4cYpkoNGcWsZrJyNGnqyfsbhpv4nbs=; b=AcUoxGrPDmvBU4VUh38mKRIls/mJQYQzcissekw8ZMkTLbnUfFHBsXUyuCp1cY51IL gvkpADupnLmmOeFVPlMZxCAUWdF9v19QqVegOGqewemtFx6Hriv+WVIulDgEVsGYOmvj 3eOdzXkzekHLWlO2erNVBj+LK5SDKMzPxWYl7H5sY+gXhx5vHpYAxt61GSpZbgTHhYxk 5O+4ntg6Mlr/AkwlbN8CXDslhiLz+0/QZlFNA+jdnILxTtaK+U6qzmNrpvsWscidK4ma egLdIj5lsgzRGQhg+aCmdrdk3kI0W+6OeUlj0hvqFfUUkgnO8zGJqmmcFysHoP+16tpH 6+cg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linuxfoundation.org header.s=korg header.b=N1T5XmYI; 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=linuxfoundation.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id g64si674928pgc.64.2022.01.24.12.41.20; Mon, 24 Jan 2022 12:41:37 -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=@linuxfoundation.org header.s=korg header.b=N1T5XmYI; 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=linuxfoundation.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1358696AbiAXTzk (ORCPT + 99 others); Mon, 24 Jan 2022 14:55:40 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:54226 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1346586AbiAXTk7 (ORCPT ); Mon, 24 Jan 2022 14:40:59 -0500 Received: from ams.source.kernel.org (ams.source.kernel.org [IPv6:2604:1380:4601:e00::1]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 250A6C0613EB; Mon, 24 Jan 2022 11:19:54 -0800 (PST) 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 D7507B8121C; Mon, 24 Jan 2022 19:19:52 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 01305C340E5; Mon, 24 Jan 2022 19:19:50 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=linuxfoundation.org; s=korg; t=1643051991; bh=kvwgCkmFoSxmqbuxq0+LLTbOC4PKAA/V/FrSQ2rRFSw=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=N1T5XmYI88nrh6aRIVxS8LTOQ1wuOKY3R17XjtRTs72FhKimXtIoWwrzw1IEbpZ0h b4RggGDuchJX4HcUSIEwx+7yKjwO1BCjOVfWYl+RKnJASy7aIcsVaf/wohXD/lcQ03 5CAOCnu0sikNXP7xfeqnBzEfnoWKtR65Qd57o5WQ= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Alan Stern , Kai-Heng Feng , Sasha Levin Subject: [PATCH 4.19 153/239] usb: hub: Add delay for SuperSpeed hub resume to let links transit to U0 Date: Mon, 24 Jan 2022 19:43:11 +0100 Message-Id: <20220124183947.959125470@linuxfoundation.org> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20220124183943.102762895@linuxfoundation.org> References: <20220124183943.102762895@linuxfoundation.org> User-Agent: quilt/0.66 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 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 7feb25559e079..29cc2aa5abff5 100644 --- a/drivers/usb/core/hub.c +++ b/drivers/usb/core/hub.c @@ -1082,7 +1082,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