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/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.)
> 
> Just repeating it here to have it near the actual patch.

Link to that previous discussion: 
http://lists.infradead.org/pipermail/linux-arm-kernel/2019-January/626859.html

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.

The device_link_add function already returns NULL if the consumer or 
supplier is NULL but that's also the only way it signals failure. Maybe 
that function should be adjusted to return ERR_PTR instead?

Changing core API for a driver bug seems inappropriate.

The current imx6_pcie_attach_pd code is complicated because it tries to 
distinguish between "multi pd" and "no pd / single pd". I wish there was 
a way for these PM_RUNTIME device_links to be setup automatically in 
core and have multi-PD behave the same as a single PD.

There aren't many multi-PD users but commit 6494a9ad86de ("usb: xhci: 
tegra: Add genpd support") seems to do pretty much the same thing.

--
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