[U-Boot] [PATCH v3] cmd: usb: add blk devices to ignore list in tree graph

Bin Meng bmeng.cn at gmail.com
Wed Sep 20 03:32:27 UTC 2017


Hi Suneel,

On Wed, Sep 20, 2017 at 2:31 AM, Suneel Garapati <suneelglinux at gmail.com> wrote:
> Hi Bin,
>
> On Tue, Sep 19, 2017 at 12:32 AM, Bin Meng <bmeng.cn at gmail.com> wrote:
>> Hi Suneel,
>>
>> On Tue, Sep 19, 2017 at 1:55 PM, Suneel Garapati <suneelglinux at gmail.com> wrote:
>>> add blk child devices to ignore list while displaying
>>> usb tree graph, otherwise usb tree and info commands
>>> may cause crash treating blk as usb device.
>>>
>>> Signed-off-by: Suneel Garapati <suneelglinux at gmail.com>
>>> ---
>>>
>>> Changes v3:
>>>  - remove 'check on parent uclass' in description
>>
>> thanks for making the changes.
>>
>>> Changes v2:
>>>  - remove check on parent uclass
>>> Changes v1:
>>>  - add separate check on blk uclass
>>>  - modify description
>>>  - add separate check on parent uclass as usb
>>>
>>>  cmd/usb.c | 11 ++++++++---
>>>  1 file changed, 8 insertions(+), 3 deletions(-)
>>>
>>> diff --git a/cmd/usb.c b/cmd/usb.c
>>> index d95bcf5..3889994 100644
>>> --- a/cmd/usb.c
>>> +++ b/cmd/usb.c
>>> @@ -414,8 +414,12 @@ static void usb_show_tree_graph(struct usb_device *dev, char *pre)
>>>
>>>                 udev = dev_get_parent_priv(child);
>>>
>>> -               /* Ignore emulators, we only want real devices */
>>> -               if (device_get_uclass_id(child) != UCLASS_USB_EMUL) {
>>> +               /*
>>> +                * Ignore emulators and block child devices, we only want
>>> +                * real devices
>>> +                */
>>> +               if ((device_get_uclass_id(child) != UCLASS_USB_EMUL) &&
>>> +                   (device_get_uclass_id(child) != UCLASS_BLK)) {
>>>                         usb_show_tree_graph(udev, pre);
>>>                         pre[index] = 0;
>>>                 }
>>> @@ -605,7 +609,8 @@ static void usb_show_info(struct usb_device *udev)
>>>         for (device_find_first_child(udev->dev, &child);
>>>              child;
>>>              device_find_next_child(&child)) {
>>> -               if (device_active(child)) {
>>> +               if (device_active(child) &&
>>> +                   (device_get_uclass_id(child) != UCLASS_BLK)) {
>>>                         udev = dev_get_parent_priv(child);
>>>                         usb_show_info(udev);
>>>                 }
>>> --
>>
>> My testing of 'usb info' looks OK, however 'usb tree' still has some
>> issues below:
>>
>> => usb tree
>> USB device tree:
>>   1  Hub (5 Gb/s, 0mA)
>>   |  U-Boot XHCI Host Controller
>>   |
>>   +-2  Hub (5 Gb/s, 0mA)
>>   | |  GenesysLogic USB3.0 Hub
>>   | |
>>   | +-5  Vendor specific (5 Gb/s, 36mA)
>>   |      Realtek USB 10/100/1000 LAN 00E04C680977
>>   |
> Leaving block devices, why the extra print here for lan port?

There is nothing wrong here. Every device has a separation line.

>
>>   +-3  Hub (480 Mb/s, 100mA)
>>   | |  GenesysLogic USB2.0 Hub
>>   | |
> And here?
>

Again, nothing wrong here.

>>   | +-6  Mass Storage (480 Mb/s, 98mA)
>>   | | |  USBest Technology USB Mass Storage Device 101111c452b7c0
>>   | | |
>>
>> As you see, we just don't print out the BLK device, but we still print
>> out the | here.
> I believe if the extra print for other devices is correct, then this
> tree is fine.

It's not correct. The tree graphic does not look correct now.

> Also, I believe this is not related to the fix this patch aims at.
> Let me know if otherwise.

No, you should not fix one thing but introduce another thing.

>
> Regards,
> Suneel
>>
>>   | +-7  Human Interface (1.5 Mb/s, 70mA)
>>   |      Dell Dell USB Keyboard
>>   |
>>   +-4  Mass Storage (480 Mb/s, 300mA)
>>     |  JetFlash Mass Storage Device 16Q6ZPH20GF3E8UQ
>>     |
>>
>> And here.

Regards,
Bin


More information about the U-Boot mailing list