Re: [PATCH] PCI: Fix bridge_d3 update on device removal

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Tue, Sep 13, 2016 at 04:02:31PM -0500, Bjorn Helgaas wrote:
> On Tue, Sep 06, 2016 at 06:20:46AM +0200, Lukas Wunner wrote:
> > Starting with v4.8, we allow a PCIe port to runtime suspend to D3hot if
> > the port itself and its children satisfy a number of conditions.  Once a
> > child is removed, we recheck those conditions in case the removed device
> > was blocking the port from suspending.
> > 
> > The rechecking needs to happen *after* the device has been removed from
> > the bus it resides on.  Otherwise when walking the port's subordinate
> > bus in pci_bridge_d3_update(), the device being removed would
> > erroneously still be taken into account.
> > 
> > However the device is removed from the bus_list in pci_destroy_dev() and
> > we currently recheck *before* that.  Fix it.
> > 
> > Fixes: 9d26d3a8f1b0 ("PCI: Put PCIe ports into D3 during suspend")
> > Cc: Mika Westerberg <mika.westerberg@xxxxxxxxxxxxxxx>
> > Cc: Rafael J. Wysocki <rafael.j.wysocki@xxxxxxxxx>
> > Signed-off-by: Lukas Wunner <lukas@xxxxxxxxx>
> 
> 9d26d3a8f1b0 appeared in v4.8-rc1, so I assume this fix should be merged
> before v4.8, right?

Yes, it's a bug in the new runtime PM code for PCIe ports,
albeit a relatively harmless one:  I think the worst that
can happen is that a port which should suspend doesn't.

But it's still a bug, so if this could still go into 4.8
it would be ideal.

> I applied it to for-linus with Mika's reviewed-by and Rafael's acked-by on
> that assumption.

Perfect, thanks!

Lukas
--
To unsubscribe from this list: send the line "unsubscribe linux-pci" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html



[Index of Archives]     [DMA Engine]     [Linux Coverity]     [Linux USB]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [Greybus]

  Powered by Linux