Received: by 2002:a25:4158:0:0:0:0:0 with SMTP id o85csp6353280yba; Thu, 11 Apr 2019 18:13:44 -0700 (PDT) X-Google-Smtp-Source: APXvYqwSispIUDZUdJvk7kc9CnO073ezA/Df4GRgB/4OYMcrc2ZG8ZXaIbvPbyn5o/IPy8Kzzb7X X-Received: by 2002:a17:902:7841:: with SMTP id e1mr53165213pln.303.1555031624424; Thu, 11 Apr 2019 18:13:44 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1555031624; cv=none; d=google.com; s=arc-20160816; b=cFsOh1+6bluB0huEEOnP0476bqPMNKOq4c1wCI/zAUmtCjwurnLWSjOCMo5r8ULcuz cK8Z1FzMzeoQS53WQKu03TiLLTS+aO+4ynegzK16BTGZiUDC5ZJAlytlmFgq4+q29p2M QnUAxxPcICf9IzB+XH8n1Whx6Ht7nSrOJVSYKyoL/rAhBHCT6W5o6DeoQeKDR6YWxpjU SUXtFW8beR8QsoK/JVr8Lb5xb5Q+o+Il1PBCKb70/t705CN55HscjTLBeJjqHfbAgJaU oVh+TyGqdr3TjWye9veRVBWD0iBaUgQsmDJl84jMW2O0c3mjl3klIqWeX1vAVdpwcmcN RWNg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:dkim-signature; bh=+6t9fDuLGcu+F3sQB7g2ficOIVeXLxhNqKwl9GmNOHE=; b=ZTnWrUGk7LwBO4xw6EU+pru7uUlaJPl2ewdjKjAaCMA+blFc2urI8tM4CxTrwImFPR u2bEZ/srwjT+qjaL9rE0Jxm20KJ1/gXkg8g2sPgfpu0aHxjeXbB4QY6An20MQHHScyyw 7jzBtZ9/0ED7mqOG7nhqE6pXbw9hjuGxl5yBMbRUV48kLneszlKOvgrUx6rinY4MbYUS Iiscv0JfC8fY12EHCheMBiKP1NSItQwGdcxEmQg7bA84ltaTeGcsoVCgJKU9iFP0gBpP bz32ZJNBc6doVMkOB2T+6g1fOT4nqKrQbt2xfgyZCOwrUvaiNOZM3Omraa2WHz5K7dB8 8IaQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linaro.org header.s=google header.b=yRPZ6tuI; 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=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id e14si36122134pfn.203.2019.04.11.18.13.24; Thu, 11 Apr 2019 18:13:44 -0700 (PDT) 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; dkim=pass header.i=@linaro.org header.s=google header.b=yRPZ6tuI; 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=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726691AbfDLBMo (ORCPT + 99 others); Thu, 11 Apr 2019 21:12:44 -0400 Received: from mail-wm1-f67.google.com ([209.85.128.67]:40770 "EHLO mail-wm1-f67.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726640AbfDLBMo (ORCPT ); Thu, 11 Apr 2019 21:12:44 -0400 Received: by mail-wm1-f67.google.com with SMTP id z24so8942807wmi.5 for ; Thu, 11 Apr 2019 18:12:43 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=+6t9fDuLGcu+F3sQB7g2ficOIVeXLxhNqKwl9GmNOHE=; b=yRPZ6tuIJ8qTSy3AYcGz9Vimw4SGUiH6/6xdFBD6xllQCoGYzJK2iZPSTH+MvV4ACF n+p2vkJMXfaVFYl58duMQhiVMEFvgoT0h/Y7FcOYFMVDQTVD1C6363Ute6pSRt5d8L7V 5MKjlkiwuTBZUf66CFNKvRwCeDop6gJO/34nKaxo82HjoMdSFAFe9WygWUhYVecdgoXZ Nz7GUKzw6dtDaM3ogJ9W5sZ6PJH3QTUDgvmMyVqMQ2Y6TpV7+jz5C9FMCyMOpgBVcZoW xuRVh5uv46cC50DiezLLSziaED0hZIEBpqHYE43YuFWIA9KCsbvPjBG2lQH1Awdi23y+ Z1dA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=+6t9fDuLGcu+F3sQB7g2ficOIVeXLxhNqKwl9GmNOHE=; b=DkDROtxCBFwG4ZhjGRAUwgNhAXL1lUv8xRVDprPboRJwNjx6jtlnyCPavPdP+ZDj1L ZzWmsNqIfc2MwSTzpU6S1UQObJiNdQ+oxOrxLXHzKx6F9f6K45oPZpYODKDTdyRU8hs5 WYQemP0gQYEiGekRuMuNFEtW3IvMpvcQxSgB+t5Zk/s04Wl8NG9i+wBmoM7l4BDfmoIi 9BbXef2OMCjvdBU36g8dEpKOmbAbjbgNodiFFhd5PWI0pto/LkvAWD7Vyws5sd8R9+ZE q8liiD8LHRv+CWC2Wi7WDqvJwtuQW+0Jpbb8mYqnVOwsB8g1JRTGOl279S0Z2TuIZ7HC dbcA== X-Gm-Message-State: APjAAAU3SSjSJjyiHfgeWbOP0Oo0xrrkP2/OwRYVODiDFeFP7ihhJTFn TRqcBa/bDzINXGhpbktBGPBUjz+dlsFwac3rimEVpA== X-Received: by 2002:a1c:4d12:: with SMTP id o18mr8196227wmh.81.1555031562719; Thu, 11 Apr 2019 18:12:42 -0700 (PDT) MIME-Version: 1.0 References: <20190329041409.70138-1-chenyu56@huawei.com> <20190329041409.70138-10-chenyu56@huawei.com> In-Reply-To: <20190329041409.70138-10-chenyu56@huawei.com> From: John Stultz Date: Thu, 11 Apr 2019 18:12:30 -0700 Message-ID: Subject: Re: [PATCH v5 09/13] usb: roles: Add usb role switch notifier. To: Yu Chen Cc: Linux USB List , "open list:OPEN FIRMWARE AND FLATTENED DEVICE TREE BINDINGS" , lkml , Zhuangluan Su , Kongfei , "Liuyu (R)" , wanghu17@hisilicon.com, butao , chenyao11@huawei.com, fangshengzhou@hisilicon.com, Li Pengcheng , songxiaowei@hisilicon.com, YiPing Xu , xuyoujun4@huawei.com, Yudongbin , Zang Leigang , Greg Kroah-Hartman , Heikki Krogerus , Hans de Goede , Andy Shevchenko Content-Type: text/plain; charset="UTF-8" Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Thu, Mar 28, 2019 at 9:14 PM Yu Chen wrote: > > This patch adds notifier for drivers want to be informed of the usb role > switch. > > Cc: Greg Kroah-Hartman > Cc: Heikki Krogerus > Cc: Hans de Goede > Cc: Andy Shevchenko > Cc: John Stultz > Suggested-by: Heikki Krogerus > Signed-off-by: Yu Chen Hey Yu Chen! Thanks again for sending this patch out! As mentioned in my comments with the other patches, I've got one proposal I wanted to share to try to avoid state initialization races that I've seen with this patchset. > diff --git a/drivers/usb/roles/class.c b/drivers/usb/roles/class.c > index f45d8df5cfb8..e2caaa665d6e 100644 > --- a/drivers/usb/roles/class.c > +++ b/drivers/usb/roles/class.c > @@ -58,6 +61,20 @@ int usb_role_switch_set_role(struct usb_role_switch *sw, enum usb_role role) > } > EXPORT_SYMBOL_GPL(usb_role_switch_set_role); > > +int usb_role_switch_register_notifier(struct usb_role_switch *sw, > + struct notifier_block *nb) > +{ > + return blocking_notifier_chain_register(&sw->nh, nb); > +} > +EXPORT_SYMBOL_GPL(usb_role_switch_register_notifier); As noted earlier, one issue I've seen is that the hisi_hikey_usb driver's notifier may not get called early enough to receive notification of the initial usb state. It seems like on registration here, we should take the lock, read the role state and immediately call the notifier to properly initialize it? I suspect that should close the window for any state races around driver probe timings and Does that make sense? I have roughly prototyped this but need to do additional testing. thanks -john