public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
* [PATCH] irqchip/riscv-imsic: sync-up state before CPU offline
@ 2026-05-04  6:05 Yong-Xuan Wang
  2026-05-05 19:44 ` Thomas Gleixner
  0 siblings, 1 reply; 3+ messages in thread
From: Yong-Xuan Wang @ 2026-05-04  6:05 UTC (permalink / raw)
  To: Anup Patel, Thomas Gleixner, Paul Walmsley, Palmer Dabbelt,
	Albert Ou, Alexandre Ghiti
  Cc: linux-riscv, linux-kernel, greentime.hu, vincent.chen, zong.li,
	Yong-Xuan Wang

The "move_prev" pointer in struct imsic_vector on the new CPU is
cleared only after the old CPU has cleared "move_next". But when
migrating all the interrupts out from an offling CPU, since the CPU
is already marked as "offlined", the IMSIC driver skip to sync-up the
interrupt vector in __imsic_remote_sync(). The "move_pre" pointer of
these interrupts can only be cleared after the old CPU backs to online.
Therefore the affinity of an interrupt that are orignally target an
offlined CPU can't be changed.

This patch force to clear the "move_pre" pointers before the CPU goes
offline.

Signed-off-by: Yong-Xuan Wang <yongxuan.wang@sifive.com>
---
 drivers/irqchip/irq-riscv-imsic-early.c | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/drivers/irqchip/irq-riscv-imsic-early.c b/drivers/irqchip/irq-riscv-imsic-early.c
index ba903fa689bd..a7a1852b548c 100644
--- a/drivers/irqchip/irq-riscv-imsic-early.c
+++ b/drivers/irqchip/irq-riscv-imsic-early.c
@@ -158,6 +158,8 @@ static int imsic_dying_cpu(unsigned int cpu)
 	/* Cleanup IPIs */
 	imsic_ipi_dying_cpu();
 
+	imsic_local_sync_all(false);
+
 	/* Mark per-CPU IMSIC state as offline */
 	imsic_state_offline();
 

---
base-commit: 9b3a2be84803cf18c4b4d1efc695991f0daa153c
change-id: 20260503-imsic-d70c156cb740


^ permalink raw reply related	[flat|nested] 3+ messages in thread

* Re: [PATCH] irqchip/riscv-imsic: sync-up state before CPU offline
  2026-05-04  6:05 [PATCH] irqchip/riscv-imsic: sync-up state before CPU offline Yong-Xuan Wang
@ 2026-05-05 19:44 ` Thomas Gleixner
  2026-05-05 19:46   ` Thomas Gleixner
  0 siblings, 1 reply; 3+ messages in thread
From: Thomas Gleixner @ 2026-05-05 19:44 UTC (permalink / raw)
  To: Yong-Xuan Wang, Anup Patel, Paul Walmsley, Palmer Dabbelt,
	Albert Ou, Alexandre Ghiti
  Cc: linux-riscv, linux-kernel, greentime.hu, vincent.chen, zong.li,
	Yong-Xuan Wang

On Sun, May 03 2026 at 23:05, Yong-Xuan Wang wrote:
> The "move_prev" pointer in struct imsic_vector on the new CPU is
> cleared only after the old CPU has cleared "move_next". But when
> migrating all the interrupts out from an offling CPU, since the CPU
> is already marked as "offlined", the IMSIC driver skip to sync-up the
> interrupt vector in __imsic_remote_sync(). The "move_pre" pointer of
> these interrupts can only be cleared after the old CPU backs to online.
> Therefore the affinity of an interrupt that are orignally target an
> offlined CPU can't be changed.

https://www.kernel.org/doc/html/latest/process/maintainer-tip.html#changelog

> This patch force to clear the "move_pre" pointers before the CPU goes
> offline.

# git grep 'This patch' Documentation/process/

Thanks,

        tglx

^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: [PATCH] irqchip/riscv-imsic: sync-up state before CPU offline
  2026-05-05 19:44 ` Thomas Gleixner
@ 2026-05-05 19:46   ` Thomas Gleixner
  0 siblings, 0 replies; 3+ messages in thread
From: Thomas Gleixner @ 2026-05-05 19:46 UTC (permalink / raw)
  To: Yong-Xuan Wang, Anup Patel, Paul Walmsley, Palmer Dabbelt,
	Albert Ou, Alexandre Ghiti
  Cc: linux-riscv, linux-kernel, greentime.hu, vincent.chen, zong.li,
	Yong-Xuan Wang

On Tue, May 05 2026 at 21:44, Thomas Gleixner wrote:
> On Sun, May 03 2026 at 23:05, Yong-Xuan Wang wrote:
>> The "move_prev" pointer in struct imsic_vector on the new CPU is
>> cleared only after the old CPU has cleared "move_next". But when
>> migrating all the interrupts out from an offling CPU, since the CPU
>> is already marked as "offlined", the IMSIC driver skip to sync-up the
>> interrupt vector in __imsic_remote_sync(). The "move_pre" pointer of
>> these interrupts can only be cleared after the old CPU backs to online.
>> Therefore the affinity of an interrupt that are orignally target an
>> offlined CPU can't be changed.
>
> https://www.kernel.org/doc/html/latest/process/maintainer-tip.html#changelog
>
>> This patch force to clear the "move_pre" pointers before the CPU goes
>> offline.
>
> # git grep 'This patch' Documentation/process/

This change log also lacks a 'Fixes:' tag


^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2026-05-05 19:46 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-05-04  6:05 [PATCH] irqchip/riscv-imsic: sync-up state before CPU offline Yong-Xuan Wang
2026-05-05 19:44 ` Thomas Gleixner
2026-05-05 19:46   ` Thomas Gleixner

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox