* [PATCH v5 0/3] PCI: dwc: Skip waiting for link up if vendor drivers can detect Link up event
@ 2024-11-22 19:09 Krishna chaitanya chundru
2024-11-22 19:09 ` [PATCH v5 1/3] " Krishna chaitanya chundru
` (5 more replies)
0 siblings, 6 replies; 8+ messages in thread
From: Krishna chaitanya chundru @ 2024-11-22 19:09 UTC (permalink / raw)
To: Jingoo Han, Manivannan Sadhasivam, Lorenzo Pieralisi,
Krzysztof Wilczyński, Rob Herring, Bjorn Helgaas,
Konrad Dybcio
Cc: linux-pci, linux-kernel, linux-arm-msm, Krzysztof Wilczyński,
andersson, quic_vbadigan, quic_mrana, Krishna chaitanya chundru
If the vendor drivers can detect the Link up event using mechanisms
such as Link up IRQ, then waiting for Link up during probe is not
needed. if the drivers can be notified when the link comes up,
vendor driver can enumerate downstream devices instead of waiting
here, which optimizes the boot time.
So skip waiting for link to be up if the driver supports 'use_linkup_irq'.
Currently, only Qcom RC driver supports the 'use_linkup_irq' as it can
detect the Link Up event using its own 'global IRQ' interrupt. So set
'use_linkup_irq' flag for QCOM drivers.
And as part of the PCIe link up event, the ICC and OPP values are updated.
Signed-off-by: Krishna chaitanya chundru <quic_krichai@quicinc.com>
---
Changes in v5:
- update the commit text as suggested by (mani).
Changes in v4:
- change the linkup_irq name to use_linkup_irq a suggested by (bjorn
andresson)
- update commit text as suggested by bjorn andresson.
- Link to v3: https://lore.kernel.org/r/linux-arm-msm/20241101-remove_wait-v3-0-7accf27f7202@quicinc.com/T/
Changes in v3:
- seperate dwc changes and qcom changes as suggested (mani)
- update commit & comments as suggested (mani & bjorn)
- Link to v2: https://lore.kernel.org/linux-pci/20240920-remove_wait-v2-0-7c0fcb3b581d@quicinc.com/T/
Changes in v2:
- Updated the bypass_link_up_wait name to linkup_irq & added comment as
suggested (mani).
- seperated the icc and opp update patch (mani).
- Link to v1: https://lore.kernel.org/r/20240917-remove_wait-v1-1-456d2551bc50@quicinc.com
---
Krishna chaitanya chundru (3):
PCI: dwc: Skip waiting for link up if vendor drivers can detect Link up event
PCI: qcom: Set use_linkup_irq if global IRQ handler is present
PCI: qcom: Update ICC and OPP values during link up event
drivers/pci/controller/dwc/pcie-designware-host.c | 10 ++++++++--
drivers/pci/controller/dwc/pcie-designware.h | 1 +
drivers/pci/controller/dwc/pcie-qcom.c | 7 ++++++-
3 files changed, 15 insertions(+), 3 deletions(-)
---
base-commit: cfba9f07a1d6aeca38f47f1f472cfb0ba133d341
change-id: 20241122-remove_wait2-d581b40380ea
Best regards,
--
Krishna chaitanya chundru <quic_krichai@quicinc.com>
^ permalink raw reply [flat|nested] 8+ messages in thread
* [PATCH v5 1/3] PCI: dwc: Skip waiting for link up if vendor drivers can detect Link up event
2024-11-22 19:09 [PATCH v5 0/3] PCI: dwc: Skip waiting for link up if vendor drivers can detect Link up event Krishna chaitanya chundru
@ 2024-11-22 19:09 ` Krishna chaitanya chundru
2024-11-22 19:10 ` [PATCH v5 2/3] PCI: qcom: Set use_linkup_irq if global IRQ handler is present Krishna chaitanya chundru
` (4 subsequent siblings)
5 siblings, 0 replies; 8+ messages in thread
From: Krishna chaitanya chundru @ 2024-11-22 19:09 UTC (permalink / raw)
To: Jingoo Han, Manivannan Sadhasivam, Lorenzo Pieralisi,
Krzysztof Wilczyński, Rob Herring, Bjorn Helgaas,
Konrad Dybcio
Cc: linux-pci, linux-kernel, linux-arm-msm, Krzysztof Wilczyński,
andersson, quic_vbadigan, quic_mrana, Krishna chaitanya chundru
If the vendor drivers can detect the Link up event using mechanisms
such as Link up IRQ and if the driver can enumerate downstream devices
instead of waiting here, then waiting for Link up during probe is not
needed here, which optimizes the boot time.
So skip waiting for link to be up if the driver supports 'use_linkup_irq'.
Reviewed-by: Manivannan Sadhasivam <manivannan.sadhasivam@linaro.org>
Signed-off-by: Krishna chaitanya chundru <quic_krichai@quicinc.com>
---
drivers/pci/controller/dwc/pcie-designware-host.c | 10 ++++++++--
drivers/pci/controller/dwc/pcie-designware.h | 1 +
2 files changed, 9 insertions(+), 2 deletions(-)
diff --git a/drivers/pci/controller/dwc/pcie-designware-host.c b/drivers/pci/controller/dwc/pcie-designware-host.c
index d2291c3ceb8b..cc172255d3b6 100644
--- a/drivers/pci/controller/dwc/pcie-designware-host.c
+++ b/drivers/pci/controller/dwc/pcie-designware-host.c
@@ -530,8 +530,14 @@ int dw_pcie_host_init(struct dw_pcie_rp *pp)
goto err_remove_edma;
}
- /* Ignore errors, the link may come up later */
- dw_pcie_wait_for_link(pci);
+ /*
+ * Note: The link up delay is skipped only when a link up IRQ is present.
+ * This flag should not be used to bypass the link up delay for arbitrary
+ * reasons.
+ */
+ if (!pp->use_linkup_irq)
+ /* Ignore errors, the link may come up later */
+ dw_pcie_wait_for_link(pci);
bridge->sysdata = pp;
diff --git a/drivers/pci/controller/dwc/pcie-designware.h b/drivers/pci/controller/dwc/pcie-designware.h
index 347ab74ac35a..1d0ec47e1986 100644
--- a/drivers/pci/controller/dwc/pcie-designware.h
+++ b/drivers/pci/controller/dwc/pcie-designware.h
@@ -379,6 +379,7 @@ struct dw_pcie_rp {
bool use_atu_msg;
int msg_atu_index;
struct resource *msg_res;
+ bool use_linkup_irq;
};
struct dw_pcie_ep_ops {
--
2.34.1
^ permalink raw reply related [flat|nested] 8+ messages in thread
* [PATCH v5 2/3] PCI: qcom: Set use_linkup_irq if global IRQ handler is present
2024-11-22 19:09 [PATCH v5 0/3] PCI: dwc: Skip waiting for link up if vendor drivers can detect Link up event Krishna chaitanya chundru
2024-11-22 19:09 ` [PATCH v5 1/3] " Krishna chaitanya chundru
@ 2024-11-22 19:10 ` Krishna chaitanya chundru
2024-11-22 19:10 ` [PATCH v5 3/3] PCI: qcom: Update ICC and OPP values during link up event Krishna chaitanya chundru
` (3 subsequent siblings)
5 siblings, 0 replies; 8+ messages in thread
From: Krishna chaitanya chundru @ 2024-11-22 19:10 UTC (permalink / raw)
To: Jingoo Han, Manivannan Sadhasivam, Lorenzo Pieralisi,
Krzysztof Wilczyński, Rob Herring, Bjorn Helgaas,
Konrad Dybcio
Cc: linux-pci, linux-kernel, linux-arm-msm, Krzysztof Wilczyński,
andersson, quic_vbadigan, quic_mrana, Krishna chaitanya chundru
In cases where a global IRQ handler is present to manage link up
interrupts, it may not be necessary to wait for the link to be up
during PCI initialization which optimizes the bootup time.
So, set use_linkup_irq flag if global IRQ is present and in order to set
the use_linkup_irq flag before calling dw_pcie_host_init() call, which
waits for link to be up, move platform_get_irq_byname_optional() API
above dw_pcie_host_init().
Reviewed-by: Manivannan Sadhasivam <manivannan.sadhasivam@linaro.org>
Signed-off-by: Krishna chaitanya chundru <quic_krichai@quicinc.com>
---
drivers/pci/controller/dwc/pcie-qcom.c | 5 ++++-
1 file changed, 4 insertions(+), 1 deletion(-)
diff --git a/drivers/pci/controller/dwc/pcie-qcom.c b/drivers/pci/controller/dwc/pcie-qcom.c
index dc102d8bd58c..656d2be9d87f 100644
--- a/drivers/pci/controller/dwc/pcie-qcom.c
+++ b/drivers/pci/controller/dwc/pcie-qcom.c
@@ -1703,6 +1703,10 @@ static int qcom_pcie_probe(struct platform_device *pdev)
platform_set_drvdata(pdev, pcie);
+ irq = platform_get_irq_byname_optional(pdev, "global");
+ if (irq > 0)
+ pp->use_linkup_irq = true;
+
ret = dw_pcie_host_init(pp);
if (ret) {
dev_err(dev, "cannot initialize host\n");
@@ -1716,7 +1720,6 @@ static int qcom_pcie_probe(struct platform_device *pdev)
goto err_host_deinit;
}
- irq = platform_get_irq_byname_optional(pdev, "global");
if (irq > 0) {
ret = devm_request_threaded_irq(&pdev->dev, irq, NULL,
qcom_pcie_global_irq_thread,
--
2.34.1
^ permalink raw reply related [flat|nested] 8+ messages in thread
* [PATCH v5 3/3] PCI: qcom: Update ICC and OPP values during link up event
2024-11-22 19:09 [PATCH v5 0/3] PCI: dwc: Skip waiting for link up if vendor drivers can detect Link up event Krishna chaitanya chundru
2024-11-22 19:09 ` [PATCH v5 1/3] " Krishna chaitanya chundru
2024-11-22 19:10 ` [PATCH v5 2/3] PCI: qcom: Set use_linkup_irq if global IRQ handler is present Krishna chaitanya chundru
@ 2024-11-22 19:10 ` Krishna chaitanya chundru
2024-12-23 6:55 ` [PATCH v5 0/3] PCI: dwc: Skip waiting for link up if vendor drivers can detect Link " Krishna Chaitanya Chundru
` (2 subsequent siblings)
5 siblings, 0 replies; 8+ messages in thread
From: Krishna chaitanya chundru @ 2024-11-22 19:10 UTC (permalink / raw)
To: Jingoo Han, Manivannan Sadhasivam, Lorenzo Pieralisi,
Krzysztof Wilczyński, Rob Herring, Bjorn Helgaas,
Konrad Dybcio
Cc: linux-pci, linux-kernel, linux-arm-msm, Krzysztof Wilczyński,
andersson, quic_vbadigan, quic_mrana, Krishna chaitanya chundru
The 'commit 4581403f6792 ("PCI: qcom: Enumerate endpoints based on Link up
event in 'global_irq' interrupt")' added the Link up based enumeration
support failed to update the ICC/OPP vote once link is up. Earlier, the
update happens during probe and the endpoints may or may not be enumerated
at that time. So the ICC/OPP vote was not guaranteed to be accurate. Now
with the Link up based enumeration support, the driver can request the
accurate vote based on the PCIe link.
So call qcom_pcie_icc_opp_update() in qcom_pcie_global_irq_thread() after
enumerating the endpoints.
Fixes: 4581403f6792 ("PCI: qcom: Enumerate endpoints based on Link up event in 'global_irq' interrupt")
Reviewed-by: Manivannan Sadhasivam <manivannan.sadhasivam@linaro.org>
Signed-off-by: Krishna chaitanya chundru <quic_krichai@quicinc.com>
---
drivers/pci/controller/dwc/pcie-qcom.c | 2 ++
1 file changed, 2 insertions(+)
diff --git a/drivers/pci/controller/dwc/pcie-qcom.c b/drivers/pci/controller/dwc/pcie-qcom.c
index 656d2be9d87f..e4d3366ead1f 100644
--- a/drivers/pci/controller/dwc/pcie-qcom.c
+++ b/drivers/pci/controller/dwc/pcie-qcom.c
@@ -1569,6 +1569,8 @@ static irqreturn_t qcom_pcie_global_irq_thread(int irq, void *data)
pci_lock_rescan_remove();
pci_rescan_bus(pp->bridge->bus);
pci_unlock_rescan_remove();
+
+ qcom_pcie_icc_opp_update(pcie);
} else {
dev_WARN_ONCE(dev, 1, "Received unknown event. INT_STATUS: 0x%08x\n",
status);
--
2.34.1
^ permalink raw reply related [flat|nested] 8+ messages in thread
* Re: [PATCH v5 0/3] PCI: dwc: Skip waiting for link up if vendor drivers can detect Link up event
2024-11-22 19:09 [PATCH v5 0/3] PCI: dwc: Skip waiting for link up if vendor drivers can detect Link up event Krishna chaitanya chundru
` (2 preceding siblings ...)
2024-11-22 19:10 ` [PATCH v5 3/3] PCI: qcom: Update ICC and OPP values during link up event Krishna chaitanya chundru
@ 2024-12-23 6:55 ` Krishna Chaitanya Chundru
2025-01-16 1:57 ` Krzysztof Wilczyński
2025-01-02 16:42 ` Niklas Cassel
2025-01-15 11:19 ` Krzysztof Wilczyński
5 siblings, 1 reply; 8+ messages in thread
From: Krishna Chaitanya Chundru @ 2024-12-23 6:55 UTC (permalink / raw)
To: Jingoo Han, Manivannan Sadhasivam, Lorenzo Pieralisi,
Krzysztof Wilczyński, Rob Herring, Bjorn Helgaas,
Konrad Dybcio
Cc: linux-pci, linux-kernel, linux-arm-msm, Krzysztof Wilczyński,
andersson, quic_vbadigan, quic_mrana
Could this series be picked up?
- Krishna Chaitanya.
On 11/23/2024 12:39 AM, Krishna chaitanya chundru wrote:
> If the vendor drivers can detect the Link up event using mechanisms
> such as Link up IRQ, then waiting for Link up during probe is not
> needed. if the drivers can be notified when the link comes up,
> vendor driver can enumerate downstream devices instead of waiting
> here, which optimizes the boot time.
>
> So skip waiting for link to be up if the driver supports 'use_linkup_irq'.
>
> Currently, only Qcom RC driver supports the 'use_linkup_irq' as it can
> detect the Link Up event using its own 'global IRQ' interrupt. So set
> 'use_linkup_irq' flag for QCOM drivers.
>
> And as part of the PCIe link up event, the ICC and OPP values are updated.
>
> Signed-off-by: Krishna chaitanya chundru <quic_krichai@quicinc.com>
> ---
> Changes in v5:
> - update the commit text as suggested by (mani).
> Changes in v4:
> - change the linkup_irq name to use_linkup_irq a suggested by (bjorn
> andresson)
> - update commit text as suggested by bjorn andresson.
> - Link to v3: https://lore.kernel.org/r/linux-arm-msm/20241101-remove_wait-v3-0-7accf27f7202@quicinc.com/T/
> Changes in v3:
> - seperate dwc changes and qcom changes as suggested (mani)
> - update commit & comments as suggested (mani & bjorn)
> - Link to v2: https://lore.kernel.org/linux-pci/20240920-remove_wait-v2-0-7c0fcb3b581d@quicinc.com/T/
> Changes in v2:
> - Updated the bypass_link_up_wait name to linkup_irq & added comment as
> suggested (mani).
> - seperated the icc and opp update patch (mani).
> - Link to v1: https://lore.kernel.org/r/20240917-remove_wait-v1-1-456d2551bc50@quicinc.com
>
> ---
> Krishna chaitanya chundru (3):
> PCI: dwc: Skip waiting for link up if vendor drivers can detect Link up event
> PCI: qcom: Set use_linkup_irq if global IRQ handler is present
> PCI: qcom: Update ICC and OPP values during link up event
>
> drivers/pci/controller/dwc/pcie-designware-host.c | 10 ++++++++--
> drivers/pci/controller/dwc/pcie-designware.h | 1 +
> drivers/pci/controller/dwc/pcie-qcom.c | 7 ++++++-
> 3 files changed, 15 insertions(+), 3 deletions(-)
> ---
> base-commit: cfba9f07a1d6aeca38f47f1f472cfb0ba133d341
> change-id: 20241122-remove_wait2-d581b40380ea
>
> Best regards,
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH v5 0/3] PCI: dwc: Skip waiting for link up if vendor drivers can detect Link up event
2024-11-22 19:09 [PATCH v5 0/3] PCI: dwc: Skip waiting for link up if vendor drivers can detect Link up event Krishna chaitanya chundru
` (3 preceding siblings ...)
2024-12-23 6:55 ` [PATCH v5 0/3] PCI: dwc: Skip waiting for link up if vendor drivers can detect Link " Krishna Chaitanya Chundru
@ 2025-01-02 16:42 ` Niklas Cassel
2025-01-15 11:19 ` Krzysztof Wilczyński
5 siblings, 0 replies; 8+ messages in thread
From: Niklas Cassel @ 2025-01-02 16:42 UTC (permalink / raw)
To: Krishna chaitanya chundru
Cc: Jingoo Han, Manivannan Sadhasivam, Lorenzo Pieralisi,
Krzysztof Wilczyński, Rob Herring, Bjorn Helgaas,
Konrad Dybcio, linux-pci, linux-kernel, linux-arm-msm,
Krzysztof Wilczyński, andersson, quic_vbadigan, quic_mrana
On Sat, Nov 23, 2024 at 12:39:58AM +0530, Krishna chaitanya chundru wrote:
> If the vendor drivers can detect the Link up event using mechanisms
> such as Link up IRQ, then waiting for Link up during probe is not
> needed. if the drivers can be notified when the link comes up,
> vendor driver can enumerate downstream devices instead of waiting
> here, which optimizes the boot time.
>
> So skip waiting for link to be up if the driver supports 'use_linkup_irq'.
>
> Currently, only Qcom RC driver supports the 'use_linkup_irq' as it can
> detect the Link Up event using its own 'global IRQ' interrupt. So set
> 'use_linkup_irq' flag for QCOM drivers.
>
> And as part of the PCIe link up event, the ICC and OPP values are updated.
>
> Signed-off-by: Krishna chaitanya chundru <quic_krichai@quicinc.com>
> ---
> Changes in v5:
> - update the commit text as suggested by (mani).
> Changes in v4:
> - change the linkup_irq name to use_linkup_irq a suggested by (bjorn
> andresson)
> - update commit text as suggested by bjorn andresson.
> - Link to v3: https://lore.kernel.org/r/linux-arm-msm/20241101-remove_wait-v3-0-7accf27f7202@quicinc.com/T/
> Changes in v3:
> - seperate dwc changes and qcom changes as suggested (mani)
> - update commit & comments as suggested (mani & bjorn)
> - Link to v2: https://lore.kernel.org/linux-pci/20240920-remove_wait-v2-0-7c0fcb3b581d@quicinc.com/T/
> Changes in v2:
> - Updated the bypass_link_up_wait name to linkup_irq & added comment as
> suggested (mani).
> - seperated the icc and opp update patch (mani).
> - Link to v1: https://lore.kernel.org/r/20240917-remove_wait-v1-1-456d2551bc50@quicinc.com
>
> ---
> Krishna chaitanya chundru (3):
> PCI: dwc: Skip waiting for link up if vendor drivers can detect Link up event
> PCI: qcom: Set use_linkup_irq if global IRQ handler is present
> PCI: qcom: Update ICC and OPP values during link up event
>
> drivers/pci/controller/dwc/pcie-designware-host.c | 10 ++++++++--
> drivers/pci/controller/dwc/pcie-designware.h | 1 +
> drivers/pci/controller/dwc/pcie-qcom.c | 7 ++++++-
> 3 files changed, 15 insertions(+), 3 deletions(-)
> ---
> base-commit: cfba9f07a1d6aeca38f47f1f472cfb0ba133d341
> change-id: 20241122-remove_wait2-d581b40380ea
>
> Best regards,
> --
> Krishna chaitanya chundru <quic_krichai@quicinc.com>
>
For the series:
Reviewed-by: Niklas Cassel <cassel@kernel.org>
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH v5 0/3] PCI: dwc: Skip waiting for link up if vendor drivers can detect Link up event
2024-11-22 19:09 [PATCH v5 0/3] PCI: dwc: Skip waiting for link up if vendor drivers can detect Link up event Krishna chaitanya chundru
` (4 preceding siblings ...)
2025-01-02 16:42 ` Niklas Cassel
@ 2025-01-15 11:19 ` Krzysztof Wilczyński
5 siblings, 0 replies; 8+ messages in thread
From: Krzysztof Wilczyński @ 2025-01-15 11:19 UTC (permalink / raw)
To: Krishna chaitanya chundru
Cc: Jingoo Han, Manivannan Sadhasivam, Lorenzo Pieralisi, Rob Herring,
Bjorn Helgaas, Konrad Dybcio, linux-pci, linux-kernel,
linux-arm-msm, andersson, quic_vbadigan, quic_mrana
Hello,
> If the vendor drivers can detect the Link up event using mechanisms
> such as Link up IRQ, then waiting for Link up during probe is not
> needed. if the drivers can be notified when the link comes up,
> vendor driver can enumerate downstream devices instead of waiting
> here, which optimizes the boot time.
>
> So skip waiting for link to be up if the driver supports 'use_linkup_irq'.
>
> Currently, only Qcom RC driver supports the 'use_linkup_irq' as it can
> detect the Link Up event using its own 'global IRQ' interrupt. So set
> 'use_linkup_irq' flag for QCOM drivers.
>
> And as part of the PCIe link up event, the ICC and OPP values are updated.
Applied to controller/dwc for v6.14, thank you!
Krzysztof
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH v5 0/3] PCI: dwc: Skip waiting for link up if vendor drivers can detect Link up event
2024-12-23 6:55 ` [PATCH v5 0/3] PCI: dwc: Skip waiting for link up if vendor drivers can detect Link " Krishna Chaitanya Chundru
@ 2025-01-16 1:57 ` Krzysztof Wilczyński
0 siblings, 0 replies; 8+ messages in thread
From: Krzysztof Wilczyński @ 2025-01-16 1:57 UTC (permalink / raw)
To: Krishna Chaitanya Chundru
Cc: Jingoo Han, Manivannan Sadhasivam, Lorenzo Pieralisi, Rob Herring,
Bjorn Helgaas, Konrad Dybcio, linux-pci, linux-kernel,
linux-arm-msm, andersson, quic_vbadigan, quic_mrana
Hello,
> Could this series be picked up?
Sorry for the delay! We should be good for the v6.14 release, hopefully.
Krzysztof
^ permalink raw reply [flat|nested] 8+ messages in thread
end of thread, other threads:[~2025-01-16 1:57 UTC | newest]
Thread overview: 8+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-11-22 19:09 [PATCH v5 0/3] PCI: dwc: Skip waiting for link up if vendor drivers can detect Link up event Krishna chaitanya chundru
2024-11-22 19:09 ` [PATCH v5 1/3] " Krishna chaitanya chundru
2024-11-22 19:10 ` [PATCH v5 2/3] PCI: qcom: Set use_linkup_irq if global IRQ handler is present Krishna chaitanya chundru
2024-11-22 19:10 ` [PATCH v5 3/3] PCI: qcom: Update ICC and OPP values during link up event Krishna chaitanya chundru
2024-12-23 6:55 ` [PATCH v5 0/3] PCI: dwc: Skip waiting for link up if vendor drivers can detect Link " Krishna Chaitanya Chundru
2025-01-16 1:57 ` Krzysztof Wilczyński
2025-01-02 16:42 ` Niklas Cassel
2025-01-15 11:19 ` Krzysztof Wilczyński
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox