[Top][All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] [RFC PATCH 09/34] hyperv: block SynIC use in QEMU in in

From: Roman Kagan
Subject: Re: [Qemu-devel] [RFC PATCH 09/34] hyperv: block SynIC use in QEMU in incompatible configurations
Date: Wed, 7 Feb 2018 21:49:03 +0300
User-agent: Mutt/1.9.2 (2017-12-15)

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 <address@hidden>
> 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


reply via email to

[Prev in Thread] Current Thread [Next in Thread]