Re: [PATCH] usb: pci-quirks: abort xHCI handoff if MMIO is inaccessible

From: Lukas Wunner

Date: Sun Sep 13 2026 - 08:56:54 EST


On Mon, Sep 07, 2026 at 12:26:14AM +0800, Haowen Bai wrote:
> +++ b/drivers/usb/host/pci-quirks.c
> @@ -1026,15 +1026,22 @@ static void quirk_usb_disable_ehci(struct pci_dev *pdev)
> * Returns 0 when the mask bits have the value done.
> * Returns -ETIMEDOUT if this condition is not true after
> * wait_usec microseconds have passed.
> + * Returns -ENODEV if the register reads as all-ones (hardware removed).
> */
> static int handshake(void __iomem *ptr, u32 mask, u32 done,
> int wait_usec, int delay_usec)
> {
> u32 result;
> + int ret;
>
> - return readl_poll_timeout_atomic(ptr, result,
> - ((result & mask) == done),
> - delay_usec, wait_usec);
> + ret = readl_poll_timeout_atomic(ptr, result,
> + (result & mask) == done ||
> + result == U32_MAX,
> + delay_usec, wait_usec);
> + if (result == U32_MAX)
> + return -ENODEV;
> +
> + return ret;

Nit: Checking for PCI_POSSIBLE_ERROR(result) might be slightly clearer
than U32_MAX.

Thanks,

Lukas