On Fri, Feb 20, 2026 at 08:40:45AM -0800, Michael Kelley wrote: > From: Michael Kelley <[email protected]> > > When checking for VMBus channel interrutps, current code always scans the > full SynIC receive interrupt bit array to get the relid of the > interrupting channels. The array has HV_EVENT_FLAGS_COUNT (2048) bits. > But VMs rarely have more than 100 channels, and the relid is typically > a small integer that is densely assigned by the Hyper-V host. It's > wasteful to scan 2048 bits when it is highly unlikely that anything will > be found past bit 100. The waste is double with Confidential VMBus because > there are two receive interrupt arrays that must be scanned: one for the > hypervisor SynIC and one for the paravisor SynIC. > > Improve the scanning by tracking the largest relid that has been offered > by the Hyper-V host. Then when checking for VMBus channel interrupts, only > scan up to this high water mark. > > When channels are rescinded, it's not worth the complexity to recalculate > the high water mark. Hyper-V tends to reuse the rescinded relids for any > new channels that are subsequently added, and the performance benefit of > exactly tracking the high water mark would be minimal. > > Signed-off-by: Michael Kelley <[email protected]>
Applied to hyperv-next. Thanks.

