From: Sebastian Andrzej Siewior <[email protected]> Sent: Thursday, March 
19, 2026 2:57 AM
> 
> On 2026-03-19 03:39:12 [+0000], Michael Kelley wrote:
> > I'll raise the topic with ARM maintainers and IRQ subsystem maintainers
> > to see if there's any reason one way or the other. I would not be surprised
> 
> Thank you.
> 
> > if adding interrupt randomness is intentionally excluded because these
> > per-CPU interrupts were historically used for IPIs and timers only. What's
> > changed is that ARM64 is now used significantly in data centers, and
> > support for VMs is super important. The per-CPU interrupts are now used
> > for more that IPIs and timers, such as in the Hyper-V case, and
> > handle_percpu_devid_irq() was never reconsidered in that light. I would
> > expect a reluctance to burden the IPI and timer interrupt paths with the
> > overhead of add_interrupt_randomness(). But the Hyper-V VMBus case
> > still needs it because that's the primary source of interrupt entropy in the
> > VM. There aren't necessarily other devices generating non-per-CPU interrupts
> > like in a physical machine. To me, it is perfectly valid for the IPI & timer
> > interrupt paths to want to skip interrupt randomness, while the
> > Hyper-V VMBus interrupt path needs it, and we will be back where we
> > are now.
> 
> But if that is your concern, don't you have or should have something
> similar to virtio-rng where you can feed high quality random data to the
> guest?

Hyper-V provides a modest pool of entropy at VM boot time, in the form
of a vendor-specific ACPI table. It is consumed by the guest in the function
ms_hyperv_late_init() for the purpose of seeding the Linux random
number generator, and works on both x86/x64 and arm64.

But this is a one-shot operation at boot time. Hyper-V does not provide
guests with an ongoing source of entropy like virtio-rng, so the guest
must generate its own. And if the guest does a kexec(), the new kernel
doesn't even get to start with that ACPI table entropy.

Michael

> 
> > Related, *not* doing add_interrupt_randomness() on the ARM64 Hyper-V
> > synthetic timer path is consistent with the ARM64 architectural timer, since
> > it also uses handle_percpu_devid_irq(). I did the original work to get the
> > Hyper-V synthetic timers working on ARM64 back in 2019 (?), but I don't
> > recall if that consistency with the ARM64 architectural timer was
> > intentional or accidental.
> >
> > Again, I'll raise this with the appropriate maintainers and see what the
> > feedback is.
> 
> Again, thank you.
> 
> > Michael
> 
> Sebastian

Reply via email to