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