On 06/03/2017 13:42, Mason wrote: > So the kernel panics in xhci_find_next_ext_cap() > ( drivers/usb/host/xhci-ext-caps.h:122 ) > http://lxr.free-electrons.com/source/drivers/usb/host/xhci-ext-caps.h?v=4.9#L122 > > Any idea how this can happen? > > base = ioremap_nocache(pci_resource_start(pdev, 0), len); > > Could I be passing garbage to ioremap_nocache? Oh... I have just now understood what Ard wrote a few days ago. The issue was that, on this platform, the PCI configuration space and memory space are multiplexed; in other words they reside at the same physical address, with a bit in MMIO to choose one or the other. I was specifying an arbitrary address for the memory space, which doesn't make any sense, as Ard pointed out. So quirk_usb_handoff_xhci would ioremap(0x91000000, 8192) which is the size of the USB device's memory region, but 0x91000000 is an address in system RAM. Thus, the readl was actually picking up random garbage in RAM, which makes xhci_find_next_ext_cap blow up pretty fast. [ 1.265224] xhci_find_next_ext_cap: offset=0xec44 I'm off to fix my blunder. Regards. -- To unsubscribe from this list: send the line "unsubscribe linux-usb" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html