usb: Make sure usb/phy/of gets built-in

Submitted by Alexey Brodkin on April 13, 2017, 12:33 p.m.

Details

Message ID 1492086814-21006-1-git-send-email-abrodkin@synopsys.com
State New
Headers show

Commit Message

Alexey Brodkin April 13, 2017, 12:33 p.m.
DWC3 driver uses of_usb_get_phy_mode() which is
implemented in drivers/usb/phy/of.c and in bare minimal
configuration it might not be pulled in kernel binary.

In case of ARC or ARM this could be easily reproduced with
"allnodefconfig" +CONFIG_USB=m +CONFIG_USB_DWC3=m.

On building all ends-up with:
---------------------->8------------------
  Kernel: arch/arm/boot/Image is ready
  Kernel: arch/arm/boot/zImage is ready
  Building modules, stage 2.
  MODPOST 5 modules
ERROR: "of_usb_get_phy_mode" [drivers/usb/dwc3/dwc3.ko] undefined!
make[1]: *** [__modpost] Error 1
make: *** [modules] Error 2
---------------------->8------------------

Signed-off-by: Alexey Brodkin <abrodkin@synopsys.com>
Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Cc: Masahiro Yamada <yamada.masahiro@socionext.com>
Cc: Geert Uytterhoeven <geert+renesas@glider.be>
Cc: Nicolas Pitre <nicolas.pitre@linaro.org>
Cc: Thomas Gleixner <tglx@linutronix.de>
Cc: Felipe Balbi <balbi@kernel.org>
Cc: Felix Fietkau <nbd@nbd.name>
Cc: Jeremy Kerr <jk@ozlabs.org>
Cc: linux-snps-arc@lists.infradead.org
Cc: stable@vger.kernel.org
---
 drivers/Makefile | 1 +
 1 file changed, 1 insertion(+)

Comments

Frank Rowand April 18, 2017, 3:15 a.m.
On 04/13/17 05:33, Alexey Brodkin wrote:
> DWC3 driver uses of_usb_get_phy_mode() which is
> implemented in drivers/usb/phy/of.c and in bare minimal
> configuration it might not be pulled in kernel binary.
> 
> In case of ARC or ARM this could be easily reproduced with
> "allnodefconfig" +CONFIG_USB=m +CONFIG_USB_DWC3=m.
> 
> On building all ends-up with:
> ---------------------->8------------------
>   Kernel: arch/arm/boot/Image is ready
>   Kernel: arch/arm/boot/zImage is ready
>   Building modules, stage 2.
>   MODPOST 5 modules
> ERROR: "of_usb_get_phy_mode" [drivers/usb/dwc3/dwc3.ko] undefined!
> make[1]: *** [__modpost] Error 1
> make: *** [modules] Error 2
> ---------------------->8------------------
> 
> Signed-off-by: Alexey Brodkin <abrodkin@synopsys.com>
> Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
> Cc: Masahiro Yamada <yamada.masahiro@socionext.com>
> Cc: Geert Uytterhoeven <geert+renesas@glider.be>
> Cc: Nicolas Pitre <nicolas.pitre@linaro.org>
> Cc: Thomas Gleixner <tglx@linutronix.de>
> Cc: Felipe Balbi <balbi@kernel.org>
> Cc: Felix Fietkau <nbd@nbd.name>
> Cc: Jeremy Kerr <jk@ozlabs.org>
> Cc: linux-snps-arc@lists.infradead.org
> Cc: stable@vger.kernel.org
> ---
>  drivers/Makefile | 1 +
>  1 file changed, 1 insertion(+)
> 
> diff --git a/drivers/Makefile b/drivers/Makefile
> index 2eced9afba53..8f8bdc9e3d29 100644
> --- a/drivers/Makefile
> +++ b/drivers/Makefile
> @@ -104,6 +104,7 @@ obj-$(CONFIG_USB_PHY)		+= usb/
>  obj-$(CONFIG_USB)		+= usb/
>  obj-$(CONFIG_PCI)		+= usb/
>  obj-$(CONFIG_USB_GADGET)	+= usb/

> +obj-$(CONFIG_OF)		+= usb/

Would CONFIG_USB_SUPPORT make more sense? (And does it work?)


