Received: by 2002:a25:8b91:0:0:0:0:0 with SMTP id j17csp21170696ybl; Sun, 5 Jan 2020 22:20:11 -0800 (PST) X-Google-Smtp-Source: APXvYqzcOEi+ENEqNEkrKo/j4kj/UjY98fwAnpv7WRpNr6DGlcSnorutI9Yc0rc3C2uFv4W4xvox X-Received: by 2002:a9d:ed5:: with SMTP id 79mr115079142otj.72.1578291611802; Sun, 05 Jan 2020 22:20:11 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1578291611; cv=none; d=google.com; s=arc-20160816; b=1FtOgUvEzm5Qupuadiec7vf9NP5W9uhTynQycdEntjZVeK4EaNez0svf8ailrg+EFR 3Ek+nk793PNan8BrwFmmMIdBoBoVrY6Ojw3IMgHvhveD33EbBZpKJ1vutcOOse0YXETT LFXckoHELINay3NDalcCwmG7RRF9iRk//V58W3sZP9d9DaXM8nbrHYhvMI51pxaYgOEz mgwDUn5QPMJMFC751COXDmLRHFpFMowFjW/f7nuk2ZY/1NKLP7CHN+9E4RzZGDS/Vjbb FswbJ72mP3Y1jkRaq/6JjPNE8re0ylW7uSijSjdBTasUDkejn7d5uvejSRNhtckrUlNT n09w== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:to:references:message-id :content-transfer-encoding:cc:date:in-reply-to:from:subject :mime-version; bh=d+xtIL80anqpGSAlVaBCU7UdZef8wwHjt3cngHsUuPY=; b=qM62hn6NN6Dm8YkZhTgn6AU/eQHj8fUcjJaDHFURMpG2QPaDgI9+EEGTtP4XqIKmff 63YPDLaTjmQqCbDcodCBhgoXa3lnggxUVpUq9fWVtzxDApgBiAkdbIwO2ro7CkTshMOv 1Q7+8VWSAce7QBq6KMgiOJ84iqalcoZSshKB6CY1gKdo3mPvpUSmctipSzH2TUAN+oNk Qw6D+T0aiyROybMXX6dgOqSHLdCOcOhnBTY+8K/4G9+ZIu8Tqu9CQL1Tavr5+wMbABdQ ScB36Vt04SvkuT3Lm+HfrB9EX1IvPtiw/xyKzqaruQmnZTv390r8VBIA6oBrg4oCLpzF UkdQ== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=canonical.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id p14si36196735ota.71.2020.01.05.22.19.58; Sun, 05 Jan 2020 22:20:11 -0800 (PST) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=canonical.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726858AbgAFGTR convert rfc822-to-8bit (ORCPT + 99 others); Mon, 6 Jan 2020 01:19:17 -0500 Received: from youngberry.canonical.com ([91.189.89.112]:36160 "EHLO youngberry.canonical.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726338AbgAFGTR (ORCPT ); Mon, 6 Jan 2020 01:19:17 -0500 Received: from mail-pl1-f197.google.com ([209.85.214.197]) by youngberry.canonical.com with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.86_2) (envelope-from ) id 1ioLjP-00069F-7m for linux-kernel@vger.kernel.org; Mon, 06 Jan 2020 06:19:15 +0000 Received: by mail-pl1-f197.google.com with SMTP id b5so18663601pls.9 for ; Sun, 05 Jan 2020 22:19:15 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:subject:from:in-reply-to:date:cc :content-transfer-encoding:message-id:references:to; bh=vqkeBbtQ/S3eGJG7ALwvxRss7P5JkNLpwge+MbQGY3E=; b=GFgVInBC5AGGSKRSkEW7NSijBao0iiJ4Gfw0yxEJ6dIHP81EcUpOgnNY0WzZkMxBLW sShRicf8UPT5KdIg2u+W6uUSDnT8X1ufd9uSETTfGy0st1Jdbb5DDNruEIsgXFni4WxZ Oq7DkGpDCvpCm81+C0R7Y7LuX6toZwx8LdrqpJ10gpsyZm3yGcqpcpe3caWhqgNbxLQZ LUbVJoN4RKPOgPpgDPDmGC8K4z65VqD+nuxMWyR1z9hiUhblawKpKloEX6c8ZG6k26dB Whwkm9FVaQ7hv2tK26h0WfWYmVnOm9mZ63EtS5/Dw4+Xj+PrgOZpI4O9t0XQ/nB4OQOT AaSw== X-Gm-Message-State: APjAAAUlYEwqmrWTuxjdeEEneEbdVfwJNYlcVOctOQ1uKsru0QFKKODT 46eYqWxSZpO1LnWdeRJCFEnzezqgZE6SoFLKNpXaXbueSUfXTU+ETmlFr4oFK81Sf0WUo/W9O06 DXIi+t4pMtqb22w6s5i8zIq5MMwPX4bASeYi3ib+RKQ== X-Received: by 2002:a62:1c88:: with SMTP id c130mr108394749pfc.195.1578291553831; Sun, 05 Jan 2020 22:19:13 -0800 (PST) X-Received: by 2002:a62:1c88:: with SMTP id c130mr108394738pfc.195.1578291553557; Sun, 05 Jan 2020 22:19:13 -0800 (PST) Received: from 2001-b011-380f-35a3-2839-ccbd-36ed-2f4a.dynamic-ip6.hinet.net (2001-b011-380f-35a3-2839-ccbd-36ed-2f4a.dynamic-ip6.hinet.net. [2001:b011:380f:35a3:2839:ccbd:36ed:2f4a]) by smtp.gmail.com with ESMTPSA id j5sm60724985pfn.180.2020.01.05.22.19.11 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Sun, 05 Jan 2020 22:19:13 -0800 (PST) Content-Type: text/plain; charset=us-ascii Mime-Version: 1.0 (Mac OS X Mail 13.0 \(3608.40.2.2.4\)) Subject: Re: [PATCH 3/3] USB: Disable LPM on WD19's Realtek Hub during setting its ports to U0 From: Kai-Heng Feng In-Reply-To: Date: Mon, 6 Jan 2020 14:19:07 +0800 Cc: Mathias Nyman , gregkh@linuxfoundation.org, acelan.kao@canonical.com, linux-usb@vger.kernel.org, linux-kernel@vger.kernel.org Content-Transfer-Encoding: 8BIT Message-Id: <90B37743-30D1-41BB-8272-D5FBDC89C88F@canonical.com> References: To: Alan Stern X-Mailer: Apple Mail (2.3608.40.2.2.4) Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org > On Jan 5, 2020, at 00:20, Alan Stern wrote: > > On Sat, 4 Jan 2020, Kai-Heng Feng wrote: > >>>>>> @@ -3533,9 +3533,17 @@ int usb_port_resume(struct usb_device *udev, pm_message_t msg) >>>>>> } >>>>>> >>>>>> /* see 7.1.7.7; affects power usage, but not budgeting */ >>>>>> - if (hub_is_superspeed(hub->hdev)) >>>>>> + if (hub_is_superspeed(hub->hdev)) { >>>>>> + if (hub->hdev->quirks & USB_QUIRK_DISABLE_LPM_ON_U0) { >>>>>> + usb_lock_device(hub->hdev); >>>>>> + usb_unlocked_disable_lpm(hub->hdev); >>>>>> + } >>>>>> status = hub_set_port_link_state(hub, port1, USB_SS_PORT_LS_U0); >>>>>> - else >>>>>> + if (hub->hdev->quirks & USB_QUIRK_DISABLE_LPM_ON_U0) { >>>>>> + usb_unlocked_enable_lpm(hub->hdev); >>>>>> + usb_unlock_device(hub->hdev); >>>>> >>>>> The locking here seems questionable. Doesn't this code sometimes get >>>>> called with the hub already locked? Or with the child device locked >>>>> (in which case locking the hub would violate the normal locking order: >>>>> parent first, child second)? >>> >>> I did a little checking. In many cases the child device _will_ be >>> locked at this point. >>> >>>> Maybe introduce a new lock? The lock however will only be used by this specific hub. >>>> But I still want the LPM can be enabled for this hub. >>> >>> Do you really need to lock the hub at all? What would the lock protect >>> against? >> >> There can be multiple usb_port_resume() run at the same time for different ports, so this is to prevent LPM enable/disable race. > > But there can't really be an LPM enable/disable race, can there? The > individual function calls are protected by the bandwidth mutex taken by > the usb_unlocked_{en|dis}able_lpm routines, and the overall LPM setting > is controlled by the hub device's lpm_disable_counter. For enable/disable LPM itself, there's no race. But the lock here is to protect hub_set_port_link_state(). If we don't lock the hub, other instances of usb_port_resume() routine can enable LPM and we want the LPM stays disabled until hub_set_port_link_state() is done. Kai-Heng > > So I think you don't need to lock the hub here. > > Alan Stern >