On 06/02/2018 21:30, Roman Kagan wrote: > Certain configurations do not allow SynIC to be used in QEMU. In > particular, > > - when hyperv_vpindex is off, SINT routes can't be used as they refer to > the destination vCPU by vp_index > > - older KVM (which doesn't expose KVM_CAP_HYPERV_SYNIC2) zeroes out > SynIC message and event pages on every msr load, breaking migration > > OTOH in-KVM users of SynIC -- SynIC timers -- do work in those > configurations, and we shouldn't stop the guest from using them. > > To cover both scenarios, introduce a (user-invisible) SynIC property > that disallows to use the SynIC within QEMU but not in KVM. The > property is clear by default but is set via compat logic for older > machine types. > > As a result, when hv_synic and a modern machine type are specified, QEMU > will refuse to run unless vp_index is on and the kernel is recent > enough. OTOH with older machine types QEMU will fine run against an > older kernel and/or without vp_index enabled but will refuse the in-QEMU > uses of SynIC (e.g. VMBus). > > Also a function is added that allows the devices to query the status of > SynIC support across vCPUs. > > Signed-off-by: Roman Kagan <rka...@virtuozzo.com>
FWIW I'm okay with just requiring a new-enough kernel when using SynIC. It's always been experimental. Paolo