linux-arm-kernel.lists.infradead.org archive mirror
 help / color / mirror / Atom feed
* [PATCH v2 0/5] clk: imx: imx8: Fix some error handling paths
@ 2023-09-14 20:31 Christophe JAILLET
  2023-09-14 20:31 ` [PATCH v2 1/5] clk: imx: imx8: Fix an error handling path in clk_imx_acm_attach_pm_domains() Christophe JAILLET
                   ` (6 more replies)
  0 siblings, 7 replies; 8+ messages in thread
From: Christophe JAILLET @ 2023-09-14 20:31 UTC (permalink / raw)
  To: abelvesa, peng.fan, mturquette, sboyd, shawnguo, s.hauer, kernel,
	festevam, linux-imx, shengjiu.wang
  Cc: linux-clk, linux-arm-kernel, linux-kernel, kernel-janitors,
	Christophe JAILLET

This serie fix some error handling paths. It is split in different patches to
ease review because the issues are unrelated and the proposed fixes are maybe
wrong (I don't have the hardware to test anything)

Some of v1 patches had been incorrectly hand modified. There was a extra ')' in
patch 3 and 4 that prevented the merge.

This v2 is a cleanly regenarated serie, compile tested at each step. This
time, git format-patch did all the work and the patches have NOT been hand
modified afterwards.


Some log messages have also been slightly tweaked.
R-b tags have been added.

v1: https://lore.kernel.org/all/cover.1693126687.git.christophe.jaillet@wanadoo.fr/

Christophe JAILLET (5):
  clk: imx: imx8: Fix an error handling path in
    clk_imx_acm_attach_pm_domains()
  clk: imx: imx8: Fix an error handling path if
    devm_clk_hw_register_mux_parent_data_table() fails
  clk: imx: imx8: Fix an error handling path in imx8_acm_clk_probe()
  clk: imx: imx8: Add a message in case of
    devm_clk_hw_register_mux_parent_data_table() error
  clk: imx: imx8: Simplify clk_imx_acm_detach_pm_domains()

 drivers/clk/imx/clk-imx8-acm.c | 27 +++++++++++++++------------
 1 file changed, 15 insertions(+), 12 deletions(-)

-- 
2.34.1


_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

^ permalink raw reply	[flat|nested] 8+ messages in thread

* [PATCH v2 1/5] clk: imx: imx8: Fix an error handling path in clk_imx_acm_attach_pm_domains()
  2023-09-14 20:31 [PATCH v2 0/5] clk: imx: imx8: Fix some error handling paths Christophe JAILLET
@ 2023-09-14 20:31 ` Christophe JAILLET
  2023-09-14 20:31 ` [PATCH v2 2/5] clk: imx: imx8: Fix an error handling path if devm_clk_hw_register_mux_parent_data_table() fails Christophe JAILLET
                   ` (5 subsequent siblings)
  6 siblings, 0 replies; 8+ messages in thread
From: Christophe JAILLET @ 2023-09-14 20:31 UTC (permalink / raw)
  To: abelvesa, peng.fan, mturquette, sboyd, shawnguo, s.hauer, kernel,
	festevam, linux-imx, shengjiu.wang
  Cc: linux-clk, linux-arm-kernel, linux-kernel, kernel-janitors,
	Christophe JAILLET

If a dev_pm_domain_attach_by_id() call fails, previously allocated
resources need to be released.

Fixes: d3a0946d7ac9 ("clk: imx: imx8: add audio clock mux driver")
Reviewed-by: Peng Fan <peng.fan@nxp.com>
Signed-off-by: Christophe JAILLET <christophe.jaillet@wanadoo.fr>
---
 drivers/clk/imx/clk-imx8-acm.c | 6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)

diff --git a/drivers/clk/imx/clk-imx8-acm.c b/drivers/clk/imx/clk-imx8-acm.c
index 1e82f72b75c6..87025a6772d0 100644
--- a/drivers/clk/imx/clk-imx8-acm.c
+++ b/drivers/clk/imx/clk-imx8-acm.c
@@ -279,8 +279,10 @@ static int clk_imx_acm_attach_pm_domains(struct device *dev,
 
 	for (i = 0; i < dev_pm->num_domains; i++) {
 		dev_pm->pd_dev[i] = dev_pm_domain_attach_by_id(dev, i);
-		if (IS_ERR(dev_pm->pd_dev[i]))
-			return PTR_ERR(dev_pm->pd_dev[i]);
+		if (IS_ERR(dev_pm->pd_dev[i])) {
+			ret = PTR_ERR(dev_pm->pd_dev[i]);
+			goto detach_pm;
+		}
 
 		dev_pm->pd_dev_link[i] = device_link_add(dev,
 							 dev_pm->pd_dev[i],
-- 
2.34.1


_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

^ permalink raw reply related	[flat|nested] 8+ messages in thread

* [PATCH v2 2/5] clk: imx: imx8: Fix an error handling path if devm_clk_hw_register_mux_parent_data_table() fails
  2023-09-14 20:31 [PATCH v2 0/5] clk: imx: imx8: Fix some error handling paths Christophe JAILLET
  2023-09-14 20:31 ` [PATCH v2 1/5] clk: imx: imx8: Fix an error handling path in clk_imx_acm_attach_pm_domains() Christophe JAILLET
@ 2023-09-14 20:31 ` Christophe JAILLET
  2023-09-14 20:31 ` [PATCH v2 3/5] clk: imx: imx8: Fix an error handling path in imx8_acm_clk_probe() Christophe JAILLET
                   ` (4 subsequent siblings)
  6 siblings, 0 replies; 8+ messages in thread
From: Christophe JAILLET @ 2023-09-14 20:31 UTC (permalink / raw)
  To: abelvesa, peng.fan, mturquette, sboyd, shawnguo, s.hauer, kernel,
	festevam, linux-imx, shengjiu.wang
  Cc: linux-clk, linux-arm-kernel, linux-kernel, kernel-janitors,
	Christophe JAILLET

If a devm_clk_hw_register_mux_parent_data_table() call fails, it is likely
that the probe should fail with an error code.

Set 'ret' before leaving the function.

Fixes: d3a0946d7ac9 ("clk: imx: imx8: add audio clock mux driver")
Reviewed-by: Peng Fan <peng.fan@nxp.com>
Signed-off-by: Christophe JAILLET <christophe.jaillet@wanadoo.fr>
---
 drivers/clk/imx/clk-imx8-acm.c | 1 +
 1 file changed, 1 insertion(+)

diff --git a/drivers/clk/imx/clk-imx8-acm.c b/drivers/clk/imx/clk-imx8-acm.c
index 87025a6772d0..73b3b5354951 100644
--- a/drivers/clk/imx/clk-imx8-acm.c
+++ b/drivers/clk/imx/clk-imx8-acm.c
@@ -373,6 +373,7 @@ static int imx8_acm_clk_probe(struct platform_device *pdev)
 										sels[i].shift, sels[i].width,
 										0, NULL, NULL);
 		if (IS_ERR(hws[sels[i].clkid])) {
+			ret = PTR_ERR(hws[sels[i].clkid]);
 			pm_runtime_disable(&pdev->dev);
 			goto err_clk_register;
 		}
-- 
2.34.1


_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

^ permalink raw reply related	[flat|nested] 8+ messages in thread

* [PATCH v2 3/5] clk: imx: imx8: Fix an error handling path in imx8_acm_clk_probe()
  2023-09-14 20:31 [PATCH v2 0/5] clk: imx: imx8: Fix some error handling paths Christophe JAILLET
  2023-09-14 20:31 ` [PATCH v2 1/5] clk: imx: imx8: Fix an error handling path in clk_imx_acm_attach_pm_domains() Christophe JAILLET
  2023-09-14 20:31 ` [PATCH v2 2/5] clk: imx: imx8: Fix an error handling path if devm_clk_hw_register_mux_parent_data_table() fails Christophe JAILLET
@ 2023-09-14 20:31 ` Christophe JAILLET
  2023-09-14 20:31 ` [PATCH v2 4/5] clk: imx: imx8: Add a message in case of devm_clk_hw_register_mux_parent_data_table() error Christophe JAILLET
                   ` (3 subsequent siblings)
  6 siblings, 0 replies; 8+ messages in thread
From: Christophe JAILLET @ 2023-09-14 20:31 UTC (permalink / raw)
  To: abelvesa, peng.fan, mturquette, sboyd, shawnguo, s.hauer, kernel,
	festevam, linux-imx, shengjiu.wang
  Cc: linux-clk, linux-arm-kernel, linux-kernel, kernel-janitors,
	Christophe JAILLET

If an error occurs after a successful clk_imx_acm_attach_pm_domains() call,
it must be undone.

Add an explicit error handling path, re-order the code and add the missing
clk_imx_acm_detach_pm_domains() call.

Fixes: d3a0946d7ac9 ("clk: imx: imx8: add audio clock mux driver")
Reviewed-by: Peng Fan <peng.fan@nxp.com>
Signed-off-by: Christophe JAILLET <christophe.jaillet@wanadoo.fr>
---
 drivers/clk/imx/clk-imx8-acm.c | 9 ++++++---
 1 file changed, 6 insertions(+), 3 deletions(-)

diff --git a/drivers/clk/imx/clk-imx8-acm.c b/drivers/clk/imx/clk-imx8-acm.c
index 73b3b5354951..1c95ae905eec 100644
--- a/drivers/clk/imx/clk-imx8-acm.c
+++ b/drivers/clk/imx/clk-imx8-acm.c
@@ -374,7 +374,6 @@ static int imx8_acm_clk_probe(struct platform_device *pdev)
 										0, NULL, NULL);
 		if (IS_ERR(hws[sels[i].clkid])) {
 			ret = PTR_ERR(hws[sels[i].clkid]);
-			pm_runtime_disable(&pdev->dev);
 			goto err_clk_register;
 		}
 	}
