mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
From: Samuel Holland <samuel@sholland.org>
To: "Heiko Stübner" <heiko@sntech.de>, "Chen-Yu Tsai" <wens@csie.org>,
	"Jernej Skrabec" <jernej.skrabec@gmail.com>
Cc: linux-arm-kernel@lists.infradead.org,
	Arnd Bergmann <arnd@arndb.de>,
	Hans de Goede <hdegoede@redhat.com>,
	Icenowy Zheng <icenowy@aosc.io>,
	Krzysztof Kozlowski <krzysztof.kozlowski+dt@linaro.org>,
	Maxime Ripard <mripard@kernel.org>,
	Rob Herring <robh+dt@kernel.org>,
	devicetree@vger.kernel.org, linux-kernel@vger.kernel.org,
	linux-sunxi@lists.linux.dev
Subject: Re: [PATCH v2 05/10] soc: sunxi: sram: Fix probe function ordering issues
Date: Mon, 15 Aug 2022 19:05:12 -0500	[thread overview]
Message-ID: <1a35fbd8-201a-1391-64de-da2b89f3db3f@sholland.org> (raw)
In-Reply-To: <6807552.18pcnM708K@diego>

On 8/15/22 9:06 AM, Heiko Stübner wrote:
> Am Montag, 15. August 2022, 06:12:42 CEST schrieb Samuel Holland:
>> Errors from debugfs are intended to be non-fatal, and should not prevent
>> the driver from probing.
>>
>> Since debugfs file creation is treated as infallible, move it below the
>> parts of the probe function that can fail. This prevents an error
>> elsewhere in the probe function from causing the file to leak. Do the
>> same for the call to of_platform_populate().
>>
>> Finally, checkpatch suggests an octal literal for the file permissions.
>>
>> Fixes: 4af34b572a85 ("drivers: soc: sunxi: Introduce SoC driver to map SRAMs")
>> Fixes: 5828729bebbb ("soc: sunxi: export a regmap for EMAC clock reg on A64")
>> Reviewed-by: Jernej Skrabec <jernej.skrabec@gmail.com>
>> Signed-off-by: Samuel Holland <samuel@sholland.org>
> 
> Tested-by: Heiko Stuebner <heiko@sntech.de>
> 
> but one thing below
> 
>> ---
>>
>> (no changes since v1)
>>
>>  drivers/soc/sunxi/sunxi_sram.c | 13 +++++--------
>>  1 file changed, 5 insertions(+), 8 deletions(-)
>>
>> diff --git a/drivers/soc/sunxi/sunxi_sram.c b/drivers/soc/sunxi/sunxi_sram.c
>> index a858a37fcdd4..52d07bed7664 100644
>> --- a/drivers/soc/sunxi/sunxi_sram.c
>> +++ b/drivers/soc/sunxi/sunxi_sram.c
>> @@ -332,9 +332,9 @@ static struct regmap_config sunxi_sram_emac_clock_regmap = {
>>  
>>  static int __init sunxi_sram_probe(struct platform_device *pdev)
>>  {
>> -	struct dentry *d;
>>  	struct regmap *emac_clock;
>>  	const struct sunxi_sramc_variant *variant;
>> +	struct device *dev = &pdev->dev;
>>  
>>  	sram_dev = &pdev->dev;
>>  
>> @@ -346,13 +346,6 @@ static int __init sunxi_sram_probe(struct platform_device *pdev)
>>  	if (IS_ERR(base))
>>  		return PTR_ERR(base);
>>  
>> -	of_platform_populate(pdev->dev.of_node, NULL, NULL, &pdev->dev);
>> -
>> -	d = debugfs_create_file("sram", S_IRUGO, NULL, NULL,
>> -				&sunxi_sram_fops);
>> -	if (!d)
>> -		return -ENOMEM;
>> -
>>  	if (variant->num_emac_clocks > 0) {
>>  		emac_clock = devm_regmap_init_mmio(&pdev->dev, base,
>>  						   &sunxi_sram_emac_clock_regmap);
>> @@ -361,6 +354,10 @@ static int __init sunxi_sram_probe(struct platform_device *pdev)
>>  			return PTR_ERR(emac_clock);
>>  	}
>>  
>> +	of_platform_populate(dev->of_node, NULL, NULL, dev);
> 
> hmm, of_platform_populate() can actually fail [0] it just looks a bit like
> sunxi driver seem to ignore that by {chance, design?} [1] .
> 
> So I guess this might want to have handling for probably unlikely
> possible errors instead?

Strictly speaking, neither this driver nor the DE2 bus driver depend on any of
the child nodes having a platform device present or a driver attached. So
failing to populate the child devices should not necessarily prevent this driver
from probing. Possibly it deserves a dev_warn(), but...

I don't think of_platform_populate() can actually fail when passed a valid node.
of_platform_bus_create() calls itself recursively, but otherwise always returns 0.

Regards,
Samuel

> Heiko
> 
> [0] https://elixir.bootlin.com/linux/latest/source/drivers/of/platform.c#L463
> [1] https://elixir.bootlin.com/linux/latest/source/drivers/bus/sun50i-de2.c#L22
>> +
>> +	debugfs_create_file("sram", 0444, NULL, NULL, &sunxi_sram_fops);
>> +
>>  	return 0;
>>  }

  reply	other threads:[~2022-08-16  6:17 UTC|newest]

Thread overview: 27+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-08-15  4:12 [PATCH v2 00/10] soc: sunxi: sram: Fixes and D1 support Samuel Holland
2022-08-15  4:12 ` [PATCH v2 01/10] dt-bindings: sram: sunxi-sram: Clean up the compatible lists Samuel Holland
2022-08-15 12:15   ` Andre Przywara
2022-08-15 13:54   ` Heiko Stübner
2022-08-16  5:55   ` Krzysztof Kozlowski
2022-08-15  4:12 ` [PATCH v2 02/10] dt-bindings: sram: sunxi-sram: Add D1 compatible string Samuel Holland
2022-08-15 13:55   ` Heiko Stübner
2022-08-16  7:46   ` Krzysztof Kozlowski
2022-08-15  4:12 ` [PATCH v2 03/10] soc: sunxi: sram: Actually claim SRAM regions Samuel Holland
2022-08-15 13:56   ` Heiko Stübner
2022-08-15  4:12 ` [PATCH v2 04/10] soc: sunxi: sram: Prevent the driver from being unbound Samuel Holland
2022-08-15 14:00   ` Heiko Stübner
2022-08-15  4:12 ` [PATCH v2 05/10] soc: sunxi: sram: Fix probe function ordering issues Samuel Holland
2022-08-15 14:06   ` Heiko Stübner
2022-08-16  0:05     ` Samuel Holland [this message]
2022-08-15  4:12 ` [PATCH v2 06/10] soc: sunxi: sram: Fix debugfs info for A64 SRAM C Samuel Holland
2022-08-15  4:12 ` [PATCH v2 07/10] soc: sunxi: sram: Return void from the release function Samuel Holland
2022-08-15 14:09   ` Heiko Stübner
2022-08-15  4:12 ` [PATCH v2 08/10] soc: sunxi: sram: Save a pointer to the OF match data Samuel Holland
2022-08-15 14:10   ` Heiko Stübner
2022-08-15  4:12 ` [PATCH v2 09/10] soc: sunxi: sram: Export the LDO control register Samuel Holland
2022-08-15 14:13   ` Heiko Stübner
2022-08-15  4:12 ` [PATCH v2 10/10] soc: sunxi: sram: Add support for the D1 system control Samuel Holland
2022-08-15 14:14   ` Heiko Stübner
2022-08-15  6:58 ` [PATCH v2 00/10] soc: sunxi: sram: Fixes and D1 support Conor.Dooley
2022-08-15  6:59   ` Conor.Dooley
2022-09-18 21:49 ` Jernej Škrabec

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1a35fbd8-201a-1391-64de-da2b89f3db3f@sholland.org \
    --to=samuel@sholland.org \
    --cc=arnd@arndb.de \
    --cc=devicetree@vger.kernel.org \
    --cc=hdegoede@redhat.com \
    --cc=heiko@sntech.de \
    --cc=icenowy@aosc.io \
    --cc=jernej.skrabec@gmail.com \
    --cc=krzysztof.kozlowski+dt@linaro.org \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-sunxi@lists.linux.dev \
    --cc=mripard@kernel.org \
    --cc=robh+dt@kernel.org \
    --cc=wens@csie.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox

all inboxes | Powered by JetHome®