• Mika Westerberg's avatar
    thunderbolt: Runtime PM activate both ends of the device link · f3380cac
    Mika Westerberg authored
    If protocol tunnels are already up when the driver is loaded, for
    instance if the boot firmware implements connection manager of its own,
    runtime PM reference count of the consumer devices behind the tunnel
    might have been increased already before the device link is created but
    the supplier device runtime PM reference count is not. This leads to a
    situation where the supplier (the Thunderbolt driver) can runtime
    suspend even if it should not because the corresponding protocol tunnel
    needs to be up causing the devices to be removed from the corresponding
    native bus.
    
    Prevent this from happening by making both sides of the link runtime PM
    active briefly. The pm_runtime_put() for the consumer (PCIe
    root/downstream port, xHCI) then allows it to runtime suspend again but
    keeps the supplier runtime resumed the whole time it is runtime active.
    Signed-off-by: default avatarMika Westerberg <mika.westerberg@linux.intel.com>
    Reviewed-by: default avatarRafael J. Wysocki <rafael.j.wysocki@intel.com>
    f3380cac
acpi.c 10.4 KB