[PATCH v2 09/10] PCI: keystone: Exit ks_pcie_probe() for the default switch-case of "mode"

Siddharth Vadapalli posted 10 patches 2 weeks, 6 days ago
There is a newer version of this series
[PATCH v2 09/10] PCI: keystone: Exit ks_pcie_probe() for the default switch-case of "mode"
Posted by Siddharth Vadapalli 2 weeks, 6 days ago
In ks_pcie_probe(), the switch-case for the "mode" is used to configure
the PCIe Controller for either Root-Complex or Endpoint mode of operation.
Prior to the switch-case statement for "mode" an invalid mode will result
in probe failure only if "dw_pcie_ver_is_ge(pci, 480A)" is true, which
is the case for the AM654 platform. On the other hand, when that is not
the case, "ks_pcie_set_mode()" will be invoked, which does not validate
the mode. As a result, it is possible for the switch-case statement for
"mode" to receive an invalid mode. Currently, an error message is displayed
in the "default" case where "mode" is neither "DW_PCIE_RC_TYPE" nor
"DW_PCIE_EP_TYPE", but the probe succeeds. However, since the configuration
required for Root-Complex and Endpoint mode have not been performed, the
Controller is not operational.

Fix this by exiting "ks_pcie_probe()" with the return value of "-EINVAL"
in addition to displaying the existing error message.

Signed-off-by: Siddharth Vadapalli <s-vadapalli@ti.com>
---

v1: https://lore.kernel.org/r/20250903124505.365913-11-s-vadapalli@ti.com/
No changes since v1.

 drivers/pci/controller/dwc/pci-keystone.c | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/drivers/pci/controller/dwc/pci-keystone.c b/drivers/pci/controller/dwc/pci-keystone.c
index 2da9feaaf9ee..e85942b4f6be 100644
--- a/drivers/pci/controller/dwc/pci-keystone.c
+++ b/drivers/pci/controller/dwc/pci-keystone.c
@@ -1414,6 +1414,8 @@ static int ks_pcie_probe(struct platform_device *pdev)
 		break;
 	default:
 		dev_err(dev, "INVALID device type %d\n", mode);
+		ret = -EINVAL;
+		goto err_get_sync;
 	}
 
 	ks_pcie_enable_error_irq(ks_pcie);
-- 
2.43.0
Re: [PATCH v2 09/10] PCI: keystone: Exit ks_pcie_probe() for the default switch-case of "mode"
Posted by Manivannan Sadhasivam 1 week, 5 days ago
On Fri, Sep 12, 2025 at 05:46:20PM +0530, Siddharth Vadapalli wrote:
> In ks_pcie_probe(), the switch-case for the "mode" is used to configure
> the PCIe Controller for either Root-Complex or Endpoint mode of operation.
> Prior to the switch-case statement for "mode" an invalid mode will result
> in probe failure only if "dw_pcie_ver_is_ge(pci, 480A)" is true, which
> is the case for the AM654 platform. On the other hand, when that is not
> the case, "ks_pcie_set_mode()" will be invoked, which does not validate
> the mode. As a result, it is possible for the switch-case statement for
> "mode" to receive an invalid mode. Currently, an error message is displayed
> in the "default" case where "mode" is neither "DW_PCIE_RC_TYPE" nor
> "DW_PCIE_EP_TYPE", but the probe succeeds. However, since the configuration
> required for Root-Complex and Endpoint mode have not been performed, the
> Controller is not operational.
> 
> Fix this by exiting "ks_pcie_probe()" with the return value of "-EINVAL"
> in addition to displaying the existing error message.
> 
> Signed-off-by: Siddharth Vadapalli <s-vadapalli@ti.com>

Fixes tag? And probably CC stable since the controller seems to be not
operations without this fix.

- Mani

> ---
> 
> v1: https://lore.kernel.org/r/20250903124505.365913-11-s-vadapalli@ti.com/
> No changes since v1.
> 
>  drivers/pci/controller/dwc/pci-keystone.c | 2 ++
>  1 file changed, 2 insertions(+)
> 
> diff --git a/drivers/pci/controller/dwc/pci-keystone.c b/drivers/pci/controller/dwc/pci-keystone.c
> index 2da9feaaf9ee..e85942b4f6be 100644
> --- a/drivers/pci/controller/dwc/pci-keystone.c
> +++ b/drivers/pci/controller/dwc/pci-keystone.c
> @@ -1414,6 +1414,8 @@ static int ks_pcie_probe(struct platform_device *pdev)
>  		break;
>  	default:
>  		dev_err(dev, "INVALID device type %d\n", mode);
> +		ret = -EINVAL;
> +		goto err_get_sync;
>  	}
>  
>  	ks_pcie_enable_error_irq(ks_pcie);
> -- 
> 2.43.0
> 

-- 
மணிவண்ணன் சதாசிவம்