Re: [PATCH] usb: xhci: xhci_setup_port_arrays: early -ENODEV if maxports is 0.

Mathias Nyman
2024-10-10T12:48:28Z

On 4.10.2024 22.14, Olivier Dautricourt wrote:
> Hello,
>
> On Fri, Oct 04, 2024 at 12:57:16PM +0200, Michał Pecio wrote:
>> Hi,
>>
>>> If the controller reports HCSPARAMS1.maxports==0 then we can skip the
>>> whole function: it would fail later after doing a bunch of unnecessary
>>> stuff. It can occur on a buggy hardware (the value is driven by external
>>> signals).
>>
>> This function runs once during HC initialization, so what's the benefit
>> of bypassing it? Does it take unusually long time? Does it panic?
>>
>> It seems to alreday be written to handle such abnormal cases gracefully.
>
> That is correct, the case is handled without panic, but the 0 value gets
> silently propagated until it eventually fails on line 2220:
> if (xhci->usb2_rhub.num_ports == 0 && xhci->usb3_rhub.num_ports == 0) {
> xhci_warn(xhci, "No ports on the roothubs?\n");
> return -ENODEV;
> }
> The benefits are only:
> - Reporting a more precise issue
> - Avoids iterating through the capability structures of the controller
> - failsafe if future changes
>
> This is totally a nitpick as the case is unusual, if you think it is not
> worth taking it upstream i'll understand.
>

I think we'll skip this. An abnormal case like this where the host would be
useless anyway is already handled reasonably enough by driver.

Thanks
Mathias