@@ -384,12 +383,16 @@ static int imx8_acm_clk_probe(struct platform_device *pdev)
 	ret = devm_of_clk_add_hw_provider(dev, of_clk_hw_onecell_get, clk_hw_data);
 	if (ret < 0) {
 		dev_err(dev, "failed to register hws for ACM\n");
-		pm_runtime_disable(&pdev->dev);
+		goto err_clk_register;
 	}
 
-err_clk_register:
+	pm_runtime_put_sync(&pdev->dev);
+	return 0;
 
+err_clk_register:
 	pm_runtime_put_sync(&pdev->dev);
+	pm_runtime_disable(&pdev->dev);
+	clk_imx_acm_detach_pm_domains(&pdev->dev, &priv->dev_pm);
 
 	return ret;
 }
-- 
2.34.1


_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

^ permalink raw reply related	[flat|nested] 8+ messages in thread

* [PATCH v2 4/5] clk: imx: imx8: Add a message in case of devm_clk_hw_register_mux_parent_data_table() error
  2023-09-14 20:31 [PATCH v2 0/5] clk: imx: imx8: Fix some error handling paths Christophe JAILLET
                   ` (2 preceding siblings ...)
  2023-09-14 20:31 ` [PATCH v2 3/5] clk: imx: imx8: Fix an error handling path in imx8_acm_clk_probe() Christophe JAILLET
