From: Paolo Bonzini <pbonzini@redhat.com>
To: Florian Pester <florian.pester@tu-dresden.de>
Cc: kvm-devel <kvm@vger.kernel.org>
Subject: Re: VMCALL to KVM userspace?
Date: Tue, 13 Aug 2013 17:43:13 +0200 [thread overview]
Message-ID: <520A5411.9060706@redhat.com> (raw)
In-Reply-To: <520A43CD.1040809@tu-dresden.de>
Il 13/08/2013 16:33, Florian Pester ha scritto:
> Hi,
>
> for a uni project I'm trying to write a userspace for KVM that can run
> ELF binaries without a full blown OS in the guest. The idea is to handle
> any syscalls made by the binary running inside the guest in the
> userspace of the host. In the simplest case you could forward them to
> the host Linux kernel.
>
> In any case, I've gotten pretty far, setting up IDTs, the VCPU, Page
> Tables and whatnot, but right now I'm stuck. I setup my syscall handler
> to do a VMCALL, which according to the Intel manual is supposed to
> return control to the host. However this seems to be handled by KVM
> without an exit into userspace?
Yes, this is correct.
> If this is correct, is there any way to make a call to the host VMM,
> that will be transfered to userspace by KVM?
You could patch kvm_emulate_hypercall to return to userspace on an
unknown VMCALL. The simplest implementation could be something like
vcpu->run->exit_reason = KVM_EXIT_HYPERCALL;
return 0;
in vmx.c's handle_vmcall and similarly for svm.c's vmmcall_interception.
If you want to make a patch for upstream, it is a bit more complicated
because of backwards-compatibility. You will need a new capability and
you will need to enable it with KVM_ENABLE_CAP, which right now is only
used by PowerPC KVM.
However, this "hypercall to userspace" functionality used to be there
and was removed, so it is unlikely to resurrect... I suggest you use
simply an "out" to an otherwise unused port.
Paolo
next prev parent reply other threads:[~2013-08-13 15:43 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-08-13 14:33 VMCALL to KVM userspace? Florian Pester
2013-08-13 15:43 ` Paolo Bonzini [this message]
2013-08-14 19:55 ` Muli Ben-Yehuda
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=520A5411.9060706@redhat.com \
--to=pbonzini@redhat.com \
--cc=florian.pester@tu-dresden.de \
--cc=kvm@vger.kernel.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.