linux-usb.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
To: Chunfeng Yun <chunfeng.yun@mediatek.com>
Cc: Felipe Balbi <felipe.balbi@linux.intel.com>,
	Matthias Brugger <matthias.bgg@gmail.com>,
	linux-usb@vger.kernel.org, devicetree@vger.kernel.org,
	linux-kernel@vger.kernel.org,
	linux-arm-kernel@lists.infradead.org,
	linux-mediatek@lists.infradead.org
Subject: Re: [PATCH v2] USB: move usb debugfs directory creation to the usb common core
Date: Wed, 5 Jun 2019 14:40:11 +0200	[thread overview]
Message-ID: <20190605124011.GB17558@kroah.com> (raw)
In-Reply-To: <1559732515.8487.106.camel@mhfsdcap03>

On Wed, Jun 05, 2019 at 07:01:55PM +0800, Chunfeng Yun wrote:
> Hi Greg,
> On Wed, 2019-06-05 at 11:28 +0200, Greg Kroah-Hartman wrote:
> > The USB gadget subsystem wants to use the USB debugfs root directory, so
> > move it to the common "core" USB code so that it is properly initialized
> > and removed as needed.
> > 
> > In order to properly do this, we need to load the common code before the
> > usb core code, when everything is linked into the kernel, so reorder the
> > link order of the code.
> > 
> > Also as the usb common code has the possibility of the led trigger logic
> > to be merged into it, handle the build option properly by only having
> > one module init/exit function and have the common code initialize the
> > led trigger if needed.
> > 
> > Reported-by: From: Chunfeng Yun <chunfeng.yun@mediatek.com>
> > Cc: Felipe Balbi <felipe.balbi@linux.intel.com>
> > Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
> > ---
> > 
> > Chunfeng, can you test this version to verify it works for you when
> > building the code into the kernel?
> > 
> > v2: handle led common code link error reported by kbuild
> >     handle subsys_initcall issue pointed out by Chunfeng
> > 
> >  drivers/usb/Makefile        |  3 +--
> >  drivers/usb/common/common.c | 21 +++++++++++++++++++++
> >  drivers/usb/common/common.h | 14 ++++++++++++++
> >  drivers/usb/common/led.c    |  9 +++------
> >  drivers/usb/core/usb.c      | 10 ++++------
> >  5 files changed, 43 insertions(+), 14 deletions(-)
> >  create mode 100644 drivers/usb/common/common.h
> > 
> > diff --git a/drivers/usb/Makefile b/drivers/usb/Makefile
> > index 7d1b8c82b208..ecc2de1ffaae 100644
> > --- a/drivers/usb/Makefile
> > +++ b/drivers/usb/Makefile
> > @@ -5,6 +5,7 @@
> >  
> >  # Object files in subdirectories
> >  
> > +obj-$(CONFIG_USB_COMMON)	+= common/
> >  obj-$(CONFIG_USB)		+= core/
> >  obj-$(CONFIG_USB_SUPPORT)	+= phy/
> >  
> > @@ -60,8 +61,6 @@ obj-$(CONFIG_USB_CHIPIDEA)	+= chipidea/
> >  obj-$(CONFIG_USB_RENESAS_USBHS)	+= renesas_usbhs/
> >  obj-$(CONFIG_USB_GADGET)	+= gadget/
> >  
> > -obj-$(CONFIG_USB_COMMON)	+= common/
> > -
> >  obj-$(CONFIG_USBIP_CORE)	+= usbip/
> >  
> >  obj-$(CONFIG_TYPEC)		+= typec/
> > diff --git a/drivers/usb/common/common.c b/drivers/usb/common/common.c
> > index 18f5dcf58b0d..84a4423aaddf 100644
> > --- a/drivers/usb/common/common.c
> > +++ b/drivers/usb/common/common.c
> > @@ -15,6 +15,8 @@
> >  #include <linux/usb/of.h>
> >  #include <linux/usb/otg.h>
> >  #include <linux/of_platform.h>
> > +#include <linux/debugfs.h>
> > +#include "common.h"
> >  
> >  static const char *const ep_type_names[] = {
> >  	[USB_ENDPOINT_XFER_CONTROL] = "ctrl",
> > @@ -291,4 +293,23 @@ struct device *usb_of_get_companion_dev(struct device *dev)
> >  EXPORT_SYMBOL_GPL(usb_of_get_companion_dev);
> >  #endif
> >  
> > +struct dentry *usb_debug_root;
> > +EXPORT_SYMBOL_GPL(usb_debug_root);
> > +
> > +static int usb_common_init(void)
> > +{
> > +	usb_debug_root = debugfs_create_dir("usb", NULL);
> > +	ledtrig_usb_init();
> > +	return 0;
> > +}
> > +
> > +static void usb_common_exit(void)
> > +{
> > +	ledtrig_usb_exit();
> > +	debugfs_remove_recursive(usb_debug_root);
> > +}
> > +
> When enable CONFIG_LED_TRIGGER, there is a warning
> 
>  MODPOST vmlinux.o
> WARNING: vmlinux.o(.text+0x68e300): Section mismatch in reference from
> the function usb_common_init() to the
> function .init.text:ledtrig_usb_init()
> The function usb_common_init() references
> the function __init ledtrig_usb_init().
> This is often because usb_common_init lacks a __init
> annotation or the annotation of ledtrig_usb_init is wrong.
> 
> WARNING: vmlinux.o(.text+0x68e318): Section mismatch in reference from
> the function usb_common_exit() to the
> function .exit.text:ledtrig_usb_exit()
> The function usb_common_exit() references a function in an exit section.
> Often the function ledtrig_usb_exit() has valid usage outside the exit
> section
> and the fix is to remove the __exit annotation of ledtrig_usb_exit.
> 
> seems need add __init and __exit for usb_common_init/exit

Yes, you are right, I'll go add those markings to those functions, good
catch.

greg k-h

  reply	other threads:[~2019-06-05 12:40 UTC|newest]

Thread overview: 8+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-06-05  9:28 [PATCH v2] USB: move usb debugfs directory creation to the usb common core Greg Kroah-Hartman
2019-06-05 11:01 ` Chunfeng Yun
2019-06-05 12:40   ` Greg Kroah-Hartman [this message]
2019-06-05 11:44 ` Marc Gonzalez
2019-06-05 12:39   ` Greg Kroah-Hartman
2019-06-05 12:44 ` [PATCH v3] " Greg Kroah-Hartman
2019-06-06  2:32   ` Chunfeng Yun
2019-06-06  6:58     ` Greg Kroah-Hartman

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20190605124011.GB17558@kroah.com \
    --to=gregkh@linuxfoundation.org \
    --cc=chunfeng.yun@mediatek.com \
    --cc=devicetree@vger.kernel.org \
    --cc=felipe.balbi@linux.intel.com \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-mediatek@lists.infradead.org \
    --cc=linux-usb@vger.kernel.org \
    --cc=matthias.bgg@gmail.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).