Re: [PATCH 1/2] PCI: imx: Fix probe failure without power domain

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

 



On 1/22/19 11:44 AM, Uwe Kleine-König wrote:
> On Tue, Jan 22, 2019 at 09:17:22AM +0000, Leonard Crestez wrote:
>> On 1/22/2019 9:12 AM, Uwe Kleine-König wrote:
>>> On Mon, Jan 21, 2019 at 10:50:04PM +0000, Leonard Crestez wrote:
>>>> On chips without a separate power domain for PCI (such as 6q/6qp) the
>>>> imx6_pcie_attach_pd function incorrectly returns an error.
>>>>
>>>> Fix by returning 0 if dev_pm_domain_attach_by_name doesn't find
>>>> anything.
>>>>
>>>> Fixes: 3f7cceeab895 ("PCI: imx: Add multi-pd support")
>>>>
>>>> diff --git a/drivers/pci/controller/dwc/pci-imx6.c b/drivers/pci/controller/dwc/pci-imx6.c
>>>> @@ -308,10 +308,13 @@ 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);
>>>> +	/* Do nothing when power domain missing */
>>>> +	if (!imx6_pcie->pd_pcie)
>>>> +		return 0;
>>>
>>> As I said in the mail that proposed this patch for testing: I think it
>>> would be better to change dev_pm_domain_attach_by_name to not return an
>>> error indication by returning NULL or an ERR_PTR value. (Or change
>>> device_link_add to accept NULL if NULL is a dummy value.)
>>
>> I'm not sure what you mean. Should dev_pm_domain_attach_by_name return
>> ERR_PTR(-ENOENT) for name not found? It would still require special
>> handling for callers.
> 
> Yes, callers would still need to handle an error, but they only need to
> check for IS_ERR(retval) instead of IS_ERR(retval) && retval != NULL.

But "not found" is not treated as an error here, it's what happens when 
no PD is assigned. The fix makes imx6_pcie_attach_pd return success in 
this case.

Making dev_pm_domain_attach_by_name return ENOENT would still require a 
special case for ENOENT here.

--
Regards,
Leonard




[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