Re: [PATCH v23 09/13] mfd: psci-mfd: Add psci-reboot-mode child cell

Shivendra Pratap <[email protected]>
Newsgroups dev.linux.lists.mfd,dev.linux.lists.sashiko-reviews,org.kernel.vger.linux-devicetree
Message-ID <[email protected]>

On 14-07-2026 22:54, [email protected] wrote:
> Thank you for your contribution! Sashiko AI review found 1 potential issue(s) to consider:
> - [High] The probe function `psci_mfd_probe` ignores the return value of `devm_mfd_add_devices()` for the `psci_reboot_mode_cell` child device, violating the MFD subsystem guideline requiring probe failures to be propagated and unwound.
> --
> 
> --- Patch [9]: [PATCH v23 09/13] mfd: psci-mfd: Add psci-reboot-mode child cell ---
> commit 73724460c58fad980d9dd8ef39b9485acffad30e
> Author: Shivendra Pratap <[email protected]>
> 
> mfd: psci-mfd: Add psci-reboot-mode child cell
> 
> This commit adds the psci-reboot-mode child cell to the psci-mfd driver.
> It retrieves the reboot-mode firmware node and registers the new cell
> using devm_mfd_add_devices if the node is present.
> 
>> diff --git a/drivers/mfd/psci-mfd.c b/drivers/mfd/psci-mfd.c
>> index 7affd6bb09dd8..8c6b78ac471bf 100644
>> --- a/drivers/mfd/psci-mfd.c
>> +++ b/drivers/mfd/psci-mfd.c
> 
> [ ... ]
> 
>> @@ -14,10 +15,37 @@ static const struct mfd_cell psci_cells[] = {
>>   	},
>>   };
>>   
>> +static const struct mfd_cell psci_reboot_mode_cell[] = {
>> +	{
>> +		.name = "psci-reboot-mode",
>> +		.named_fwnode = "reboot-mode",
>> +	},
>> +};
>> +
>>   static int psci_mfd_probe(struct platform_device *pdev)
>>   {
>> -	return devm_mfd_add_devices(&pdev->dev, PLATFORM_DEVID_AUTO, psci_cells,
>> +	struct fwnode_handle *fwnode;
>> +	int ret;
>> +
>> +	ret = devm_mfd_add_devices(&pdev->dev, PLATFORM_DEVID_AUTO, psci_cells,
>>   				   ARRAY_SIZE(psci_cells), NULL, 0, NULL);
>> +	if (ret)
>> +		return ret;
>> +
>> +	fwnode = device_get_named_child_node(&pdev->dev, "reboot-mode");
>> +	if (!fwnode)
>> +		return 0;
>> +
>> +	fwnode_handle_put(fwnode);
>> +
>> +	ret = devm_mfd_add_devices(&pdev->dev, PLATFORM_DEVID_AUTO,
>> +				   psci_reboot_mode_cell,
>> +				   ARRAY_SIZE(psci_reboot_mode_cell),
>> +				   NULL, 0, NULL);
>> +	if (ret)
>> +		dev_warn(&pdev->dev, "reboot-mode child cell failed to add: %d\n", ret);
>> +
>> +	return 0;
> 
> [Severity: High]
> Should this propagate the error code instead of returning 0?
> 
> The MFD subsystem guidelines specify that if a child device fails to register
> during probe, the entire probe must fail and unwind previously registered
> children. By returning 0 here, the MFD device is left in a partially
> initialized state if the psci-reboot-mode cell fails to register.

the cpu-idle-domain is a mandatory driver. We do not want to fail 
psci-mfd for any probe failures in reboot-mode probe and unwind the 
cpu-idle-domain driver. Have documented in commit text.

thanks,
Shivendra
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.