On Wed, Feb 07, 2018 at 11:46:30AM +0100, Paolo Bonzini wrote: > 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.
Well, synic timers are available since linux-4.5 and qemu-2.6, and they're also supported in libvirt for some time, so there probably are VMs using it. It would be harsh to make them fail migrating to a new QEMU. Roman.