Re: [PATCH v3 0/9] Tegra xHCI support

From: Andrew Bresticker
Date: Tue Sep 16 2014 - 18:52:00 EST


On Tue, Sep 16, 2014 at 3:40 PM, Stephen Warren <swarren@xxxxxxxxxxxxx> wrote:
> On 09/16/2014 10:57 AM, Andrew Bresticker wrote:
>>
>> On Tue, Sep 16, 2014 at 8:26 AM, Stephen Warren <swarren@xxxxxxxxxxxxx>
>> wrote:
>>>
>>> On 09/15/2014 01:30 PM, Andrew Bresticker wrote:
>>>>
>>>>
>>>> On Mon, Sep 15, 2014 at 11:09 AM, Stephen Warren <swarren@xxxxxxxxxxxxx>
>>>> wrote:
>>>>>
>>>>>
>>>>> On 09/15/2014 11:06 AM, Andrew Bresticker wrote:
>>>>>>
>>>>>>
>>>>>> On Mon, Sep 15, 2014 at 12:00 AM, Tomeu Vizoso <tomeu@xxxxxxxxxxxxxxx>
>>>>>> wrote:
>>>>>>>
>>>>>>>
>>>>>>> On 12 September 2014 18:37, Andrew Bresticker <abrestic@xxxxxxxxxxxx>
>>>>>>> wrote:
>>>>>>>>
>>>>>>>>
>>>>>>>> On Tue, Sep 9, 2014 at 1:21 AM, Tomeu Vizoso <tomeu@xxxxxxxxxxxxxxx>
>>>>>>>> wrote:
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> On 8 September 2014 18:22, Andrew Bresticker
>>>>>>>>> <abrestic@xxxxxxxxxxxx>
>>>>>>>>> wrote:
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> On Mon, Sep 8, 2014 at 8:34 AM, Tomeu Vizoso
>>>>>>>>>> <tomeu@xxxxxxxxxxxxxxx>
>>>>>>>>>> wrote:
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>> On 2 September 2014 23:34, Andrew Bresticker
>>>>>>>>>>> <abrestic@xxxxxxxxxxxx> wrote:
>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>> Tested on Venice2, Jetson TK1, and Big with a variety of USB2.0
>>>>>>>>>>>> and
>>>>>>>>>>>> USB3.0 memory sticks and ethernet dongles using controller
>>>>>>>>>>>> firmware
>>>>>>>>>>>> recently posted by Andrew Chew [2].
>>>
>>>
>>> ...
>>>>>>
>>>>>>
>>>>>> Stephen, Thierry, have either of you had a chance to test this series?
>>>>>
>>>>>
>>>>>
>>>>> I haven't had a chance to yet. I just went to try it out, and found
>>>>> that it
>>>>> depends on a whole slew of other patches that I don't have. Is there a
>>>>> git
>>>>> branch somewhere to save me having to track down all the dependencies?
>>>>
>>>>
>>>> Yes, Tomeu has the branch he used for testing here:
>>>> http://cgit.collabora.com/git/user/tomeu/linux.git/log/?h=3.17rc4-xhci
>>>
>>>
>>> Hmm. That git server was quite reluctant to cough up its bits, but it did
>>> eventually.
>>>
>>>> You'll also need the firmware Andrew Chew posted:
>>>> https://patchwork.ozlabs.org/patch/384013/
>>>
>>>
>>> The XHCI driver can't load its firmware unless it's a module; if I make
>>> it
>>> built-in, it fails immediately with error -2 during "Direct firmware
>>> loading". The driver needs to work with either immediate or deferred
>>> firmware loading.
>>
>>
>> If you want the driver to be built-in, you'll either need to build the
>> firmware in as well (i.e. EXTRA_FIRMWARE) or enable
>> FW_LOADER_USER_HELPER_FALLBACK to load with userspace/uevent (though
>> apparently this is deprecated).
>
>
> Hmm. I didn't have to do that for the Atmel touchpad driver to work, but
> perhaps it's just ignoring a firmware loading error, and continuing with
> whatever is in the device's flash already.
>
> It seems odd that such a fundamental feature would require a deprecated
> Kconfig option. Is there some replacement that does the same thing that
> isn't deprecated? The Kconfig help for the option doesn't say anything
> useful...
>
> Oh, this option doesn't actually seem to work. I see the following in dmesg:
>
>> [root@swarren-dt ~]# dmesg|grep -i -e xhci -e firmware
>> [ 1.461773] xhci-tegra 70090000.usb: Failed to get supply 'avddio-pex':
>> -517
>> [ 1.468930] platform 70090000.usb: Driver xhci-tegra requests probe
>> deferral
>> [ 2.567966] xhci-tegra 70090000.usb: Direct firmware load for
>> nvidia/tegra124/xusb.bin failed with error -2
>> [ 2.577786] xhci-tegra 70090000.usb: Falling back to user helper
>
>
> ... but:
>
> [root@swarren-dt ~]# lsusb
> unable to initialize libusb: -99
>
> Perhaps systemd-udevd doesn't implement firmware loading; is it user-space
> udev that's deprecated implementing user-space firmware loading, rather than
> the kernel deprecating support for calling out to user space?

I believe it is userspace udev that has deprecated user firmware
loading. The kernel still does call out to userspace. Alternatively,
you could use the firmware_class loading interface described in
Documentation/firmware_class/README, but that kind of sucks too.

> This sucks, because now I can't just TFTP boot kernels but somehow have to
> get updated kernel modules onto my device every time before testing a new
> kernel build.

Yeah... it does. I get around this by building the firmware into the
kernel image (i.e. CONFIG_EXTRA_FIRMWARE), which is also your only
option if the root device happens to be on USB. Unfortunately, I'm
not aware of any other alternatives.
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/