[PATCH] rtc: zynqmp: Add shutdown callback for kexec support

Harini T posted 1 patch 2 months, 1 week ago
drivers/rtc/rtc-zynqmp.c | 1 +
1 file changed, 1 insertion(+)
[PATCH] rtc: zynqmp: Add shutdown callback for kexec support
Posted by Harini T 2 months, 1 week ago
During kexec, the hardware is not reset and any enabled interrupts can
interfere with the new kernel's RTC initialization.

The shutdown callback reuses the existing remove function to disable
alarm interrupts and wakeup capability, putting the device in a
quiescent state rather than completely removing it.

Signed-off-by: Harini T <harini.t@amd.com>
---
 drivers/rtc/rtc-zynqmp.c | 1 +
 1 file changed, 1 insertion(+)

diff --git a/drivers/rtc/rtc-zynqmp.c b/drivers/rtc/rtc-zynqmp.c
index f39102b66eac..26893367f0f5 100644
--- a/drivers/rtc/rtc-zynqmp.c
+++ b/drivers/rtc/rtc-zynqmp.c
@@ -383,6 +383,7 @@ MODULE_DEVICE_TABLE(of, xlnx_rtc_of_match);
 static struct platform_driver xlnx_rtc_driver = {
 	.probe		= xlnx_rtc_probe,
 	.remove		= xlnx_rtc_remove,
+	.shutdown	= xlnx_rtc_remove,
 	.driver		= {
 		.name	= KBUILD_MODNAME,
 		.pm	= &xlnx_rtc_pm_ops,
-- 
2.43.0
Re: [PATCH] rtc: zynqmp: Add shutdown callback for kexec support
Posted by Alexandre Belloni 2 months, 1 week ago
On 24/07/2025 22:35:17+0530, Harini T wrote:
> During kexec, the hardware is not reset and any enabled interrupts can
> interfere with the new kernel's RTC initialization.

Please elaborate on the issue because alarm are supposed to stay enabled across
reboots, this is the whole point of the RTC.

> 
> The shutdown callback reuses the existing remove function to disable
> alarm interrupts and wakeup capability, putting the device in a
> quiescent state rather than completely removing it.
> 
> Signed-off-by: Harini T <harini.t@amd.com>
> ---
>  drivers/rtc/rtc-zynqmp.c | 1 +
>  1 file changed, 1 insertion(+)
> 
> diff --git a/drivers/rtc/rtc-zynqmp.c b/drivers/rtc/rtc-zynqmp.c
> index f39102b66eac..26893367f0f5 100644
> --- a/drivers/rtc/rtc-zynqmp.c
> +++ b/drivers/rtc/rtc-zynqmp.c
> @@ -383,6 +383,7 @@ MODULE_DEVICE_TABLE(of, xlnx_rtc_of_match);
>  static struct platform_driver xlnx_rtc_driver = {
>  	.probe		= xlnx_rtc_probe,
>  	.remove		= xlnx_rtc_remove,
> +	.shutdown	= xlnx_rtc_remove,
>  	.driver		= {
>  		.name	= KBUILD_MODNAME,
>  		.pm	= &xlnx_rtc_pm_ops,
> -- 
> 2.43.0
> 

-- 
Alexandre Belloni, co-owner and COO, Bootlin
Embedded Linux and Kernel engineering
https://bootlin.com