[U-Boot] [PATCH v3 2/6] usb: xhci: return ERR_PTR(-ETIMEDOUT) at the end of xhci_wait_for_event()

Masahiro Yamada yamada.masahiro at socionext.com
Sun Jan 28 14:30:50 UTC 2018


Hi Marek,

2018-01-28 21:43 GMT+09:00 Marek Vasut <marex at denx.de>:
> On 01/28/2018 11:18 AM, Masahiro Yamada wrote:
>> Bin, Marek,
>
> Hi,
>
>> Would you take a look at xHCI code?
>
> I was kinda hoping Bin would, oh well ...
>
>> Lots of xHCI code invokes BUG_ON()/BUG()
>> when the hardware access fails,
>> then halts the system completely.
>> This is not a software bug.
>>
>>
>> 2018-01-10 10:45 GMT+09:00 Masahiro Yamada <yamada.masahiro at socionext.com>:
>>> xhci_wait_for_event() is supposed to return a pointer to union xhci_trb,
>>> but it does not return anything at the end of the function.
>>>
>>> This relies on that the end of the function is unreachable due to BUG().
>>>
>>> We are planning to make BUG() no-op for platforms with strong image size
>>> constraint.
>
> But BUG() should hang the system because it means an unrecoverable issue
> happened. Changing it to nop would cause a lot of weird misbehavior, so
> that is IMO a bad idea. Just change it to hang(), that should be present
> even on size-constrained systems.


In my opinion, BUG_ON(!x) and assert(x) are equivalent.

Both check software bugs that should never happen
(but useful for debugging).


When releasing software, we can turn them into no-op.

Actually, assert() works like that in user-space programs.
(assert() is no-op if NDEBUG is defined)



>>> Doing so would cause compiler warning:
>>>
>>> drivers/usb/host/xhci-ring.c:475:1: warning: control reaches end of non-void function [-Wreturn-type]
>>>  }
>>>  ^
>>>
>>> So, this function must return something.  From the error message just
>>> above, ERR_PTR(-ETIMEDOUT) seems a good choice.
>
> This is an imported code from Linux, so you might want to check what
> they do/did there.
>


I grepped xhci_wait_for_event in the kernel source,
but did not get any hit.




-- 
Best Regards
Masahiro Yamada


More information about the U-Boot mailing list