RE: linux-next: build failure after merge of the usb and usb-gadget trees

From: Felipe Balbi
Date: Thu Jul 04 2019 - 05:44:14 EST



Hi,

Pawel Laszczak <pawell@xxxxxxxxxxx> writes:

>>
>>
>>Hi,
>>
>>Pawel Laszczak <pawell@xxxxxxxxxxx> writes:
>>
>>>>
>>>>Hi,
>>>>
>>>>On Thu, Jul 4, 2019 at 9:59 AM Greg KH <greg@xxxxxxxxx> wrote:
>>>>>
>>>>> On Thu, Jul 04, 2019 at 04:34:58PM +1000, Stephen Rothwell wrote:
>>>>> > Hi all,
>>>>> >
>>>>> > After merging the usb tree, today's linux-next build (arm
>>>>> > multi_v7_defconfig) failed like this:
>>>>> >
>>>>> > arm-linux-gnueabi-ld: drivers/usb/dwc3/trace.o: in function `trace_raw_output_dwc3_log_ctrl':
>>>>> > trace.c:(.text+0x119c): undefined reference to `usb_decode_ctrl'
>>>>> >
>>>>> > Caused by commit
>>>>> >
>>>>> > 3db1b636c07e ("usb:gadget Separated decoding functions from dwc3 driver.")
>>>>> >
>>>>> > I have used the usb tree from next-20190703 for today.
>>>>> >
>>>>> > This also occurs in the usb-gadget tree so I have used the version of
>>>>> > that from next-20190703 as well.
>>>>>
>>>>> Odd, I thought I pulled the usb-gadget tree into mine. Felipe, can you
>>>>> take a look at this to see if I messed something up?
>>>>
>>>>This looks like it was caused by Pawel's patches.
>>>>
>>>>I'll try to reproduce here and see what's causing it.
>>>
>>> Problem is in my Patch. I reproduced it, but I don't understand why compiler
>>> complains about usb_decode_ctrl. It's compiled into libcomposite.ko and
>>> declaration is in drivers/usb/gadget.h.
>>
>>That's because in multi_v7_defconfig dwc3 is built-in while libcomposite
>>is a module:
>>
>>CONFIG_USB_DWC3=y
>>CONFIG_USB_LIBCOMPOSITE=m
>>
>>
>>I remember that when you were doing this work, I asked you to move
>>functions to usb/common. Why did you deviate from that suggestion? It's
>>clear that decoding a ctrl request can be used by peripheral and host
>>and we wouldn't have to deal with this problem if you had just followed
>>the suggestion.
>
> Some time ago Greg wrote:
> " It's nice to have these in a common place, but you just bloated all of
> the USB-enabled systems in the world for the use of 2 odd-ball system
> controllers that almost no one has :) "
>
> So I moved these functions to gadget directory.
>
> It was mistake that I added debug.c file to libcomposite.ko.

The plan is to use this decoding function for xHCI as well. Other host
controllers can use it as well.

The biggest mistake was to put this under gadget. What you should have
done was create a file under usb/common that only gets compile in if
tracing is enabled.

Then there's no bloating unless you have a kernel purposefuly built for
debugging and tracing.

Greg, does that work for you?

--
balbi