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

Marek Vasut marex at denx.de
Sun Jan 28 14:39:16 UTC 2018


On 01/28/2018 03:30 PM, Masahiro Yamada wrote:
> 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)

Except in kernel, BUG() means something really bad happened and is not
optimized away, ever.

-- 
Best regards,
Marek Vasut


More information about the U-Boot mailing list