On 9/17/2023 16:40, Bjorn Helgaas wrote:
The "pcie_find_root_port(child) != pdev" check is always false:
If we were using pci_walk_bus() and only looking at devices below
pdev, I would agree, but since we're using pci_get_class(), which
searches all PCI devices in the system, I'm confused about why it
would always be false.
I don't really see the point of checking for USB4, because the commit
log doesn't say anything about why this would be specific to USB4.
I know Mario has mentioned something about how "internal interrupt
routing works with the USB4 controller connected to this root port,"
but I don't understand what that means.
Is the USB4 controller integrated into the Root Port? Or is this
interrupt routed via some non-PCIe mechanism? If the USB4 controller
is connected via standard PCIe, I don't see why the issue sould be
specific to USB4.
It's the latter. When the PMC has the SoC in hardware sleep the
interrupt routing works differently.
That's where this bug stems from.
I could believe that BIOS configures the Root Port differently based
on whether the downstream device is USB4, but I haven't heard anything
about that.
Bjorn
Nothing along these lines.