[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
QEMU.
Roman.
[Qemu-devel] [RFC PATCH 12/34] hyperv: add synic event flag signaling, Roman Kagan, 2018/02/06
[Qemu-devel] [RFC PATCH 13/34] hyperv: process SIGNAL_EVENT hypercall, Roman Kagan, 2018/02/06
[Qemu-devel] [RFC PATCH 14/34] hyperv: process POST_MESSAGE hypercall, Roman Kagan, 2018/02/06