[PATCH] PCI/pwrctrl: Create device link only if both platform device and supplies are present

Manivannan Sadhasivam posted 1 patch 1 week, 6 days ago
drivers/pci/bus.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
[PATCH] PCI/pwrctrl: Create device link only if both platform device and supplies are present
Posted by Manivannan Sadhasivam 1 week, 6 days ago
Checking only for platform device for the PCI devices and creating the
devlink causes regression on SPARCv9 systems as they seem to have platform
device populated elsewhere.

So add a check for supplies in DT to make sure that the devlink is only
created for devices that require pwrctrl support.

Reported-by: Jonathan Currier <dullfire@yahoo.com>
Closes: https://bugzilla.kernel.org/show_bug.cgi?id=219513
Fixes: 03cfe0e05650 ("PCI/pwrctl: Ensure that the pwrctl drivers are probed before the PCI client drivers")
Signed-off-by: Manivannan Sadhasivam <manivannan.sadhasivam@linaro.org>
---
 drivers/pci/bus.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/pci/bus.c b/drivers/pci/bus.c
index 7a061cc860d5..e70f4c089cd4 100644
--- a/drivers/pci/bus.c
+++ b/drivers/pci/bus.c
@@ -394,7 +394,7 @@ void pci_bus_add_device(struct pci_dev *dev)
 	 * PCI client drivers.
 	 */
 	pdev = of_find_device_by_node(dn);
-	if (pdev) {
+	if (pdev && of_pci_is_supply_present(dn)) {
 		if (!device_link_add(&dev->dev, &pdev->dev,
 				     DL_FLAG_AUTOREMOVE_CONSUMER))
 			pci_err(dev, "failed to add device link between %s and %s\n",
-- 
2.25.1
Re: [PATCH] PCI/pwrctrl: Create device link only if both platform device and supplies are present
Posted by Bjorn Helgaas 1 week, 5 days ago
On Wed, Nov 20, 2024 at 11:54:59AM +0530, Manivannan Sadhasivam wrote:
> Checking only for platform device for the PCI devices and creating the
> devlink causes regression on SPARCv9 systems as they seem to have platform
> device populated elsewhere.
> 
> So add a check for supplies in DT to make sure that the devlink is only
> created for devices that require pwrctrl support.
> 
> Reported-by: Jonathan Currier <dullfire@yahoo.com>
> Closes: https://bugzilla.kernel.org/show_bug.cgi?id=219513
> Fixes: 03cfe0e05650 ("PCI/pwrctl: Ensure that the pwrctl drivers are probed before the PCI client drivers")
> Signed-off-by: Manivannan Sadhasivam <manivannan.sadhasivam@linaro.org>

Thanks, squashed into 03cfe0e05650 for v6.13:

https://git.kernel.org/cgit/linux/kernel/git/pci/pci.git/commit/?id=cc70852b0962

> ---
>  drivers/pci/bus.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/drivers/pci/bus.c b/drivers/pci/bus.c
> index 7a061cc860d5..e70f4c089cd4 100644
> --- a/drivers/pci/bus.c
> +++ b/drivers/pci/bus.c
> @@ -394,7 +394,7 @@ void pci_bus_add_device(struct pci_dev *dev)
>  	 * PCI client drivers.
>  	 */
>  	pdev = of_find_device_by_node(dn);
> -	if (pdev) {
> +	if (pdev && of_pci_is_supply_present(dn)) {
>  		if (!device_link_add(&dev->dev, &pdev->dev,
>  				     DL_FLAG_AUTOREMOVE_CONSUMER))
>  			pci_err(dev, "failed to add device link between %s and %s\n",
> -- 
> 2.25.1
>