From: Sebastian Andrzej Siewior <[email protected]> Sent: Wednesday, April 1, 2026 8:15 AM > > vmbus_irq_initialized is only true if the registration of the per-CPU > threads succeeded. If it failed, the whole registration aborts and the > vmbus_exit() path is never called. > > Remove vmbus_irq_initialized. > > Signed-off-by: Sebastian Andrzej Siewior <[email protected]>
Reviewed-by: Michael Kelley <[email protected]> But see comment about the patch Subject prefix from Patch 1 of this series. > --- > drivers/hv/vmbus_drv.c | 14 ++++---------- > 1 file changed, 4 insertions(+), 10 deletions(-) > > diff --git a/drivers/hv/vmbus_drv.c b/drivers/hv/vmbus_drv.c > index e44275370ac2a..7417841cd1f70 100644 > --- a/drivers/hv/vmbus_drv.c > +++ b/drivers/hv/vmbus_drv.c > @@ -1392,8 +1392,6 @@ static void run_vmbus_irqd(unsigned int cpu) > __vmbus_isr(); > } > > -static bool vmbus_irq_initialized; > - > static struct smp_hotplug_thread vmbus_irq_threads = { > .store = &vmbus_irqd, > .setup = vmbus_irqd_setup, > @@ -1513,11 +1511,10 @@ static int vmbus_bus_init(void) > * the VMbus interrupt handler. > */ > > - if (IS_ENABLED(CONFIG_PREEMPT_RT) && !vmbus_irq_initialized) { > + if (IS_ENABLED(CONFIG_PREEMPT_RT)) { > ret = smpboot_register_percpu_thread(&vmbus_irq_threads); > if (ret) > goto err_kthread; > - vmbus_irq_initialized = true; > } > > if (vmbus_irq == -1) { > @@ -1561,10 +1558,8 @@ static int vmbus_bus_init(void) > else > free_percpu_irq(vmbus_irq, &vmbus_evt); > err_setup: > - if (IS_ENABLED(CONFIG_PREEMPT_RT) && vmbus_irq_initialized) { > + if (IS_ENABLED(CONFIG_PREEMPT_RT)) > smpboot_unregister_percpu_thread(&vmbus_irq_threads); > - vmbus_irq_initialized = false; > - } > err_kthread: > bus_unregister(&hv_bus); > return ret; > @@ -3033,10 +3028,9 @@ static void __exit vmbus_exit(void) > hv_remove_vmbus_handler(); > else > free_percpu_irq(vmbus_irq, &vmbus_evt); > - if (IS_ENABLED(CONFIG_PREEMPT_RT) && vmbus_irq_initialized) { > + if (IS_ENABLED(CONFIG_PREEMPT_RT)) > smpboot_unregister_percpu_thread(&vmbus_irq_threads); > - vmbus_irq_initialized = false; > - } > + > for_each_online_cpu(cpu) { > struct hv_per_cpu_context *hv_cpu > = per_cpu_ptr(hv_context.cpu_context, cpu); > -- > 2.53.0
