All of lore.kernel.org
 help / color / mirror / Atom feed
From: 'Roman Kagan' <rkagan@virtuozzo.com>
To: Paolo Bonzini <pbonzini@redhat.com>
Cc: Pavel Fedin <p.fedin@samsung.com>,
	'Andrey Smetanin' <asmetanin@virtuozzo.com>,
	<kvm@vger.kernel.org>, 'Gleb Natapov' <gleb@kernel.org>,
	'Joerg Roedel' <joro@8bytes.org>,
	"'K. Y. Srinivasan'" <kys@microsoft.com>,
	'Haiyang Zhang' <haiyangz@microsoft.com>,
	"'Denis V. Lunev'" <den@openvz.org>, <qemu-devel@nongnu.org>
Subject: Re: [PATCH v1 4/5] kvm/x86: Hyper-V VMBus hypercall userspace exit
Date: Wed, 20 Jan 2016 18:20:35 +0300	[thread overview]
Message-ID: <20160120152034.GA3947@rkaganb.sw.ru> (raw)
In-Reply-To: <569F92AC.4030506@redhat.com>

On Wed, Jan 20, 2016 at 02:59:08PM +0100, Paolo Bonzini wrote:
> >> --- a/Documentation/virtual/kvm/api.txt
> >> +++ b/Documentation/virtual/kvm/api.txt
> >> @@ -3359,6 +3359,14 @@ Hyper-V SynIC state change. Notification is used to remap SynIC
> >>  event/message pages and to enable/disable SynIC messages/events processing
> >>  in userspace.
> >>
> >> +		/* KVM_EXIT_HYPERV_HCALL */
> >> +		struct {
> >> +			__u64 input;
> >> +			__u64 params[2];
> >> +			__u64 result;
> >> +		} hv_hcall;
> >> +Indicates that the VCPU exits into userspace to process some guest
> >> +Hyper-V hypercalls.
> > 
> > Why introducing this? We already have KVM_EXIT_HYPERCALL, which is
> > exactly the same. AFAIK it's not used at the moment.
> > Additionally, in theory we could have hypercalls handled in
> > userspace for something else except HyperV. And not only for x86.
> 
> Because, as the docs say, we don't want to do that.  We want to use
> KVM_EXIT_IO or KVM_EXIT_MMIO, with two exceptions: s390 and wherever we
> can't do that for compatibility purposes.

I must admit I saw this part in the docs but failed to understand it.

Is it supposed to mean that we want to avoid using hypercalls as a means
of guest communications with the host userspace in general, and use PIO
or MMIO instead, unless hypercalls are mandated by a guest implemenation
we can't affect (as is the case for Hyper-V)?

Because *implementing* Hyper-V hypercalls in terms of KVM_EXIT_IO or
KVM_EXIT_MMIO looked hard at best.

> So we should not add a new exit

Why?  VCPU exit codes are not a scarse resource.

> (I suggested elsewhere the existing hyper-v exit)

So far we've envisaged two reasons for VCPU exit related to hyper-v: one
for hyper-v MSRs and the other for hypercalls.  Since there was a
discussion on implementing generic MSR access by Peter we thought it
wiser to introduce a new VCPU exit for hyper-v hypercalls to avoid
interfering with the MSR implementation.

Thanks,
Roman.

WARNING: multiple messages have this Message-ID (diff)
From: 'Roman Kagan' <rkagan@virtuozzo.com>
To: Paolo Bonzini <pbonzini@redhat.com>
Cc: kvm@vger.kernel.org, 'Gleb Natapov' <gleb@kernel.org>,
	'Joerg Roedel' <joro@8bytes.org>,
	Pavel Fedin <p.fedin@samsung.com>,
	qemu-devel@nongnu.org,
	'Andrey Smetanin' <asmetanin@virtuozzo.com>,
	"'Denis V. Lunev'" <den@openvz.org>,
	"'K. Y. Srinivasan'" <kys@microsoft.com>,
	'Haiyang Zhang' <haiyangz@microsoft.com>
Subject: Re: [Qemu-devel] [PATCH v1 4/5] kvm/x86: Hyper-V VMBus hypercall userspace exit
Date: Wed, 20 Jan 2016 18:20:35 +0300	[thread overview]
Message-ID: <20160120152034.GA3947@rkaganb.sw.ru> (raw)
In-Reply-To: <569F92AC.4030506@redhat.com>

On Wed, Jan 20, 2016 at 02:59:08PM +0100, Paolo Bonzini wrote:
> >> --- a/Documentation/virtual/kvm/api.txt
> >> +++ b/Documentation/virtual/kvm/api.txt
> >> @@ -3359,6 +3359,14 @@ Hyper-V SynIC state change. Notification is used to remap SynIC
> >>  event/message pages and to enable/disable SynIC messages/events processing
> >>  in userspace.
> >>
> >> +		/* KVM_EXIT_HYPERV_HCALL */
> >> +		struct {
> >> +			__u64 input;
> >> +			__u64 params[2];
> >> +			__u64 result;
> >> +		} hv_hcall;
> >> +Indicates that the VCPU exits into userspace to process some guest
> >> +Hyper-V hypercalls.
> > 
> > Why introducing this? We already have KVM_EXIT_HYPERCALL, which is
> > exactly the same. AFAIK it's not used at the moment.
> > Additionally, in theory we could have hypercalls handled in
> > userspace for something else except HyperV. And not only for x86.
> 
> Because, as the docs say, we don't want to do that.  We want to use
> KVM_EXIT_IO or KVM_EXIT_MMIO, with two exceptions: s390 and wherever we
> can't do that for compatibility purposes.

