* [PATCH 0/2] PCI: kirin: cleanup (dev_err_probe() and scoped loop)
@ 2024-07-06 15:07 Javier Carrasco
2024-07-06 15:07 ` [PATCH 1/2] PCI: kirin: use dev_err_probe() in probe error paths Javier Carrasco
2024-07-06 15:07 ` [PATCH 2/2] PCI: kirin: use for_each_available_child_of_node_scoped() Javier Carrasco
0 siblings, 2 replies; 7+ messages in thread
From: Javier Carrasco @ 2024-07-06 15:07 UTC (permalink / raw)
To: Xiaowei Song, Binghui Wang, Lorenzo Pieralisi,
Krzysztof Wilczyński, Rob Herring, Jonathan Cameron,
Bjorn Helgaas
Cc: linux-pci, linux-kernel, Javier Carrasco
This series removes some patterns that require multiple steps to achieve
what single calls can achieve.
Signed-off-by: Javier Carrasco <javier.carrasco.cruz@gmail.com>
---
Javier Carrasco (2):
PCI: kirin: use dev_err_probe() in probe error paths
PCI: kirin: use for_each_available_child_of_node_scoped()
drivers/pci/controller/dwc/pcie-kirin.c | 49 ++++++++++++---------------------
1 file changed, 18 insertions(+), 31 deletions(-)
---
base-commit: 412d6f897b7a494b373986e63a14a94d0fbd0fdb
change-id: 20240705-pcie-kirin-dev_err_probe-0c9035188ff9
Best regards,
--
Javier Carrasco <javier.carrasco.cruz@gmail.com>
^ permalink raw reply [flat|nested] 7+ messages in thread* [PATCH 1/2] PCI: kirin: use dev_err_probe() in probe error paths 2024-07-06 15:07 [PATCH 0/2] PCI: kirin: cleanup (dev_err_probe() and scoped loop) Javier Carrasco @ 2024-07-06 15:07 ` Javier Carrasco 2024-07-06 19:47 ` Christophe JAILLET 2024-07-07 6:53 ` Krzysztof Wilczyński 2024-07-06 15:07 ` [PATCH 2/2] PCI: kirin: use for_each_available_child_of_node_scoped() Javier Carrasco 1 sibling, 2 replies; 7+ messages in thread From: Javier Carrasco @ 2024-07-06 15:07 UTC (permalink / raw) To: Xiaowei Song, Binghui Wang, Lorenzo Pieralisi, Krzysztof Wilczyński, Rob Herring, Jonathan Cameron, Bjorn Helgaas Cc: linux-pci, linux-kernel, Javier Carrasco dev_err_probe() is used in some probe error paths, yet the "dev_err() + return" pattern is used in some others. Use dev_err_probe() in all error paths with that construction. Suggested-by: Jonathan Cameron <Jonathan.Cameron@Huawei.com> Signed-off-by: Javier Carrasco <javier.carrasco.cruz@gmail.com> --- drivers/pci/controller/dwc/pcie-kirin.c | 39 +++++++++++++-------------------- 1 file changed, 15 insertions(+), 24 deletions(-) diff --git a/drivers/pci/controller/dwc/pcie-kirin.c b/drivers/pci/controller/dwc/pcie-kirin.c index 0a29136491b8..da8091f6b22b 100644 --- a/drivers/pci/controller/dwc/pcie-kirin.c +++ b/drivers/pci/controller/dwc/pcie-kirin.c @@ -216,10 +216,8 @@ static int hi3660_pcie_phy_start(struct hi3660_pcie_phy *phy) usleep_range(PIPE_CLK_WAIT_MIN, PIPE_CLK_WAIT_MAX); reg_val = kirin_apb_phy_readl(phy, PCIE_APB_PHY_STATUS0); - if (reg_val & PIPE_CLK_STABLE) { - dev_err(dev, "PIPE clk is not stable\n"); - return -EINVAL; - } + if (reg_val & PIPE_CLK_STABLE) + return dev_err_probe(dev, -EINVAL, "PIPE clk is not stable\n"); return 0; } @@ -371,10 +369,9 @@ static int kirin_pcie_get_gpio_enable(struct kirin_pcie *pcie, if (ret < 0) return 0; - if (ret > MAX_PCI_SLOTS) { - dev_err(dev, "Too many GPIO clock requests!\n"); - return -EINVAL; - } + if (ret > MAX_PCI_SLOTS) + return dev_err_probe(dev, -EINVAL, + "Too many GPIO clock requests!\n"); pcie->n_gpio_clkreq = ret; @@ -421,16 +418,14 @@ static int kirin_pcie_parse_port(struct kirin_pcie *pcie, } pcie->num_slots++; - if (pcie->num_slots > MAX_PCI_SLOTS) { - dev_err(dev, "Too many PCI slots!\n"); - return -EINVAL; - } + if (pcie->num_slots > MAX_PCI_SLOTS) + return dev_err_probe(dev, -EINVAL, + "Too many PCI slots!\n"); ret = of_pci_get_devfn(child); - if (ret < 0) { - dev_err(dev, "failed to parse devfn: %d\n", ret); - return ret; - } + if (ret < 0) + return dev_err_probe(dev, ret, + "failed to parse devfn: %d\n", ret); slot = PCI_SLOT(ret); @@ -729,16 +724,12 @@ static int kirin_pcie_probe(struct platform_device *pdev) struct dw_pcie *pci; int ret; - if (!dev->of_node) { - dev_err(dev, "NULL node\n"); - return -EINVAL; - } + if (!dev->of_node) + return dev_err_probe(dev, -EINVAL, "NULL node\n"); data = of_device_get_match_data(dev); - if (!data) { - dev_err(dev, "OF data missing\n"); - return -EINVAL; - } + if (!data) + return dev_err_probe(dev, -EINVAL, "OF data missing\n"); kirin_pcie = devm_kzalloc(dev, sizeof(struct kirin_pcie), GFP_KERNEL); if (!kirin_pcie) -- 2.40.1 ^ permalink raw reply related [flat|nested] 7+ messages in thread
* Re: [PATCH 1/2] PCI: kirin: use dev_err_probe() in probe error paths 2024-07-06 15:07 ` [PATCH 1/2] PCI: kirin: use dev_err_probe() in probe error paths Javier Carrasco @ 2024-07-06 19:47 ` Christophe JAILLET 2024-07-06 20:12 ` Javier Carrasco 2024-07-07 6:53 ` Krzysztof Wilczyński 1 sibling, 1 reply; 7+ messages in thread From: Christophe JAILLET @ 2024-07-06 19:47 UTC (permalink / raw) To: Javier Carrasco, Xiaowei Song, Binghui Wang, Lorenzo Pieralisi, Krzysztof Wilczyński, Rob Herring, Jonathan Cameron, Bjorn Helgaas Cc: linux-pci, linux-kernel Le 06/07/2024 à 17:07, Javier Carrasco a écrit : > dev_err_probe() is used in some probe error paths, yet the > "dev_err() + return" pattern is used in some others. > > Use dev_err_probe() in all error paths with that construction. > > Suggested-by: Jonathan Cameron <Jonathan.Cameron@Huawei.com> > Signed-off-by: Javier Carrasco <javier.carrasco.cruz@gmail.com> > --- ... > - if (ret < 0) { > - dev_err(dev, "failed to parse devfn: %d\n", ret); > - return ret; > - } > + if (ret < 0) > + return dev_err_probe(dev, ret, > + "failed to parse devfn: %d\n", ret); Hi, with dev_err_probe(), there is no more need to add 'ret' explicitly in the message. CJ ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH 1/2] PCI: kirin: use dev_err_probe() in probe error paths 2024-07-06 19:47 ` Christophe JAILLET @ 2024-07-06 20:12 ` Javier Carrasco 0 siblings, 0 replies; 7+ messages in thread From: Javier Carrasco @ 2024-07-06 20:12 UTC (permalink / raw) To: Christophe JAILLET, Xiaowei Song, Binghui Wang, Lorenzo Pieralisi, Krzysztof Wilczyński, Rob Herring, Jonathan Cameron, Bjorn Helgaas Cc: linux-pci, linux-kernel On 06/07/2024 21:47, Christophe JAILLET wrote: > Le 06/07/2024 à 17:07, Javier Carrasco a écrit : >> dev_err_probe() is used in some probe error paths, yet the >> "dev_err() + return" pattern is used in some others. >> >> Use dev_err_probe() in all error paths with that construction. >> >> Suggested-by: Jonathan Cameron <Jonathan.Cameron@Huawei.com> >> Signed-off-by: Javier Carrasco <javier.carrasco.cruz@gmail.com> >> --- > > ... > >> - if (ret < 0) { >> - dev_err(dev, "failed to parse devfn: %d\n", ret); >> - return ret; >> - } >> + if (ret < 0) >> + return dev_err_probe(dev, ret, >> + "failed to parse devfn: %d\n", ret); > > Hi, > > with dev_err_probe(), there is no more need to add 'ret' explicitly in > the message. > > CJ You are right, thank you. I will remove that from the original message for v2. Best regards, Javier Carrasco ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH 1/2] PCI: kirin: use dev_err_probe() in probe error paths 2024-07-06 15:07 ` [PATCH 1/2] PCI: kirin: use dev_err_probe() in probe error paths Javier Carrasco 2024-07-06 19:47 ` Christophe JAILLET @ 2024-07-07 6:53 ` Krzysztof Wilczyński 2024-07-07 12:19 ` Javier Carrasco 1 sibling, 1 reply; 7+ messages in thread From: Krzysztof Wilczyński @ 2024-07-07 6:53 UTC (permalink / raw) To: Javier Carrasco Cc: Xiaowei Song, Binghui Wang, Lorenzo Pieralisi, Rob Herring, Jonathan Cameron, Bjorn Helgaas, linux-pci, linux-kernel Hello, [...] > Use dev_err_probe() in all error paths with that construction. Thank you for this nice refactoring! Much appreciated. [...] > - if (ret > MAX_PCI_SLOTS) { > - dev_err(dev, "Too many GPIO clock requests!\n"); > - return -EINVAL; > - } > + if (ret > MAX_PCI_SLOTS) > + return dev_err_probe(dev, -EINVAL, > + "Too many GPIO clock requests!\n"); Something that would be nice to get consistent: adjust all the errors capitalisation to make everything consistent, as appropriate, so that it's either all lower-case or title case. A mix of both often looks a bit sloppy. Do you think this would be something you would be willing to clean up in this series too? Especially since we are touching this code now. > - if (!dev->of_node) { > - dev_err(dev, "NULL node\n"); > - return -EINVAL; > - } > + if (!dev->of_node) > + return dev_err_probe(dev, -EINVAL, "NULL node\n"); Perhaps -ENODEV would be more appropriate here? Also, the error message is not the best, as such, I wonder if we could make it better while we are at it, so to speak. Krzysztof ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH 1/2] PCI: kirin: use dev_err_probe() in probe error paths 2024-07-07 6:53 ` Krzysztof Wilczyński @ 2024-07-07 12:19 ` Javier Carrasco 0 siblings, 0 replies; 7+ messages in thread From: Javier Carrasco @ 2024-07-07 12:19 UTC (permalink / raw) To: Krzysztof Wilczyński Cc: Xiaowei Song, Binghui Wang, Lorenzo Pieralisi, Rob Herring, Jonathan Cameron, Bjorn Helgaas, linux-pci, linux-kernel On 07/07/2024 08:53, Krzysztof Wilczyński wrote: > Hello, > > [...] >> Use dev_err_probe() in all error paths with that construction. > > Thank you for this nice refactoring! Much appreciated. > > [...] >> - if (ret > MAX_PCI_SLOTS) { >> - dev_err(dev, "Too many GPIO clock requests!\n"); >> - return -EINVAL; >> - } >> + if (ret > MAX_PCI_SLOTS) >> + return dev_err_probe(dev, -EINVAL, >> + "Too many GPIO clock requests!\n"); > > Something that would be nice to get consistent: adjust all the errors > capitalisation to make everything consistent, as appropriate, so that it's > either all lower-case or title case. A mix of both often looks a bit > sloppy. > > Do you think this would be something you would be willing to clean up in > this series too? Especially since we are touching this code now. > >> - if (!dev->of_node) { >> - dev_err(dev, "NULL node\n"); >> - return -EINVAL; >> - } >> + if (!dev->of_node) >> + return dev_err_probe(dev, -EINVAL, "NULL node\n"); > > Perhaps -ENODEV would be more appropriate here? Also, the error message is > not the best, as such, I wonder if we could make it better while we are at > it, so to speak. > > Krzysztof Sure, I will add that to v2. I have seen that typical error messages in other drivers for this error are "OF node not found", "Device node not found" and "This driver needs device tree". Given that "OF data missing" is used in this driver, I will go for the first one of the list, unless something different is preferred. Best regards, Javier Carrasco ^ permalink raw reply [flat|nested] 7+ messages in thread
* [PATCH 2/2] PCI: kirin: use for_each_available_child_of_node_scoped() 2024-07-06 15:07 [PATCH 0/2] PCI: kirin: cleanup (dev_err_probe() and scoped loop) Javier Carrasco 2024-07-06 15:07 ` [PATCH 1/2] PCI: kirin: use dev_err_probe() in probe error paths Javier Carrasco @ 2024-07-06 15:07 ` Javier Carrasco 1 sibling, 0 replies; 7+ messages in thread From: Javier Carrasco @ 2024-07-06 15:07 UTC (permalink / raw) To: Xiaowei Song, Binghui Wang, Lorenzo Pieralisi, Krzysztof Wilczyński, Rob Herring, Jonathan Cameron, Bjorn Helgaas Cc: linux-pci, linux-kernel, Javier Carrasco The scoped version of the macro automatically decrements the child node refcount on early exits, removing the need for the `goto` and `of_node_put()`. Signed-off-by: Javier Carrasco <javier.carrasco.cruz@gmail.com> --- drivers/pci/controller/dwc/pcie-kirin.c | 10 +++------- 1 file changed, 3 insertions(+), 7 deletions(-) diff --git a/drivers/pci/controller/dwc/pcie-kirin.c b/drivers/pci/controller/dwc/pcie-kirin.c index da8091f6b22b..ac0aacb11489 100644 --- a/drivers/pci/controller/dwc/pcie-kirin.c +++ b/drivers/pci/controller/dwc/pcie-kirin.c @@ -447,7 +447,7 @@ static long kirin_pcie_get_resource(struct kirin_pcie *kirin_pcie, struct platform_device *pdev) { struct device *dev = &pdev->dev; - struct device_node *child, *node = dev->of_node; + struct device_node *node = dev->of_node; void __iomem *apb_base; int ret; @@ -472,17 +472,13 @@ static long kirin_pcie_get_resource(struct kirin_pcie *kirin_pcie, return ret; /* Parse OF children */ - for_each_available_child_of_node(node, child) { + for_each_available_child_of_node_scoped(node, child) { ret = kirin_pcie_parse_port(kirin_pcie, pdev, child); if (ret) - goto put_node; + return ret; } return 0; - -put_node: - of_node_put(child); - return ret; } static void kirin_pcie_sideband_dbi_w_mode(struct kirin_pcie *kirin_pcie, -- 2.40.1 ^ permalink raw reply related [flat|nested] 7+ messages in thread
end of thread, other threads:[~2024-07-07 12:19 UTC | newest] Thread overview: 7+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2024-07-06 15:07 [PATCH 0/2] PCI: kirin: cleanup (dev_err_probe() and scoped loop) Javier Carrasco 2024-07-06 15:07 ` [PATCH 1/2] PCI: kirin: use dev_err_probe() in probe error paths Javier Carrasco 2024-07-06 19:47 ` Christophe JAILLET 2024-07-06 20:12 ` Javier Carrasco 2024-07-07 6:53 ` Krzysztof Wilczyński 2024-07-07 12:19 ` Javier Carrasco 2024-07-06 15:07 ` [PATCH 2/2] PCI: kirin: use for_each_available_child_of_node_scoped() Javier Carrasco
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox