Message ID | 20241115-remove_wait1-v4-3-7e3412756e3d@quicinc.com (mailing list archive) |
---|---|
State | Not Applicable |
Headers | show |
Series | PCI: dwc: Skip waiting for link up if vendor drivers can detect Link up event | expand |
On Fri, Nov 15, 2024 at 04:00:23PM +0530, Krishna chaitanya chundru wrote: > As the wait for linkup is removed if there is a global IRQ support, > there is no guarantee that the correct icc and opp votes are updated > as part of probe. > > And also global IRQ is being used as hotplug event in case link hasn't > come up as part probe, link up IRQ is the correct place to update the > ICC and OPP votes. > > So, as part of the PCIe link up event, update ICC and OPP values. > How about, "The commit 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") > Signed-off-by: Krishna chaitanya chundru <quic_krichai@quicinc.com> With above, Reviewed-by: Manivannan Sadhasivam <manivannan.sadhasivam@linaro.org> - Mani > --- > 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 c39d1c55b50e..39f5c782e2c3 100644 > --- a/drivers/pci/controller/dwc/pcie-qcom.c > +++ b/drivers/pci/controller/dwc/pcie-qcom.c > @@ -1558,6 +1558,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 >
diff --git a/drivers/pci/controller/dwc/pcie-qcom.c b/drivers/pci/controller/dwc/pcie-qcom.c index c39d1c55b50e..39f5c782e2c3 100644 --- a/drivers/pci/controller/dwc/pcie-qcom.c +++ b/drivers/pci/controller/dwc/pcie-qcom.c @@ -1558,6 +1558,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);
As the wait for linkup is removed if there is a global IRQ support, there is no guarantee that the correct icc and opp votes are updated as part of probe. And also global IRQ is being used as hotplug event in case link hasn't come up as part probe, link up IRQ is the correct place to update the ICC and OPP votes. So, as part of the PCIe link up event, update ICC and OPP values. Fixes: 4581403f6792 ("PCI: qcom: Enumerate endpoints based on Link up event in 'global_irq' interrupt") Signed-off-by: Krishna chaitanya chundru <quic_krichai@quicinc.com> --- drivers/pci/controller/dwc/pcie-qcom.c | 2 ++ 1 file changed, 2 insertions(+)