>  obj-$(CONFIG_SERIO)		+= input/serio/
>  obj-$(CONFIG_GAMEPORT)		+= input/gameport/
>  obj-$(CONFIG_INPUT)		+= input/
>
Alexey Brodkin April 18, 2017, 12:23 p.m.
Hello Frank,

On Mon, 2017-04-17 at 20:15 -0700, Frank Rowand wrote:
> On 04/13/17 05:33, Alexey Brodkin wrote:

> > 

> > DWC3 driver uses of_usb_get_phy_mode() which is

> > implemented in drivers/usb/phy/of.c and in bare minimal

> > configuration it might not be pulled in kernel binary.

> > 

> > In case of ARC or ARM this could be easily reproduced with

> > "allnodefconfig" +CONFIG_USB=m +CONFIG_USB_DWC3=m.

> > 

> > On building all ends-up with:

> > ---------------------->8------------------

> >   Kernel: arch/arm/boot/Image is ready

> >   Kernel: arch/arm/boot/zImage is ready

> >   Building modules, stage 2.

> >   MODPOST 5 modules

> > ERROR: "of_usb_get_phy_mode" [drivers/usb/dwc3/dwc3.ko] undefined!

> > make[1]: *** [__modpost] Error 1

> > make: *** [modules] Error 2

> > ---------------------->8------------------

> > 

> > Signed-off-by: Alexey Brodkin <abrodkin@synopsys.com>

> > Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

> > Cc: Masahiro Yamada <yamada.masahiro@socionext.com>

> > Cc: Geert Uytterhoeven <geert+renesas@glider.be>

> > Cc: Nicolas Pitre <nicolas.pitre@linaro.org>

> > Cc: Thomas Gleixner <tglx@linutronix.de>

> > Cc: Felipe Balbi <balbi@kernel.org>

> > Cc: Felix Fietkau <nbd@nbd.name>

> > Cc: Jeremy Kerr <jk@ozlabs.org>

> > Cc: linux-snps-arc@lists.infradead.org

> > Cc: stable@vger.kernel.org

> > ---

> >  drivers/Makefile | 1 +

> >  1 file changed, 1 insertion(+)

> > 

> > diff --git a/drivers/Makefile b/drivers/Makefile

> > index 2eced9afba53..8f8bdc9e3d29 100644

> > --- a/drivers/Makefile

> > +++ b/drivers/Makefile

> > @@ -104,6 +104,7 @@ obj-$(CONFIG_USB_PHY)		+= usb/

> >  obj-$(CONFIG_USB)		+= usb/

> >  obj-$(CONFIG_PCI)		+= usb/

> >  obj-$(CONFIG_USB_GADGET)	+= usb/

> 

> > 

> > +obj-$(CONFIG_OF)		+= usb/

> 

> Would CONFIG_USB_SUPPORT make more sense? (And does it work?)


Well I'm not really sure here.

The problem was in missing "drivers/usb/phy/of.o" in "drivers/usb/built-in.o".
So I took a look at how components get enabled and saw quite mixed stuff.

In "drivers/usb/phy/Makefile" we see:
------------------------->8---------------------------
obj-$(CONFIG_OF)»       »       »       += of.o
------------------------->8---------------------------

In "drivers/usb/Makefile" we see:
------------------------->8---------------------------
obj-$(CONFIG_USB_SUPPORT)»      += phy/
------------------------->8---------------------------

From above I may conclude that your proposal should work as well
but it's more a question of which approach is safer and more future proof.

Maybe it even worth adding the following to "drivers/usb/Makefile":
------------------------->8---------------------------
obj-$(CONFIG_USB_SUPPORT)»      += phy/
------------------------->8---------------------------

Any thoughts are more than welcome.

-Alexey
Alexey Brodkin April 24, 2017, 12:44 p.m.
Hello,

On Tue, 2017-04-18 at 12:23 +0000, Alexey Brodkin wrote:
> Hello Frank,

> 

> On Mon, 2017-04-17 at 20:15 -0700, Frank Rowand wrote:

> > 

> > On 04/13/17 05:33, Alexey Brodkin wrote:

> > > 

> > > 

> > > DWC3 driver uses of_usb_get_phy_mode() which is

> > > implemented in drivers/usb/phy/of.c and in bare minimal

> > > configuration it might not be pulled in kernel binary.

> > > 

> > > In case of ARC or ARM this could be easily reproduced with

> > > "allnodefconfig" +CONFIG_USB=m +CONFIG_USB_DWC3=m.

> > > 

> > > On building all ends-up with:

> > > ---------------------->8------------------

> > >   Kernel: arch/arm/boot/Image is ready

> > >   Kernel: arch/arm/boot/zImage is ready

> > >   Building modules, stage 2.

> > >   MODPOST 5 modules

> > > ERROR: "of_usb_get_phy_mode" [drivers/usb/dwc3/dwc3.ko] undefined!

> > > make[1]: *** [__modpost] Error 1

> > > make: *** [modules] Error 2

> > > ---------------------->8------------------

> > > 

> > > Signed-off-by: Alexey Brodkin <abrodkin@synopsys.com>

> > > Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

> > > Cc: Masahiro Yamada <yamada.masahiro@socionext.com>

> > > Cc: Geert Uytterhoeven <geert+renesas@glider.be>

> > > Cc: Nicolas Pitre <nicolas.pitre@linaro.org>

> > > Cc: Thomas Gleixner <tglx@linutronix.de>

> > > Cc: Felipe Balbi <balbi@kernel.org>

> > > Cc: Felix Fietkau <nbd@nbd.name>

> > > Cc: Jeremy Kerr <jk@ozlabs.org>

> > > Cc: linux-snps-arc@lists.infradead.org

> > > Cc: stable@vger.kernel.org

> > > ---

> > >  drivers/Makefile | 1 +

> > >  1 file changed, 1 insertion(+)

> > > 

> > > diff --git a/drivers/Makefile b/drivers/Makefile

> > > index 2eced9afba53..8f8bdc9e3d29 100644

> > > --- a/drivers/Makefile

> > > +++ b/drivers/Makefile

> > > @@ -104,6 +104,7 @@ obj-$(CONFIG_USB_PHY)		+= usb/

> > >  obj-$(CONFIG_USB)		+= usb/

> > >  obj-$(CONFIG_PCI)		+= usb/

> > >  obj-$(CONFIG_USB_GADGET)	+= usb/

> > 

> > > 

> > > 

> > > +obj-$(CONFIG_OF)		+= usb/

> > 

> > Would CONFIG_USB_SUPPORT make more sense? (And does it work?)

> 

> Well I'm not really sure here.

> 

> The problem was in missing "drivers/usb/phy/of.o" in "drivers/usb/built-in.o".

> So I took a look at how components get enabled and saw quite mixed stuff.

> 

> In "drivers/usb/phy/Makefile" we see:

> ------------------------->8---------------------------

> obj-$(CONFIG_OF)»       »       »       += of.o

> ------------------------->8---------------------------

> 

> In "drivers/usb/Makefile" we see:

> ------------------------->8---------------------------

> obj-$(CONFIG_USB_SUPPORT)»      += phy/

> ------------------------->8---------------------------

> 

> From above I may conclude that your proposal should work as well

> but it's more a question of which approach is safer and more future proof.

> 

> Maybe it even worth adding the following to "drivers/usb/Makefile":

> ------------------------->8---------------------------

> obj-$(CONFIG_USB_SUPPORT)»      += phy/

> ------------------------->8---------------------------


I'm wondering if there're any other thoughts on this one?
The patch fixes a real problem and it would be good to get this or similar
fix upstream.

-Alexey

Patch hide | download patch | download mbox

diff --git a/drivers/Makefile b/drivers/Makefile
index 2eced9afba53..8f8bdc9e3d29 100644
--- a/drivers/Makefile
+++ b/drivers/Makefile
@@ -104,6 +104,7 @@  obj-$(CONFIG_USB_PHY)		+= usb/
 obj-$(CONFIG_USB)		+= usb/
 obj-$(CONFIG_PCI)		+= usb/
 obj-$(CONFIG_USB_GADGET)	+= usb/
+obj-$(CONFIG_OF)		+= usb/
 obj-$(CONFIG_SERIO)		+= input/serio/
 obj-$(CONFIG_GAMEPORT)		+= input/gameport/
 obj-$(CONFIG_INPUT)		+= input/