Hi Mika, On Fri, Apr 08, 2016 at 01:36:28PM +0100, Mika Westerberg wrote: > --- a/drivers/pci/pci-driver.c > +++ b/drivers/pci/pci-driver.c > @@ -744,6 +744,19 @@ static int pci_pm_suspend(struct device *dev) > return 0; > } > > +/* > + * Check if given device can go to low power state. Currently we allow > + * normal PCI devices and PCI bridges if their bridge_d3 is set. > + */ > +static bool pci_can_suspend(struct pci_dev *pdev) > +{ > + if (!pci_has_subordinate(pdev)) > + return true; > + else if (pdev->bridge_d3) > + return true; > + return false; > +} > + > static int pci_pm_suspend_noirq(struct device *dev) > { > struct pci_dev *pci_dev = to_pci_dev(dev); > @@ -777,7 +790,7 @@ static int pci_pm_suspend_noirq(struct device *dev) > > if (!pci_dev->state_saved) { > pci_save_state(pci_dev); > - if (!pci_has_subordinate(pci_dev)) > + if (pci_can_suspend(pci_dev)) > pci_prepare_to_sleep(pci_dev); > } pci_can_suspend() is only used by this single function. It may be worth to consider folding it into pci_pm_suspend_noirq(), i.e. simply if (!pci_has_subordinate(pci_dev) || pdev->bridge_d3) together with the "Currently we allow..." comment above. Best regards, 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