mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
From: Bjorn Helgaas <helgaas@kernel.org>
To: linux-pci@vger.kernel.org
Cc: "Manivannan Sadhasivam" <manivannan.sadhasivam@linaro.org>,
	"Cyril Brulebois" <kibi@debian.org>,
	"Nicolas Saenz Julienne" <nsaenz@kernel.org>,
	"Lorenzo Pieralisi" <lorenzo.pieralisi@arm.com>,
	"Krzysztof Wilczyński" <kwilczynski@kernel.org>,
	"Bartosz Golaszewski" <brgl@bgdev.pl>,
	"Jim Quinlan" <james.quinlan@broadcom.com>,
	bcm-kernel-feedback-list@broadcom.com,
	linux-kernel@vger.kernel.org,
	"Bjorn Helgaas" <bhelgaas@google.com>
Subject: [PATCH] PCI/pwrctrl: Skip creating platform device unless CONFIG_PCI_PWRCTL enabled
Date: Fri, 23 May 2025 15:17:59 -0500	[thread overview]
Message-ID: <20250523201935.1586198-1-helgaas@kernel.org> (raw)

From: Bjorn Helgaas <bhelgaas@google.com>

If devicetree describes power supplies related to a PCI device,
pci_pwrctrl_create_device() previously created a pwrctrl platform device
even if CONFIG_PCI_PWRCTL was not enabled.

When pci_pwrctrl_create_device() creates a pwrctrl device and returns it,
pci_scan_device() doesn't enumerating the PCI device on the assumption that
the pwrctrl core will rescan the bus after turning on the power.  If
CONFIG_PCI_PWRCTL is not enabled, the rescan never happens.

This breaks PCI enumeration on any system that describes power supplies in
devicetree but does not use pwrctrl.  Jim reported that some brcmstb
platforms break this way.

If CONFIG_PCI_PWRCTL is not enabled, skip creating the pwrctrl platform
device and scan the device normally.

Fixes: 957f40d039a9 ("PCI/pwrctrl: Move creation of pwrctrl devices to pci_scan_device()")
Reported-by: Jim Quinlan <james.quinlan@broadcom.com>
Closes: https://lore.kernel.org/r/CA+-6iNwgaByXEYD3j=-+H_PKAxXRU78svPMRHDKKci8AGXAUPg@mail.gmail.com
Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
---
This an alternate to
https://lore.kernel.org/r/20250522140326.93869-1-manivannan.sadhasivam@linaro.org

It should accomplish the same thing but I think using #ifdef makes it a
little more visible and easier to see that pci_pwrctrl_create_device() is
only relevant when CONFIG_PCI_PWRCTL is enabled.

 drivers/pci/probe.c | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/drivers/pci/probe.c b/drivers/pci/probe.c
index 364fa2a514f8..855da472b608 100644
--- a/drivers/pci/probe.c
+++ b/drivers/pci/probe.c
@@ -2510,6 +2510,7 @@ EXPORT_SYMBOL(pci_bus_read_dev_vendor_id);
 
 static struct platform_device *pci_pwrctrl_create_device(struct pci_bus *bus, int devfn)
 {
+#if defined(CONFIG_PCI_PWRCTL) || defined(CONFIG_PCI_PWRCTL_MODULE)
 	struct pci_host_bridge *host = pci_find_host_bridge(bus);
 	struct platform_device *pdev;
 	struct device_node *np;
@@ -2536,6 +2537,9 @@ static struct platform_device *pci_pwrctrl_create_device(struct pci_bus *bus, in
 	}
 
 	return pdev;
+#else
+	return NULL;
+#endif
 }
 
 /*
-- 
2.43.0


             reply	other threads:[~2025-05-23 20:19 UTC|newest]

Thread overview: 10+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-05-23 20:17 Bjorn Helgaas [this message]
2025-05-23 21:26 ` Lukas Wunner
2025-05-24  2:42   ` Bjorn Helgaas
2025-05-24  6:29     ` Lukas Wunner
2025-05-24  8:51       ` Manivannan Sadhasivam
2025-05-27 22:25         ` Bjorn Helgaas
2025-05-29 19:23           ` Jim Quinlan
2025-05-30  3:16             ` Manivannan Sadhasivam
2025-05-30  3:13           ` Manivannan Sadhasivam
2025-06-20  0:06           ` Florian Fainelli

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20250523201935.1586198-1-helgaas@kernel.org \
    --to=helgaas@kernel.org \
    --cc=bcm-kernel-feedback-list@broadcom.com \
    --cc=bhelgaas@google.com \
    --cc=brgl@bgdev.pl \
    --cc=james.quinlan@broadcom.com \
    --cc=kibi@debian.org \
    --cc=kwilczynski@kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-pci@vger.kernel.org \
    --cc=lorenzo.pieralisi@arm.com \
    --cc=manivannan.sadhasivam@linaro.org \
    --cc=nsaenz@kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox

all inboxes | Powered by JetHome®