I must admit I saw this part in the docs but failed to understand it.

Is it supposed to mean that we want to avoid using hypercalls as a means
of guest communications with the host userspace in general, and use PIO
or MMIO instead, unless hypercalls are mandated by a guest implemenation
we can't affect (as is the case for Hyper-V)?

Because *implementing* Hyper-V hypercalls in terms of KVM_EXIT_IO or
KVM_EXIT_MMIO looked hard at best.

> So we should not add a new exit

Why?  VCPU exit codes are not a scarse resource.

> (I suggested elsewhere the existing hyper-v exit)

So far we've envisaged two reasons for VCPU exit related to hyper-v: one
for hyper-v MSRs and the other for hypercalls.  Since there was a
discussion on implementing generic MSR access by Peter we thought it
wiser to introduce a new VCPU exit for hyper-v hypercalls to avoid
interfering with the MSR implementation.

Thanks,
Roman.

  parent reply	other threads:[~2016-01-20 15:20 UTC|newest]

Thread overview: 46+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-01-12 10:50 [PATCH v1 0/5] KVM: Hyper-V VMBus hypercalls Andrey Smetanin
2016-01-12 10:50 ` [Qemu-devel] " Andrey Smetanin
2016-01-12 10:50 ` [PATCH v1 1/5] kvm/x86: Rename Hyper-V long spin wait hypercall Andrey Smetanin
2016-01-12 10:50   ` [Qemu-devel] " Andrey Smetanin
2016-01-12 10:50 ` [PATCH v1 2/5] drivers/hv: Move VMBus hypercall codes into Hyper-V UAPI header Andrey Smetanin
2016-01-12 10:50   ` [Qemu-devel] " Andrey Smetanin
2016-01-20 15:04   ` KY Srinivasan
2016-01-20 15:04     ` [Qemu-devel] " KY Srinivasan
2016-01-12 10:50 ` [PATCH v1 3/5] kvm/x86: Pass return code of kvm_emulate_hypercall Andrey Smetanin
2016-01-12 10:50   ` [Qemu-devel] " Andrey Smetanin
2016-01-12 10:50 ` [PATCH v1 4/5] kvm/x86: Hyper-V VMBus hypercall userspace exit Andrey Smetanin
2016-01-12 10:50   ` [Qemu-devel] " Andrey Smetanin
2016-01-14  8:30   ` Pavel Fedin
2016-01-14  8:30     ` [Qemu-devel] " Pavel Fedin
2016-01-14 10:20     ` 'Roman Kagan'
2016-01-14 10:20       ` [Qemu-devel] " 'Roman Kagan'
2016-01-14 10:50       ` Pavel Fedin
2016-01-14 10:50         ` [Qemu-devel] " Pavel Fedin
2016-01-14 11:52         ` 'Roman Kagan'
2016-01-14 11:52           ` [Qemu-devel] " 'Roman Kagan'
2016-01-20 13:59     ` Paolo Bonzini
2016-01-20 13:59       ` [Qemu-devel] " Paolo Bonzini
2016-01-20 14:41       ` Pavel Fedin
2016-01-20 14:41         ` [Qemu-devel] " Pavel Fedin
2016-01-20 15:20       ` 'Roman Kagan' [this message]
2016-01-20 15:20         ` 'Roman Kagan'
2016-01-20 17:02         ` Paolo Bonzini
2016-01-20 17:02           ` [Qemu-devel] " Paolo Bonzini
2016-01-20 17:31           ` 'Roman Kagan'
2016-01-20 17:31             ` [Qemu-devel] " 'Roman Kagan'
2016-01-20 21:05             ` Paolo Bonzini
2016-01-20 21:05               ` [Qemu-devel] " Paolo Bonzini
2016-01-20 13:43   ` Paolo Bonzini
2016-01-20 13:43     ` [Qemu-devel] " Paolo Bonzini
2016-01-20 16:51     ` Roman Kagan
2016-01-20 16:51       ` [Qemu-devel] " Roman Kagan
2016-01-12 10:50 ` [PATCH v1 5/5] kvm/x86: Reject Hyper-V hypercall continuation Andrey Smetanin
2016-01-12 10:50   ` [Qemu-devel] " Andrey Smetanin
2016-01-12 11:19 ` [PATCH v1 0/5] KVM: Hyper-V VMBus hypercalls Andrey Smetanin
2016-01-12 11:19   ` [Qemu-devel] " Andrey Smetanin
2016-01-19  7:49 ` Denis V. Lunev
2016-01-19  7:49   ` [Qemu-devel] " Denis V. Lunev
2016-01-19 16:47   ` Paolo Bonzini
2016-01-19 16:47     ` [Qemu-devel] " Paolo Bonzini
2016-01-20 14:08     ` Paolo Bonzini
2016-01-20 14:08       ` [Qemu-devel] " 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=20160120152034.GA3947@rkaganb.sw.ru \
    --to=rkagan@virtuozzo.com \
    --cc=asmetanin@virtuozzo.com \
    --cc=den@openvz.org \
    --cc=gleb@kernel.org \
    --cc=haiyangz@microsoft.com \
    --cc=joro@8bytes.org \
    --cc=kvm@vger.kernel.org \
    --cc=kys@microsoft.com \
    --cc=p.fedin@samsung.com \
    --cc=pbonzini@redhat.com \
    --cc=qemu-devel@nongnu.org \
    /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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.