Re: [PATCH v2] usb: host: xhci-plat: Assign shared_hcd->rsrc_start

From: Mathias Nyman
Date: Thu Jan 09 2025 - 05:04:17 EST


On 4.1.2025 17.51, WangYuli wrote:
When inserting a USB device, examining hcd->rsrc_start can be
helpful in identifying which hcd is mounted, as the physical
address represented here is typically unique.

The following code snippet demonstrates this:
struct usb_hcd *hcd = bus_to_hcd(udev->bus);
unsigned long long usb_hcd_addr = (unsigned long long)hcd->rsrc_start;

However, this approach has limitations now. For USB hosts with an
MMIO interface, the effectiveness of this method is restricted to
USB 2.0.

Becase commit 3429e91a661e ("usb: host: xhci: add platform driver
support") assigned res->start to hcd->rsrc_start. But
shared_hcd->rsrc_start remains unassigned, which is also necessary
in certain scenarios.

Could you expand on those scenarios?

Is it possible those could be solved with something like:

unsigned long long usb_hcd_addr;
struct usb_hcd *hcd = bus_to_hcd(udev->bus);

if (!usb_hcd_is_primary_hcd(hcd))
hcd = hcd->primary_hcd;
usb_hcd_addr = (unsigned long long)hcd->rsrc_start;

That should work for all hcds.

Thanks
Mathias