Am Dienstag, dem 13.09.2022 um 14:59 +0800 schrieb Tang Bin: > In the function imx6_pcie_attach_pd(), > dev_pm_domain_attach_by_name() may return NULL in some cases, > so IS_ERR() doesn't meet the requirements. Thus fix it. > I don't like this added complexity in the driver. IHMO if there is a real issue, dev_pm_domain_attach_by_name() should just return a error code, instead of NULL. The fact that you need to pull a error code out of thin air in the driver is a big hint that this should be fixed in the called function, not in the return handling in the driver. A bit down the callstack genpd_dev_pm_attach_by_id() is called, which is documented like this "Returns the created virtual device if successfully attached PM domain, NULL when the device don't need a PM domain [...]". NULL is a valid return code, where the driver should _not_ stop probing, as the device should work without the power domain attached. Regards, Lucas > Fixes: 3f7cceeab895 ("PCI: imx: Add multi-pd support") > Signed-off-by: Tang Bin <tangbin@xxxxxxxxxxxxxxxxxxxx> > --- > drivers/pci/controller/dwc/pci-imx6.c | 8 ++++---- > 1 file changed, 4 insertions(+), 4 deletions(-) > > diff --git a/drivers/pci/controller/dwc/pci-imx6.c b/drivers/pci/controller/dwc/pci-imx6.c > index 6619e3caf..65d6ebbba 100644 > --- a/drivers/pci/controller/dwc/pci-imx6.c > +++ b/drivers/pci/controller/dwc/pci-imx6.c > @@ -337,8 +337,8 @@ static int imx6_pcie_attach_pd(struct device *dev) > return 0; > > imx6_pcie->pd_pcie = dev_pm_domain_attach_by_name(dev, "pcie"); > - if (IS_ERR(imx6_pcie->pd_pcie)) > - return PTR_ERR(imx6_pcie->pd_pcie); > + if (IS_ERR_OR_NULL(imx6_pcie->pd_pcie)) > + return PTR_ERR(imx6_pcie->pd_pcie) ? : -ENODATA; > /* Do nothing when power domain missing */ > if (!imx6_pcie->pd_pcie) > return 0; > @@ -352,8 +352,8 @@ static int imx6_pcie_attach_pd(struct device *dev) > } > > imx6_pcie->pd_pcie_phy = dev_pm_domain_attach_by_name(dev, "pcie_phy"); > - if (IS_ERR(imx6_pcie->pd_pcie_phy)) > - return PTR_ERR(imx6_pcie->pd_pcie_phy); > + if (IS_ERR_OR_NULL(imx6_pcie->pd_pcie_phy)) > + return PTR_ERR(imx6_pcie->pd_pcie_phy) ? : -ENODATA; > > link = device_link_add(dev, imx6_pcie->pd_pcie_phy, > DL_FLAG_STATELESS |