From: Manivannan Sadhasivam <mani@kernel.org>
To: Johan Hovold <johan+linaro@kernel.org>
Cc: "Lorenzo Pieralisi" <lpieralisi@kernel.org>,
"Krzysztof Wilczyński" <kw@linux.com>,
"Bjorn Helgaas" <bhelgaas@google.com>,
"Andy Gross" <agross@kernel.org>,
"Bjorn Andersson" <andersson@kernel.org>,
"Konrad Dybcio" <konrad.dybcio@linaro.org>,
"Rob Herring" <robh@kernel.org>,
"Nirmal Patel" <nirmal.patel@linux.intel.com>,
"Jonathan Derrick" <jonathan.derrick@linux.dev>,
linux-arm-msm@vger.kernel.org, linux-pci@vger.kernel.org,
linux-kernel@vger.kernel.org,
"Manivannan Sadhasivam" <manivannan.sadhasivam@linaro.org>
Subject: Re: [PATCH 3/6] PCI: qcom: Fix deadlock when enabling ASPM
Date: Fri, 17 Nov 2023 15:58:55 +0530 [thread overview]
Message-ID: <20231117102855.GL250770@thinkpad> (raw)
In-Reply-To: <20231114135553.32301-4-johan+linaro@kernel.org>
On Tue, Nov 14, 2023 at 02:55:50PM +0100, Johan Hovold wrote:
> The qcom_pcie_enable_aspm() helper is called from pci_walk_bus() during
> host init to enable ASPM.
>
> Since pci_walk_bus() already holds a pci_bus_sem read lock, use the new
> locked helper to enable link states in order to avoid a potential
> deadlock (e.g. in case someone takes a write lock before reacquiring
> the read lock).
>
> This issue was reported by lockdep:
>
> ============================================
> WARNING: possible recursive locking detected
> 6.7.0-rc1 #4 Not tainted
> --------------------------------------------
> kworker/u16:6/147 is trying to acquire lock:
> ffffbf3ff9d2cfa0 (pci_bus_sem){++++}-{3:3}, at: pci_enable_link_state+0x74/0x1e8
>
> but task is already holding lock:
> ffffbf3ff9d2cfa0 (pci_bus_sem){++++}-{3:3}, at: pci_walk_bus+0x34/0xbc
>
> other info that might help us debug this:
> Possible unsafe locking scenario:
>
> CPU0
> ----
> lock(pci_bus_sem);
> lock(pci_bus_sem);
>
> *** DEADLOCK ***
>
> Fixes: 9f4f3dfad8cf ("PCI: qcom: Enable ASPM for platforms supporting 1.9.0 ops")
> Cc: Manivannan Sadhasivam <manivannan.sadhasivam@linaro.org>
> Signed-off-by: Johan Hovold <johan+linaro@kernel.org>
Reviewed-by: Manivannan Sadhasivam <manivannan.sadhasivam@linaro.org>
- Mani
> ---
> drivers/pci/controller/dwc/pcie-qcom.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/drivers/pci/controller/dwc/pcie-qcom.c b/drivers/pci/controller/dwc/pcie-qcom.c
> index ce3ece28fed2..21523115f6a4 100644
> --- a/drivers/pci/controller/dwc/pcie-qcom.c
> +++ b/drivers/pci/controller/dwc/pcie-qcom.c
> @@ -971,7 +971,7 @@ static int qcom_pcie_enable_aspm(struct pci_dev *pdev, void *userdata)
> {
> /* Downstream devices need to be in D0 state before enabling PCI PM substates */
> pci_set_power_state(pdev, PCI_D0);
> - pci_enable_link_state(pdev, PCIE_LINK_STATE_ALL);
> + pci_enable_link_state_locked(pdev, PCIE_LINK_STATE_ALL);
>
> return 0;
> }
> --
> 2.41.0
>
--
மணிவண்ணன் சதாசிவம்
next prev parent reply other threads:[~2023-11-17 10:29 UTC|newest]
Thread overview: 25+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-11-14 13:55 [PATCH 0/6] PCI: Fix deadlocks when enabling ASPM Johan Hovold
2023-11-14 13:55 ` [PATCH 1/6] PCI/ASPM: Add locked helper for enabling link state Johan Hovold
2023-11-15 14:26 ` kernel test robot
2023-11-15 16:06 ` Johan Hovold
2023-11-17 10:27 ` Manivannan Sadhasivam
2023-11-17 10:30 ` Johan Hovold
2023-11-17 10:50 ` Manivannan Sadhasivam
2023-11-17 10:28 ` Manivannan Sadhasivam
2023-11-18 0:00 ` David E. Box
2023-11-20 8:33 ` Johan Hovold
2023-11-14 13:55 ` [PATCH 2/6] PCI: vmd: Fix deadlock when enabling ASPM Johan Hovold
2023-11-17 10:28 ` Manivannan Sadhasivam
2023-11-14 13:55 ` [PATCH 3/6] PCI: qcom: " Johan Hovold
2023-11-17 10:28 ` Manivannan Sadhasivam [this message]
2023-11-14 13:55 ` [PATCH 4/6] PCI: qcom: Clean up ASPM comment Johan Hovold
2023-11-17 10:32 ` Manivannan Sadhasivam
2023-11-17 10:48 ` Johan Hovold
2023-11-17 10:54 ` Manivannan Sadhasivam
2023-11-17 11:00 ` Johan Hovold
2023-11-17 11:23 ` Manivannan Sadhasivam
2023-11-17 14:03 ` Johan Hovold
2023-11-14 13:55 ` [PATCH 5/6] PCI/ASPM: Clean up disable link state parameter Johan Hovold
2023-11-17 10:35 ` Manivannan Sadhasivam
2023-11-14 13:55 ` [PATCH 6/6] PCI/ASPM: Add lockdep assert to link state helper Johan Hovold
2023-11-17 10:36 ` 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=20231117102855.GL250770@thinkpad \
--to=mani@kernel.org \
--cc=agross@kernel.org \
--cc=andersson@kernel.org \
--cc=bhelgaas@google.com \
--cc=johan+linaro@kernel.org \
--cc=jonathan.derrick@linux.dev \
--cc=konrad.dybcio@linaro.org \
--cc=kw@linux.com \
--cc=linux-arm-msm@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-pci@vger.kernel.org \
--cc=lpieralisi@kernel.org \
--cc=manivannan.sadhasivam@linaro.org \
--cc=nirmal.patel@linux.intel.com \
--cc=robh@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