mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
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;
>   	}
>


  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®