From: Paolo Bonzini <pbonzini@redhat.com>
To: Roman Kagan <rkagan@virtuozzo.com>,
Eduardo Habkost <ehabkost@redhat.com>,
Igor Mammedov <imammedo@redhat.com>,
qemu-devel@nongnu.org, Evgeny Yakovlev <eyakovlev@virtuozzo.com>,
"Denis V . Lunev" <den@openvz.org>
Subject: Re: [Qemu-devel] [PATCH 05/23] hyperv: ensure VP index equal to QEMU cpu_index
Date: Thu, 15 Jun 2017 13:42:56 +0200 [thread overview]
Message-ID: <fdeb0f6b-8aee-4069-01c4-6562312c75e4@redhat.com> (raw)
In-Reply-To: <20170615114024.GA28349@rkaganb.sw.ru>
On 15/06/2017 13:40, Roman Kagan wrote:
> On Thu, Jun 15, 2017 at 10:26:58AM +0200, Paolo Bonzini wrote:
>> On 14/06/2017 20:59, Eduardo Habkost wrote:
>>> On Wed, Jun 14, 2017 at 09:40:37PM +0300, Roman Kagan wrote:
>>>> One more data point is that until now there was no use for vp_index in
>>>> QEMU, so it didn't care how KVM managed it. In KVM the only
>>>> vp_index-aware path that the guests could trigger was exactly reading of
>>>> HV_X64_MSR_VP_INDEX.
>>>>
>>>> So let me try to sum up (to make sure I understand it right);
>>>>
>>>> 1) we add KVM_CAP_HYPERV_SYNIC2 to KVM; when QEMU enables it KVM
>>>> switches to using vcpu_id as vp_index and stops zeroing synic pages
>>>
>>> If we want to keep KVM code simpler, we could make QEMU
>>> explicitly initialize vp_index using vcpu_id (== arch_id == apic_id)
>>> if KVM_CAP_HYPERV_SYNIC2 is reported as supported.
>>>
>>>> 2) new QEMU refuses to start in non-compat mode when
>>>> KVM_CAP_HYPERV_SYNIC2 is not supported
>>>
>>> It depends on which cases are considered "in non-compat mode".
>>> Getting a VM not runnable just because the machine-type was
>>> updated is not desirable, especially considering that on most
>>> cases we will create the VCPUs on the same order and things would
>>> keep working. Probably the best we can do on this case is to
>>> automatically enable compat mode, but print a warning saying
>>> future QEMU versions might break if the kernel is not upgraded.
>>
>> Anything that specifies hv_synic can be broken. There was really no
>> reason to specify it for anything except experimenting.
>
> Hyper-V SynIC timers depend on it, and they work since QEMU 2.6 / KVM
> 4.5 and even supported by libvirt since 1.3.3.
But who is using them, and why would they be doing that? What is the
advantage of using SynIC timers?
Paolo
>> So QEMU never has to enable KVM_CAP_HYPERV_SYNIC. No compat mode is
>> necessary. In fact, I don't see any reason to _keep_
>> KVM_CAP_HYPERV_SYNIC in the kernel, either. This means that KVM can
>> also switch unconditionally the vp_index to vcpu_id, because old QEMU +
>> new kernel won't even start.
>
> I'm afraid this is too harsh on users...
>
> Roman.
>
next prev parent reply other threads:[~2017-06-15 11:43 UTC|newest]
Thread overview: 76+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-06-06 18:19 [Qemu-devel] [PATCH 00/23] hyperv fixes and enhancements Roman Kagan
2017-06-06 18:19 ` [Qemu-devel] [PATCH 01/23] hyperv: add header with protocol definitions Roman Kagan
2017-06-06 18:19 ` [Qemu-devel] [PATCH 02/23] update-linux-headers: prepare for hyperv.h removal Roman Kagan
2017-06-06 18:19 ` [Qemu-devel] [PATCH 03/23] hyperv: set partition-wide MSRs only on first vcpu Roman Kagan
2017-06-06 18:19 ` [Qemu-devel] [PATCH 04/23] hyperv: ensure msrs are inited properly Roman Kagan
2017-06-06 18:19 ` [Qemu-devel] [PATCH 05/23] hyperv: ensure VP index equal to QEMU cpu_index Roman Kagan
2017-06-13 18:57 ` Eduardo Habkost
2017-06-14 11:25 ` Roman Kagan
2017-06-14 11:26 ` Paolo Bonzini
2017-06-14 13:00 ` Igor Mammedov
2017-06-15 12:41 ` Roman Kagan
2017-06-15 13:22 ` Paolo Bonzini
2017-06-15 13:27 ` Igor Mammedov
2017-06-15 16:05 ` Roman Kagan
2017-06-18 15:29 ` Eduardo Habkost
2017-06-14 13:01 ` Eduardo Habkost
2017-06-14 13:11 ` Igor Mammedov
2017-06-14 13:17 ` Paolo Bonzini
2017-06-14 13:22 ` Eduardo Habkost
2017-06-14 13:37 ` Paolo Bonzini
2017-06-14 13:38 ` Igor Mammedov
2017-06-14 13:45 ` Eduardo Habkost
2017-06-14 18:40 ` Roman Kagan
2017-06-14 18:59 ` Eduardo Habkost
2017-06-15 8:26 ` Paolo Bonzini
2017-06-15 11:40 ` Roman Kagan
2017-06-15 11:42 ` Paolo Bonzini [this message]
2017-06-15 12:03 ` Roman Kagan
2017-06-14 13:19 ` Eduardo Habkost
2017-06-14 13:00 ` Eduardo Habkost
2017-06-14 13:24 ` Igor Mammedov
2017-06-14 13:35 ` Eduardo Habkost
2017-06-14 15:31 ` Igor Mammedov
2017-06-06 18:19 ` [Qemu-devel] [PATCH 06/23] hyperv: helper to find vcpu by VP index Roman Kagan
2017-06-06 18:19 ` [Qemu-devel] [PATCH 07/23] hyperv_testdev: refactor for readability Roman Kagan
2017-06-06 18:19 ` [Qemu-devel] [PATCH 08/23] hyperv: cosmetic: g_malloc -> g_new Roman Kagan
2017-06-06 18:19 ` [Qemu-devel] [PATCH 09/23] hyperv: synic: only setup ack notifier if there's a callback Roman Kagan
2017-06-06 18:19 ` [Qemu-devel] [PATCH 10/23] hyperv: allow passing arbitrary data to sint ack callback Roman Kagan
2017-06-06 18:19 ` [Qemu-devel] [PATCH 12/23] hyperv: make HvSintRoute reference-counted Roman Kagan
2017-06-14 13:53 ` Eduardo Habkost
2017-06-14 16:23 ` Roman Kagan
2017-06-23 12:44 ` Eduardo Habkost
2017-06-06 18:19 ` [Qemu-devel] [PATCH 13/23] hyperv: qdev-ify SynIC Roman Kagan
2017-06-13 18:34 ` Eduardo Habkost
2017-06-14 9:58 ` Roman Kagan
2017-06-14 12:46 ` Eduardo Habkost
2017-06-14 15:11 ` Roman Kagan
2017-06-14 15:21 ` Eduardo Habkost
2017-06-06 18:19 ` [Qemu-devel] [PATCH 14/23] kvm-all: make async_safe_run_on_cpu safe on kvm too Roman Kagan
2017-06-08 14:47 ` Paolo Bonzini
2017-06-06 18:19 ` [Qemu-devel] [PATCH 15/23] hyperv: make overlay pages for SynIC Roman Kagan
2017-06-06 18:19 ` [Qemu-devel] [PATCH 16/23] hyperv: map overlay pages after updating msrs Roman Kagan
2017-06-14 11:12 ` Paolo Bonzini
2017-06-14 11:54 ` Roman Kagan
2017-06-14 12:11 ` Paolo Bonzini
2017-06-14 12:41 ` Roman Kagan
2017-06-14 12:46 ` Paolo Bonzini
2017-06-06 18:19 ` [Qemu-devel] [PATCH 17/23] hyperv: add synic message delivery Roman Kagan
2017-06-14 15:08 ` Paolo Bonzini
2017-06-14 15:28 ` Roman Kagan
2017-06-14 15:32 ` Paolo Bonzini
2017-06-14 15:39 ` Roman Kagan
2017-06-06 18:19 ` [Qemu-devel] [PATCH 18/23] hyperv: add synic event flag signaling Roman Kagan
2017-06-14 15:07 ` Paolo Bonzini
2017-06-06 18:19 ` [Qemu-devel] [PATCH 19/23] hyperv: process SIGNAL_EVENT hypercall Roman Kagan
2017-06-06 18:19 ` [Qemu-devel] [PATCH 20/23] hyperv: process POST_MESSAGE hypercall Roman Kagan
2017-06-14 11:19 ` Paolo Bonzini
2017-06-14 14:20 ` Roman Kagan
2017-06-14 14:30 ` Paolo Bonzini
2017-06-06 18:19 ` [Qemu-devel] [PATCH 21/23] hyperv_testdev: add SynIC message and event testmodes Roman Kagan
2017-06-06 18:19 ` [Qemu-devel] [PATCH 22/23] MAINTAINERS: add myself and eyakovlev@ for hyperv* Roman Kagan
2017-06-06 18:19 ` [Qemu-devel] [PATCH 23/23] hyperv: update copyright notices Roman Kagan
[not found] ` <20170606181948.16238-12-rkagan@virtuozzo.com>
2017-06-13 19:02 ` [Qemu-devel] [PATCH 11/23] hyperv: address HvSintRoute by X86CPU pointer Eduardo Habkost
2017-06-14 11:08 ` Paolo Bonzini
2017-06-14 12:14 ` Roman Kagan
2017-06-14 12:17 ` Paolo Bonzini
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=fdeb0f6b-8aee-4069-01c4-6562312c75e4@redhat.com \
--to=pbonzini@redhat.com \
--cc=den@openvz.org \
--cc=ehabkost@redhat.com \
--cc=eyakovlev@virtuozzo.com \
--cc=imammedo@redhat.com \
--cc=qemu-devel@nongnu.org \
--cc=rkagan@virtuozzo.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).