@ 2023-09-14 20:31 ` Christophe JAILLET
  2023-09-14 20:31 ` [PATCH v2 5/5] clk: imx: imx8: Simplify clk_imx_acm_detach_pm_domains() Christophe JAILLET
                   ` (2 subsequent siblings)
  6 siblings, 0 replies; 8+ messages in thread
From: Christophe JAILLET @ 2023-09-14 20:31 UTC (permalink / raw)
  To: abelvesa, peng.fan, mturquette, sboyd, shawnguo, s.hauer, kernel,
	festevam, linux-imx, shengjiu.wang
  Cc: linux-clk, linux-arm-kernel, linux-kernel, kernel-janitors,
	Christophe JAILLET

If devm_clk_hw_register_mux_parent_data_table() fails, we branch to the
error handling path and imx_check_clk_hws() is never called.

Actually, imx_check_clk_hws() is a no-op because values in 'hws' are either
valid, either NULL.

Move the call to imx_check_clk_hws() in the error handling path, so that
an error is logged.

Fixes: d3a0946d7ac9 ("clk: imx: imx8: add audio clock mux driver")
Reviewed-by: Peng Fan <peng.fan@nxp.com>
Signed-off-by: Christophe JAILLET <christophe.jaillet@wanadoo.fr>
---
 drivers/clk/imx/clk-imx8-acm.c | 3 +--
 1 file changed, 1 insertion(+), 2 deletions(-)

diff --git a/drivers/clk/imx/clk-imx8-acm.c b/drivers/clk/imx/clk-imx8-acm.c
index 1c95ae905eec..c744fb78bb44 100644
--- a/drivers/clk/imx/clk-imx8-acm.c
+++ b/drivers/clk/imx/clk-imx8-acm.c
@@ -374,12 +374,11 @@ static int imx8_acm_clk_probe(struct platform_device *pdev)
 										0, NULL, NULL);
 		if (IS_ERR(hws[sels[i].clkid])) {
 			ret = PTR_ERR(hws[sels[i].clkid]);
+			imx_check_clk_hws(hws, IMX_ADMA_ACM_CLK_END);
 			goto err_clk_register;
 		}
 	}
 
-	imx_check_clk_hws(hws, IMX_ADMA_ACM_CLK_END);
-
 	ret = devm_of_clk_add_hw_provider(dev, of_clk_hw_onecell_get, clk_hw_data);
 	if (ret < 0) {
 		dev_err(dev, "failed to register hws for ACM\n");
-- 
2.34.1


_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

^ permalink raw reply related	[flat|nested] 8+ messages in thread

* [PATCH v2 5/5] clk: imx: imx8: Simplify clk_imx_acm_detach_pm_domains()
  2023-09-14 20:31 [PATCH v2 0/5] clk: imx: imx8: Fix some error handling paths Christophe JAILLET
                   ` (3 preceding siblings ...)
  2023-09-14 20:31 ` [PATCH v2 4/5] clk: imx: imx8: Add a message in case of devm_clk_hw_register_mux_parent_data_table() error Christophe JAILLET
@ 2023-09-14 20:31 ` Christophe JAILLET
  2023-09-15  7:00 ` [PATCH v2 0/5] clk: imx: imx8: Fix some error handling paths S.J. Wang
  2023-10-04  8:24 ` Abel Vesa
  6 siblings, 0 replies; 8+ messages in thread
