On Fri, Mar 27, 2026 at 01:19:13PM -0700, Jork Loeser wrote: > Move hv_stimer_global_cleanup() from vmbus's hv_kexec_handler() to > hv_machine_shutdown() in the platform code. This ensures stimer cleanup > happens before the vmbus unload, which is required for root partition > kexec to work correctly. >
Reviewed-by: Stanislav Kinsburskii <[email protected]> > Co-developed-by: Anirudh Rayabharam <[email protected]> > Signed-off-by: Anirudh Rayabharam <[email protected]> > Signed-off-by: Jork Loeser <[email protected]> > --- > arch/x86/kernel/cpu/mshyperv.c | 8 ++++++-- > drivers/hv/vmbus_drv.c | 1 - > 2 files changed, 6 insertions(+), 3 deletions(-) > > diff --git a/arch/x86/kernel/cpu/mshyperv.c b/arch/x86/kernel/cpu/mshyperv.c > index 89a2eb8a0722..235087456bdf 100644 > --- a/arch/x86/kernel/cpu/mshyperv.c > +++ b/arch/x86/kernel/cpu/mshyperv.c > @@ -235,8 +235,12 @@ void hv_remove_crash_handler(void) > #ifdef CONFIG_KEXEC_CORE > static void hv_machine_shutdown(void) > { > - if (kexec_in_progress && hv_kexec_handler) > - hv_kexec_handler(); > + if (kexec_in_progress) { > + hv_stimer_global_cleanup(); > + > + if (hv_kexec_handler) > + hv_kexec_handler(); > + } > > /* > * Call hv_cpu_die() on all the CPUs, otherwise later the hypervisor > diff --git a/drivers/hv/vmbus_drv.c b/drivers/hv/vmbus_drv.c > index 301273d61892..5d1449f8c6ea 100644 > --- a/drivers/hv/vmbus_drv.c > +++ b/drivers/hv/vmbus_drv.c > @@ -2892,7 +2892,6 @@ static struct platform_driver vmbus_platform_driver = { > > static void hv_kexec_handler(void) > { > - hv_stimer_global_cleanup(); > vmbus_initiate_unload(false); > /* Make sure conn_state is set as hv_synic_cleanup checks for it */ > mb(); > -- > 2.43.0 >

