On Wed, Feb 28, 2018 at 10:45:55AM -0800, Feng Kan wrote: > When bridge and its endpoint is enumated the devices are added to the > dpm list. Afterward, the bridge defers probe when IOMMU is not ready. > This causes the bridge to be moved to the end of the dpm list when deferred > probe kicks in. The order of the dpm list for bridge and endpoint is > reversed. > > Add reordering code to re-position the bridge and its children so the order > for suspend and resume is not altered. > > Signed-off-by: Feng Kan <fkan@xxxxxxx> > Signed-off-by: Toan Le <toanle@xxxxxxx> > diff --git a/include/linux/device.h b/include/linux/device.h > index 9d32000..1ec12d5 100644 > --- a/include/linux/device.h > +++ b/include/linux/device.h > @@ -1272,6 +1272,9 @@ extern void devm_device_remove_group(struct device *dev, > /* debugging and troubleshooting/diagnostic helpers. */ > extern const char *dev_driver_string(const struct device *dev); > > +/* reorder device and its children to end of dpm list */ > +void device_pm_reorder(struct device *dev); Do you expect drivers to use this, or only the driver core in drivers/base/? There is a drivers/base/base.h; maybe this would fit there rather than being exposed to the rest of the kernel via include/linux/device.h? > /* Device links interface. */ > struct device_link *device_link_add(struct device *consumer, > struct device *supplier, u32 flags); > -- > 1.8.3.1 > > > _______________________________________________ > linux-arm-kernel mailing list > linux-arm-kernel@xxxxxxxxxxxxxxxxxxx > http://lists.infradead.org/mailman/listinfo/linux-arm-kernel