From: Sebastian Andrzej Siewior <[email protected]> Sent: Tuesday, July 21, 
2026 8:32 AM
> 
> lockdep_hardirq_threaded() is supposed to be used within IRQ core code
> and not within drivers. It is not obvious from within the driver, that
> this is the only interrupt service routing and that it is not shared

s/routing/routine/

> handler.
> 
> Replace lockdep_hardirq_threaded() with a lockdep annotation limiting
> threaded context on PREEMPT_RT to __vmbus_isr().
> 
> Fixes: f8e6343b7a89c ("Drivers: hv: vmbus: Use kthread for vmbus interrupts 
> on PREEMPT_RT")
> Signed-off-by: Sebastian Andrzej Siewior <[email protected]>
> ---
>  drivers/hv/vmbus_drv.c | 13 ++++++++++++-
>  1 file changed, 12 insertions(+), 1 deletion(-)
> 
> diff --git a/drivers/hv/vmbus_drv.c b/drivers/hv/vmbus_drv.c
> index 23206640c6139..44877664d9d08 100644
> --- a/drivers/hv/vmbus_drv.c
> +++ b/drivers/hv/vmbus_drv.c
> @@ -1384,8 +1384,19 @@ void vmbus_isr(void)
>       if (IS_ENABLED(CONFIG_PREEMPT_RT)) {
>               vmbus_irqd_wake();
>       } else {
> -             lockdep_hardirq_threaded();
> +             static DEFINE_WAIT_OVERRIDE_MAP(vmbus_map, LD_WAIT_CONFIG);
> +
> +             /*
> +              * vmbus_isr is never force-threaded and always invoked at hard
> +              * IRQ level. __vmbus_isr() below can acquire a spinlock_t
> +              * which becomes a sleeping lock and must not be acquired in
> +              * this context. Therefore on PREEMPT_RT this will be threaded
> +              * via vmbus_irqd_wake(). On non-PREEMPT the annotation lets
> +              * lockdep know that acquiring a spinlock_t is not an issue.
> +              */
> +             lock_map_acquire_try(&vmbus_map);
>               __vmbus_isr();
> +             lock_map_release(&vmbus_map);
>       }
>  }
>  EXPORT_SYMBOL_FOR_MODULES(vmbus_isr, "mshv_vtl");
> --
> 2.53.0
> 

In my view, it's OK to ignore the Sashiko-reported issue about
hv_stimer0_isr() running in a thread context when
CONFIG_PREEMPT_RT is set. That scenario can only happen if the
guest is running on Windows Server/Hyper-V 2012R2 or earlier,
and that version went out of official Microsoft support in October
2023. I have an inquiry into the Microsoft team about removing
support for that Hyper-V version from the Linux kernel code, which
would resolve the issue.

Reviewed-by: Michael Kelley <[email protected]>

Reply via email to