Received: by 2002:a25:ab43:0:0:0:0:0 with SMTP id u61csp5150810ybi; Tue, 4 Jun 2019 02:01:04 -0700 (PDT) X-Google-Smtp-Source: APXvYqwonNAF+c3RtKEHxpnugLQy3f0KvW25o3YjpoBSk77QDHhEl8W0PUbMBYD5XyBUYdv9U0p/ X-Received: by 2002:aa7:82d6:: with SMTP id f22mr37616571pfn.151.1559638864400; Tue, 04 Jun 2019 02:01:04 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1559638864; cv=none; d=google.com; s=arc-20160816; b=k2gbxc8lkS034v9e2ZudamINKFN8qmRVyAXiNpTk5nkkk+PwgnLTIaZ/y50SQKDR9n 1BY605fx874375Nr2IIoLxYxXd+VldkaDUmuJumCOEFjuZCTFQGUkIikZ8xdm+Bk8FjF zRqoOXf0Sfqvf8pU2GNNPCo6h4qyDtRKzaaR1n8uns+i4ZOrbo6n3+J6UYjmhJaTcgkc tt3MgSZry2hUJ8+6ulP5j7ma/qIWesOvAnteBVpwOGuyGbPZAxAKlPAOeuwRBrYnQ5T/ TVa5zxzynphsDJdPj7dM5/cg70JFY53yOg8mUy2uubfZODAujtvEgZpuN58E3TlNHNKq 8PFw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:mime-version:content-transfer-encoding :references:in-reply-to:date:cc:to:from:subject:message-id; bh=5nEOSV0PXvMzAH9vgefwaCIJ2GFPEmBZhfSJlcRX7jQ=; b=aB63JvH0SPc64rTSD7D8Hf26dNCsAJglsUQgLFjhkefW7k+x7AB+JostQumDChlsQc bng93skFhMZIdGZ1ALiAntm7h/w7VN4rPZszi2g4m2n4jyKWBqINNlV1MdvFfzVfJg7L z8r9CpM3OdGhSQ8KcIOcQJAiLG59Aws5zYqxRRN6ZkWeKB0bnONxRfljHdbjbUksMdXE fuYbgamtlG5pN6l0oANAQu+g/cmbLb3hCQHKT4Eccecov9S1Tn34Nh7fmd3RxVHJ2SAU UxwZ12QK1vHz8GwZVAYC3ii2NtOaVFrCa5uaDHiDS8yaVqx61aleTrh8bcRsC2/dTkic q7mQ== 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 Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id 12si16328953pfi.213.2019.06.04.02.00.47; Tue, 04 Jun 2019 02:01:04 -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; 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 Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726991AbfFDI7o (ORCPT + 99 others); Tue, 4 Jun 2019 04:59:44 -0400 Received: from Mailgw01.mediatek.com ([1.203.163.78]:16020 "EHLO mailgw01.mediatek.com" rhost-flags-OK-FAIL-OK-FAIL) by vger.kernel.org with ESMTP id S1726809AbfFDI7n (ORCPT ); Tue, 4 Jun 2019 04:59:43 -0400 X-UUID: 1bdeac7911f34a77a95a97ed6e439c8d-20190604 X-UUID: 1bdeac7911f34a77a95a97ed6e439c8d-20190604 Received: from mtkcas36.mediatek.inc [(172.27.4.253)] by mailgw01.mediatek.com (envelope-from ) (mailgw01.mediatek.com ESMTP with TLS) with ESMTP id 1422628494; Tue, 04 Jun 2019 16:59:16 +0800 Received: from MTKCAS32.mediatek.inc (172.27.4.184) by MTKMBS33N1.mediatek.inc (172.27.4.75) with Microsoft SMTP Server (TLS) id 15.0.1395.4; Tue, 4 Jun 2019 16:59:15 +0800 Received: from [10.17.3.153] (172.27.4.253) by MTKCAS32.mediatek.inc (172.27.4.170) with Microsoft SMTP Server id 15.0.1395.4 via Frontend Transport; Tue, 4 Jun 2019 16:59:14 +0800 Message-ID: <1559638754.8487.71.camel@mhfsdcap03> Subject: Re: [PATCH v4] usb: create usb_debug_root for gadget only From: Chunfeng Yun To: Greg Kroah-Hartman CC: Felipe Balbi , Matthias Brugger , , , , , Date: Tue, 4 Jun 2019 16:59:14 +0800 In-Reply-To: <20190604073706.GA25045@kroah.com> References: <1559633647-29040-1-git-send-email-chunfeng.yun@mediatek.com> <20190604073706.GA25045@kroah.com> Content-Type: text/plain; charset="UTF-8" X-Mailer: Evolution 3.2.3-0ubuntu6 Content-Transfer-Encoding: 7bit MIME-Version: 1.0 X-MTK: N Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Tue, 2019-06-04 at 09:37 +0200, Greg Kroah-Hartman wrote: > On Tue, Jun 04, 2019 at 03:34:07PM +0800, Chunfeng Yun wrote: > > When CONFIG_USB is not set, and CONFIG_USB_GADGET is set, > > there is an issue, e.g.: > > > > drivers/usb/mtu3/mtu3_debugfs.o: in function 'ssusb_debugfs_create_root': > > mtu3_debugfs.c:(.text+0xba3): undefined reference to 'usb_debug_root' > > > > usb_debug_root is currently only built when host is supported > > (CONFIG_USB is set), for convenience, we also want it created when > > gadget only is enabled, this patch try to support it. > > > > Reported-by: Randy Dunlap > > Signed-off-by: Chunfeng Yun > > --- > > v4: > > move common API into common.c suggested by Felipe > > > > v3: > > 1. still create usb_debug_root for gadget only > > 2. abandon mtu3's change > > 3. drop acked-by Randy > > > > v2(resend): add acked-by Randy > > > > v1: fix mtu3's build error, replace usb_debug_root by NULL; > > --- > > drivers/usb/common/common.c | 26 ++++++++++++++++++++++++++ > > drivers/usb/core/usb.c | 16 ++++------------ > > drivers/usb/gadget/udc/core.c | 3 +++ > > include/linux/usb.h | 2 ++ > > 4 files changed, 35 insertions(+), 12 deletions(-) > > > > diff --git a/drivers/usb/common/common.c b/drivers/usb/common/common.c > > index 18f5dcf58b0d..c52e9c9f58ec 100644 > > --- a/drivers/usb/common/common.c > > +++ b/drivers/usb/common/common.c > > @@ -15,6 +15,7 @@ > > #include > > #include > > #include > > +#include > > > > static const char *const ep_type_names[] = { > > [USB_ENDPOINT_XFER_CONTROL] = "ctrl", > > @@ -139,6 +140,31 @@ enum usb_dr_mode usb_get_dr_mode(struct device *dev) > > } > > EXPORT_SYMBOL_GPL(usb_get_dr_mode); > > > > +struct dentry *usb_debug_root; > > +EXPORT_SYMBOL_GPL(usb_debug_root); > > + > > +static atomic_t usb_debug_root_refcnt = ATOMIC_INIT(0); > > Ick, no. > > > + > > +struct dentry *usb_debugfs_init(void) > > +{ > > + if (!usb_debug_root) > > + usb_debug_root = debugfs_create_dir("usb", NULL); > > + > > + atomic_inc(&usb_debug_root_refcnt); > > + > > + return usb_debug_root; > > +} > > +EXPORT_SYMBOL_GPL(usb_debugfs_init); > > + > > +void usb_debugfs_cleanup(void) > > +{ > > + if (atomic_dec_and_test(&usb_debug_root_refcnt)) { > > + debugfs_remove_recursive(usb_debug_root); > > + usb_debug_root = NULL; > > + } > > +} > > +EXPORT_SYMBOL_GPL(usb_debugfs_cleanup); > > Only remove the debugfs subdir if the usbcore module is removed. Both usbcore module and gadget module will use this "usb" subdir now. Gadget module may still use it when remove usbcore module. > Create > the debugfs subdir when the usbcore module is loaded. No need for any > reference counting of any sort at all. No need to overthink this :) > > thanks, > > greg k-h