From: Christophe JAILLET @ 2023-09-14 20:31 UTC (permalink / raw)
  To: abelvesa, peng.fan, mturquette, sboyd, shawnguo, s.hauer, kernel,
	festevam, linux-imx, shengjiu.wang
  Cc: linux-clk, linux-arm-kernel, linux-kernel, kernel-janitors,
	Christophe JAILLET

The return value of clk_imx_acm_detach_pm_domains() is never used.
Simplify the code and turn it into a void function.

Reviewed-by: Peng Fan <peng.fan@nxp.com>
Signed-off-by: Christophe JAILLET <christophe.jaillet@wanadoo.fr>
---
 drivers/clk/imx/clk-imx8-acm.c | 8 +++-----
 1 file changed, 3 insertions(+), 5 deletions(-)

diff --git a/drivers/clk/imx/clk-imx8-acm.c b/drivers/clk/imx/clk-imx8-acm.c
index c744fb78bb44..735b08296cc8 100644
--- a/drivers/clk/imx/clk-imx8-acm.c
+++ b/drivers/clk/imx/clk-imx8-acm.c
@@ -310,20 +310,18 @@ static int clk_imx_acm_attach_pm_domains(struct device *dev,
  * @dev: deivice pointer
  * @dev_pm: multi power domain for device
  */
-static int clk_imx_acm_detach_pm_domains(struct device *dev,
-					 struct clk_imx_acm_pm_domains *dev_pm)
+static void clk_imx_acm_detach_pm_domains(struct device *dev,
+					  struct clk_imx_acm_pm_domains *dev_pm)
 {
 	int i;
 
 	if (dev_pm->num_domains <= 1)
-		return 0;
+		return;
 
 	for (i = 0; i < dev_pm->num_domains; i++) {
 		device_link_del(dev_pm->pd_dev_link[i]);
 		dev_pm_domain_detach(dev_pm->pd_dev[i], false);
 	}
-
-	return 0;
 }
 
 static int imx8_acm_clk_probe(struct platform_device *pdev)
-- 
2.34.1


_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

^ permalink raw reply related	[flat|nested] 8+ messages in thread

* RE: [PATCH v2 0/5] clk: imx: imx8: Fix some error handling paths
  2023-09-14 20:31 [PATCH v2 0/5] clk: imx: imx8: Fix some error handling paths Christophe JAILLET
                   ` (4 preceding siblings ...)
  2023-09-14 20:31 ` [PATCH v2 5/5] clk: imx: imx8: Simplify clk_imx_acm_detach_pm_domains() Christophe JAILLET
@ 2023-09-15  7:00 ` S.J. Wang
  2023-10-04  8:24 ` Abel Vesa
  6 siblings, 0 replies; 8+ messages in thread
From: S.J. Wang @ 2023-09-15  7:00 UTC (permalink / raw)
  To: Christophe JAILLET, abelvesa@kernel.org, Peng Fan,
	mturquette@baylibre.com, sboyd@kernel.org, shawnguo@kernel.org,
	s.hauer@pengutronix.de, kernel@pengutronix.de, festevam@gmail.com,
	dl-linux-imx
  Cc: linux-clk@vger.kernel.org, linux-arm-kernel@lists.infradead.org,
	linux-kernel@vger.kernel.org, kernel-janitors@vger.kernel.org


>
> This serie fix some error handling paths. It is split in different patches to ease
> review because the issues are unrelated and the proposed fixes are maybe
> wrong (I don't have the hardware to test anything)
>
> Some of v1 patches had been incorrectly hand modified. There was a extra ')'
> in patch 3 and 4 that prevented the merge.
>
> This v2 is a cleanly regenarated serie, compile tested at each step. This time,
> git format-patch did all the work and the patches have NOT been hand
> modified afterwards.
>
>
> Some log messages have also been slightly tweaked.
> R-b tags have been added.


Reviewed-by: Shengjiu Wang <shengjiu.wang@nxp.com>
Tested-by: Shengjiu Wang <shengjiu.wang@nxp.com>

Best regards
Wang Shengjiu
>
> v1:
> https://lore.k/
> ernel.org%2Fall%2Fcover.1693126687.git.christophe.jaillet%40wanadoo.fr%2
> F&data=05%7C01%7Cshengjiu.wang%40nxp.com%7C5134bf2d7d924e4ca9ae
> 08dbb561881c%7C686ea1d3bc2b4c6fa92cd99c5c301635%7C0%7C0%7C6383
> 03202724496811%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiL
> CJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C3000%7C%7C%7C&s
> data=f0SvmM0H1Ki%2Bp3Qqsya8u87CbVowC4bXym2i%2FSBCgJc%3D&reser
> ved=0
>
> Christophe JAILLET (5):
>   clk: imx: imx8: Fix an error handling path in
>     clk_imx_acm_attach_pm_domains()
>   clk: imx: imx8: Fix an error handling path if
>     devm_clk_hw_register_mux_parent_data_table() fails
>   clk: imx: imx8: Fix an error handling path in imx8_acm_clk_probe()
>   clk: imx: imx8: Add a message in case of
>     devm_clk_hw_register_mux_parent_data_table() error
>   clk: imx: imx8: Simplify clk_imx_acm_detach_pm_domains()
>
>  drivers/clk/imx/clk-imx8-acm.c | 27 +++++++++++++++------------
>  1 file changed, 15 insertions(+), 12 deletions(-)
>
> --
> 2.34.1


_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [PATCH v2 0/5] clk: imx: imx8: Fix some error handling paths
  2023-09-14 20:31 [PATCH v2 0/5] clk: imx: imx8: Fix some error handling paths Christophe JAILLET
                   ` (5 preceding siblings ...)
  2023-09-15  7:00 ` [PATCH v2 0/5] clk: imx: imx8: Fix some error handling paths S.J. Wang
@ 2023-10-04  8:24 ` Abel Vesa
  6 siblings, 0 replies; 8+ messages in thread
From: Abel Vesa @ 2023-10-04  8:24 UTC (permalink / raw)
  To: abelvesa, peng.fan, mturquette, sboyd, shawnguo, s.hauer, kernel,
	festevam, linux-imx, shengjiu.wang, Christophe JAILLET
  Cc: linux-clk, linux-arm-kernel, linux-kernel, kernel-janitors


On Thu, 14 Sep 2023 22:31:01 +0200, Christophe JAILLET wrote:
> This serie fix some error handling paths. It is split in different patches to
> ease review because the issues are unrelated and the proposed fixes are maybe
> wrong (I don't have the hardware to test anything)
> 
> Some of v1 patches had been incorrectly hand modified. There was a extra ')' in
> patch 3 and 4 that prevented the merge.
> 
> [...]

Applied, thanks!

[1/5] clk: imx: imx8: Fix an error handling path in clk_imx_acm_attach_pm_domains()
      commit: 156624e2cf815ce98fad5a24f04370f4459ae6f4
[2/5] clk: imx: imx8: Fix an error handling path if devm_clk_hw_register_mux_parent_data_table() fails
      commit: 9a0108acdb1b6189dcc8f9318edfc6b7e0281df4
[3/5] clk: imx: imx8: Fix an error handling path in imx8_acm_clk_probe()
      commit: e9a164e367f039629fd5466a79b9f495646e1261
[4/5] clk: imx: imx8: Add a message in case of devm_clk_hw_register_mux_parent_data_table() error
      commit: ef23d44b7fcbd19773dcedcb50ca2f625107604f
[5/5] clk: imx: imx8: Simplify clk_imx_acm_detach_pm_domains()
      commit: 3af29a89de2c6e49737a1201b7d6fd5ad3f635a4

Best regards,
-- 
Abel Vesa <abel.vesa@linaro.org>

_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

^ permalink raw reply	[flat|nested] 8+ messages in thread

end of thread, other threads:[~2023-10-04  8:25 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2023-09-14 20:31 [PATCH v2 0/5] clk: imx: imx8: Fix some error handling paths Christophe JAILLET
2023-09-14 20:31 ` [PATCH v2 1/5] clk: imx: imx8: Fix an error handling path in clk_imx_acm_attach_pm_domains() Christophe JAILLET
2023-09-14 20:31 ` [PATCH v2 2/5] clk: imx: imx8: Fix an error handling path if devm_clk_hw_register_mux_parent_data_table() fails Christophe JAILLET
2023-09-14 20:31 ` [PATCH v2 3/5] clk: imx: imx8: Fix an error handling path in imx8_acm_clk_probe() Christophe JAILLET
2023-09-14 20:31 ` [PATCH v2 4/5] clk: imx: imx8: Add a message in case of devm_clk_hw_register_mux_parent_data_table() error Christophe JAILLET
2023-09-14 20:31 ` [PATCH v2 5/5] clk: imx: imx8: Simplify clk_imx_acm_detach_pm_domains() Christophe JAILLET
2023-09-15  7:00 ` [PATCH v2 0/5] clk: imx: imx8: Fix some error handling paths S.J. Wang
2023-10-04  8:24 ` Abel Vesa

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).