From: Krishna Chaitanya Chundru <krishna.chundru@oss.qualcomm.com>
To: manivannan.sadhasivam@oss.qualcomm.com,
Bartosz Golaszewski <brgl@kernel.org>,
Manivannan Sadhasivam <mani@kernel.org>,
Bjorn Helgaas <bhelgaas@google.com>
Cc: linux-pci@vger.kernel.org, linux-kernel@vger.kernel.org,
Bartosz Golaszewski <bartosz.golaszewski@oss.qualcomm.com>,
Raj Kumar Bhagat <raj.bhagat@oss.qualcomm.com>
Subject: Re: [PATCH 1/2] PCI/pwrctrl: Ensure that the remote endpoint node parent has the supply requirement
Date: Tue, 17 Feb 2026 16:47:31 +0530 [thread overview]
Message-ID: <a9b5bbbc-a16c-451f-bfc3-806300f8b544@oss.qualcomm.com> (raw)
In-Reply-To: <20260217-pwrctrl-fixes-7-0-v1-1-b5671e58934f@oss.qualcomm.com>
On 2/17/2026 3:48 PM, Manivannan Sadhasivam via B4 Relay wrote:
> From: Manivannan Sadhasivam <manivannan.sadhasivam@oss.qualcomm.com>
>
> If OF graph is used in the PCI device node, pwrctrl core currently creates
> the pwrctrl device even if the remote endpoint doesn't have the power
> supply requirements. Since the device doesn't have any power supply
> requirements, there was no pwrctrl driver to probe, leading to PCI
> controller driver probe deferral as it waits for all pwrctrl drivers to
> probe before starting bus scan.
>
> This issue happens with Qcom ath12k devices with WSI interface attached to
> the Qcom IPQ platforms.
>
> Fix this issue by checking for the existence of at least one power supply
> property in the remote endpoint parent node. To consolidate all the checks,
> create a new helper pci_pwrctrl_is_required() and move all the checks
> there.
>
> Fixes: 9db826206f9b ("PCI/pwrctrl: Create pwrctrl device if graph port is found")
> Reported-by: Raj Kumar Bhagat <raj.bhagat@oss.qualcomm.com>
> Signed-off-by: Manivannan Sadhasivam <manivannan.sadhasivam@oss.qualcomm.com>
Reviewed-by: Krishna Chaitanya Chundru<krishna.chundru@oss.qualcomm.com>
- Krishna Chaitanya.
> ---
> drivers/pci/pwrctrl/core.c | 47 +++++++++++++++++++++++++++++++++-------------
> 1 file changed, 34 insertions(+), 13 deletions(-)
>
> diff --git a/drivers/pci/pwrctrl/core.c b/drivers/pci/pwrctrl/core.c
> index 6f7dea6746e0..8325858cc379 100644
> --- a/drivers/pci/pwrctrl/core.c
> +++ b/drivers/pci/pwrctrl/core.c
> @@ -268,6 +268,39 @@ int pci_pwrctrl_power_on_devices(struct device *parent)
> }
> EXPORT_SYMBOL_GPL(pci_pwrctrl_power_on_devices);
>
> +/*
> + * Check whether the pwrctrl device really needs to be created or not. The
> + * pwrctrl device will only be created if the node satisfies below requirements:
> + *
> + * 1. Presence of compatible property to match against the pwrctrl driver (AND)
> + * 2. At least one of the power supplies defined in the devicetree node of the
> + * device (OR) in the remote endpoint parent node to indicate pwrctrl
> + * requirement.
> + */
> +static bool pci_pwrctrl_is_required(struct device_node *np)
> +{
> + struct device_node *endpoint;
> +
> + if (!of_property_present(np, "compatible"))
> + return false;
> +
> + if (of_pci_supply_present(np))
> + return true;
> +
> + if (of_graph_is_present(np)) {
> + for_each_endpoint_of_node(np, endpoint) {
> + struct device_node *remote __free(device_node) =
> + of_graph_get_remote_port_parent(endpoint);
> + if (remote) {
> + if (of_pci_supply_present(remote))
> + return true;
> + }
> + }
> + }
> +
> + return false;
> +}
> +
> static int pci_pwrctrl_create_device(struct device_node *np,
> struct device *parent)
> {
> @@ -287,19 +320,7 @@ static int pci_pwrctrl_create_device(struct device_node *np,
> return 0;
> }
>
> - /*
> - * Sanity check to make sure that the node has the compatible property
> - * to allow driver binding.
> - */
> - if (!of_property_present(np, "compatible"))
> - return 0;
> -
> - /*
> - * Check whether the pwrctrl device really needs to be created or not.
> - * This is decided based on at least one of the power supplies defined
> - * in the devicetree node of the device or the graph property.
> - */
> - if (!of_pci_supply_present(np) && !of_graph_is_present(np)) {
> + if (!pci_pwrctrl_is_required(np)) {
> dev_dbg(parent, "Skipping OF node: %s\n", np->name);
> return 0;
> }
>
next prev parent reply other threads:[~2026-02-17 11:17 UTC|newest]
Thread overview: 16+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-02-17 10:18 [PATCH 0/2] PCI/pwrctrl: A couple of fixes Manivannan Sadhasivam via B4 Relay
2026-02-17 10:18 ` [PATCH 1/2] PCI/pwrctrl: Ensure that the remote endpoint node parent has the supply requirement Manivannan Sadhasivam via B4 Relay
2026-02-17 11:15 ` Bartosz Golaszewski
2026-02-17 11:17 ` Krishna Chaitanya Chundru [this message]
2026-02-17 12:45 ` Raj Kumar Bhagat
2026-02-17 10:18 ` [PATCH 2/2] PCI/pwrctrl: Only create pwrctrl device if the device node is of type "pci" Manivannan Sadhasivam via B4 Relay
2026-02-17 11:18 ` Krishna Chaitanya Chundru
2026-02-17 12:14 ` Bartosz Golaszewski
2026-02-17 18:09 ` Bjorn Andersson
2026-02-18 12:24 ` Manivannan Sadhasivam
2026-02-23 14:25 ` Bjorn Andersson
2026-02-23 14:31 ` Manivannan Sadhasivam
2026-02-17 16:06 ` [PATCH 0/2] PCI/pwrctrl: A couple of fixes Bjorn Helgaas
2026-02-17 16:24 ` Manivannan Sadhasivam
2026-02-17 17:03 ` Bjorn Helgaas
2026-02-18 11:54 ` Manivannan Sadhasivam
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=a9b5bbbc-a16c-451f-bfc3-806300f8b544@oss.qualcomm.com \
--to=krishna.chundru@oss.qualcomm.com \
--cc=bartosz.golaszewski@oss.qualcomm.com \
--cc=bhelgaas@google.com \
--cc=brgl@kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-pci@vger.kernel.org \
--cc=mani@kernel.org \
--cc=manivannan.sadhasivam@oss.qualcomm.com \
--cc=raj.bhagat@oss.qualcomm.com \
/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®