X-Git-Url: http://demsky.eecs.uci.edu/git/?a=blobdiff_plain;f=drivers%2Fpci%2Fpci.c;h=e311a9bf2c90d602e3ced4725b22562c733660cf;hb=11d2c48e817d331a87efc4d45bdf510351198628;hp=314db8c1047a30228f68072f820d7f40babc2ad0;hpb=12b76f3bf336388916ddf8047156f9e9993ff4e9;p=firefly-linux-kernel-4.4.55.git diff --git a/drivers/pci/pci.c b/drivers/pci/pci.c index 314db8c1047a..e311a9bf2c90 100644 --- a/drivers/pci/pci.c +++ b/drivers/pci/pci.c @@ -2043,6 +2043,10 @@ bool pci_dev_run_wake(struct pci_dev *dev) if (!dev->pme_support) return false; + /* PME-capable in principle, but not from the intended sleep state */ + if (!pci_pme_capable(dev, pci_target_state(dev))) + return false; + while (bus->parent) { struct pci_dev *bridge = bus->self; @@ -4772,8 +4776,10 @@ int pci_get_new_domain_nr(void) void pci_bus_assign_domain_nr(struct pci_bus *bus, struct device *parent) { static int use_dt_domains = -1; - int domain = of_get_pci_domain_nr(parent->of_node); + int domain = -1; + if (parent) + domain = of_get_pci_domain_nr(parent->of_node); /* * Check DT domain and use_dt_domains values. *