[PATCH] irqchip/riscv-aplic: Pass context data to syscore callbacks

Geert Uytterhoeven geert+renesas at glider.be
Tue Dec 16 02:06:41 PST 2025


On RISC-V:

    drivers/irqchip/irq-riscv-aplic-main.c:111:20: error: initialization of ‘int (*)(void *)’ from incompatible pointer type ‘int (*)(void)’ [-Werror=incompatible-pointer-types]
      111 |         .suspend = aplic_syscore_suspend,
	  |                    ^~~~~~~~~~~~~~~~~~~~~
    drivers/irqchip/irq-riscv-aplic-main.c:111:20: note: (near initialization for ‘aplic_syscore_ops.suspend’)
    drivers/irqchip/irq-riscv-aplic-main.c:112:19: error: initialization of ‘void (*)(void *)’ from incompatible pointer type ‘void (*)(void)’ [-Werror=incompatible-pointer-types]
      112 |         .resume = aplic_syscore_resume,
	  |                   ^~~~~~~~~~~~~~~~~~~~
    drivers/irqchip/irq-riscv-aplic-main.c:112:19: note: (near initialization for ‘aplic_syscore_ops.resume’)
    drivers/irqchip/irq-riscv-aplic-main.c: In function ‘aplic_probe’:
    drivers/irqchip/irq-riscv-aplic-main.c:375:17: error: implicit declaration of function ‘register_syscore_ops’; did you mean ‘register_syscore’? [-Werror=implicit-function-declaration]
      375 |                 register_syscore_ops(&aplic_syscore_ops);
	  |                 ^~~~~~~~~~~~~~~~~~~~
	  |                 register_syscore

Fix this by updating the driver for the syscore API changes in commit
a97fbc3ee3e2a536 ("syscore: Pass context data to callbacks").

Fixes: 1c546bb433618843 ("irqchip/riscv-aplic: Preserve APLIC states across suspend/resume")
Signed-off-by: Geert Uytterhoeven <geert+renesas at glider.be>
---
Commit a97fbc3ee3e2a536 is in v6.19-rc1, which is now the base for
irqchip/irq/drivers.
---
 drivers/irqchip/irq-riscv-aplic-main.c | 10 +++++++---
 1 file changed, 7 insertions(+), 3 deletions(-)

diff --git a/drivers/irqchip/irq-riscv-aplic-main.c b/drivers/irqchip/irq-riscv-aplic-main.c
index b760942e57f916d8..4495ca26abf5712d 100644
--- a/drivers/irqchip/irq-riscv-aplic-main.c
+++ b/drivers/irqchip/irq-riscv-aplic-main.c
@@ -89,7 +89,7 @@ static void aplic_save_states(struct aplic_priv *priv)
 	}
 }
 
-static int aplic_syscore_suspend(void)
+static int aplic_syscore_suspend(void *data)
 {
 	struct aplic_priv *priv;
 
@@ -99,7 +99,7 @@ static int aplic_syscore_suspend(void)
 	return 0;
 }
 
-static void aplic_syscore_resume(void)
+static void aplic_syscore_resume(void *data)
 {
 	struct aplic_priv *priv;
 
@@ -112,6 +112,10 @@ static struct syscore_ops aplic_syscore_ops = {
 	.resume = aplic_syscore_resume,
 };
 
+static struct syscore aplic_syscore = {
+	.ops = &aplic_syscore_ops,
+};
+
 static int aplic_pm_notifier(struct notifier_block *nb, unsigned long action, void *data)
 {
 	struct aplic_priv *priv = container_of(nb, struct aplic_priv, genpd_nb);
@@ -372,7 +376,7 @@ static int aplic_probe(struct platform_device *pdev)
 		dev_err_probe(dev, rc, "failed to setup APLIC in %s mode\n",
 			      msi_mode ? "MSI" : "direct");
 	else
-		register_syscore_ops(&aplic_syscore_ops);
+		register_syscore(&aplic_syscore);
 
 #ifdef CONFIG_ACPI
 	if (!acpi_disabled)
-- 
2.43.0




More information about the linux-riscv mailing list