aboutsummaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
authorJon Hunter <jonathanh@nvidia.com>2026-07-15 12:10:37 +0100
committerThierry Reding <treding@nvidia.com>2026-07-15 13:39:42 +0200
commit74a161d20ef60bb8db333a5203284796429ecb99 (patch)
treead195f14d608ee08019718dbfa1463553eb0d15c
parentLinux 7.2-rc1 (diff)
soc/tegra: pmc: Don't register sys-off handler for multi-socket devices
The kernel does not permit a device to register multiple sys-off handlers for non-default priority levels. Hence, for multi-socket Tegra devices, registering the sys-off handler in the Tegra PMC driver (which uses the low priority level) more than once fails. The Tegra PMC sys-off handler is supported for all current generations of the Tegra SoC, however, it is only used as a low priority handler if everything else fails. For example, on Tegra264 the EFI reboot handler is called to restart the device. Therefore, for multi-socket devices, skip the registering of the sys-off handler to because this is not critical. Signed-off-by: Jon Hunter <jonathanh@nvidia.com> Signed-off-by: Thierry Reding <treding@nvidia.com>
-rw-r--r--drivers/soc/tegra/pmc.c21
1 files changed, 12 insertions, 9 deletions
diff --git a/drivers/soc/tegra/pmc.c b/drivers/soc/tegra/pmc.c
index f419a5395545..41ed716d5857 100644
--- a/drivers/soc/tegra/pmc.c
+++ b/drivers/soc/tegra/pmc.c
@@ -3074,15 +3074,18 @@ static int tegra_pmc_probe(struct platform_device *pdev)
}
}
- err = devm_register_sys_off_handler(&pdev->dev,
- SYS_OFF_MODE_RESTART,
- SYS_OFF_PRIO_LOW,
- tegra_pmc_restart_handler,
- pmc);
- if (err) {
- dev_err(&pdev->dev, "failed to register sys-off handler: %d\n",
- err);
- return err;
+ if (dev_to_node(&pdev->dev) == NUMA_NO_NODE) {
+ err = devm_register_sys_off_handler(&pdev->dev,
+ SYS_OFF_MODE_RESTART,
+ SYS_OFF_PRIO_LOW,
+ tegra_pmc_restart_handler,
+ pmc);
+ if (err) {
+ dev_err(&pdev->dev,
+ "failed to register sys-off handler: %d\n",
+ err);
+ return err;
+ }
}
/*