From: Sean Christopherson <sean.j.christopherson@intel.com>
To: "Paolo Bonzini" <pbonzini@redhat.com>,
"Radim Krčmář" <rkrcmar@redhat.com>
Cc: Sean Christopherson <sean.j.christopherson@intel.com>,
Vitaly Kuznetsov <vkuznets@redhat.com>,
Wanpeng Li <wanpengli@tencent.com>,
Jim Mattson <jmattson@google.com>, Joerg Roedel <joro@8bytes.org>,
kvm@vger.kernel.org, linux-kernel@vger.kernel.org
Subject: [PATCH 00/13] KVM: x86: Allow userspace to disable the emulator
Date: Fri, 22 Nov 2019 14:39:46 -0800 [thread overview]
Message-ID: <20191122223959.13545-1-sean.j.christopherson@intel.com> (raw)
The primary intent of this series is to dynamically allocate the emulator
and get KVM to a state where the emulator *could* be disabled at some
point in the future. Actually allowing userspace to disable the emulator
was a minor change at that point, so I threw it in.
Dynamically allocating the emulator shrinks the size of x86 vcpus by
~2.5k bytes, which is important because 'struct vcpu_vmx' has once again
fattened up and squeaked past the PAGE_ALLOC_COSTLY_ORDER threshold.
Moving the emulator to its own allocation gives us some breathing room
for the near future, and has some other nice side effects.
As for disabling the emulator... in the not-too-distant future, I expect
there will be use cases that can truly disable KVM's emulator, e.g. for
security (KVM's and/or the guests). I don't have a strong opinion on
whether or not KVM should actually allow userspace to disable the emulator
without a concrete use case, which is why that part is done in its own
tiny patch. I also expect that any real use case would want "no emulator"
to be a per-VM toggle, but since this is basically an experimental feature
I added it as a module param.
Running without an emulator has been "tested" in the sense that the
selftests that don't require emulation continue to pass, and everything
else fails with the expected "emulation error".
Sean Christopherson (13):
KVM: x86: Refactor I/O emulation helpers to provide vcpu-only variant
KVM: x86: Explicitly pass an exception struct to check_intercept
KVM: x86: Move emulation-only helpers to emulate.c
KVM: x86: Refactor R/W page helper to take the emulation context
KVM: x86: Refactor emulated exception injection to take the emul
context
KVM: x86: Refactor emulate tracepoint to explicitly take context
KVM: x86: Refactor init_emulate_ctxt() to explicitly take context
KVM: x86: Dynamically allocate per-vCPU emulation context
KVM: x86: Move kvm_emulate.h into KVM's private directory
KVM: x86: Shrink the usercopy region of the emulation context
KVM: x86: Add helper to "handle" internal emulation error
KVM: x86: Add variable to control existence of emulator
KVM: x86: Allow userspace to disable the kernel's emulator
arch/x86/include/asm/kvm_host.h | 12 +-
arch/x86/kvm/emulate.c | 17 +-
arch/x86/{include/asm => kvm}/kvm_emulate.h | 9 +-
arch/x86/kvm/mmu/mmu.c | 1 +
arch/x86/kvm/svm.c | 5 +-
arch/x86/kvm/trace.h | 22 +--
arch/x86/kvm/vmx/vmx.c | 15 +-
arch/x86/kvm/x86.c | 194 ++++++++++++++------
arch/x86/kvm/x86.h | 16 +-
9 files changed, 189 insertions(+), 102 deletions(-)
rename arch/x86/{include/asm => kvm}/kvm_emulate.h (99%)
--
2.24.0
next reply other threads:[~2019-11-22 22:40 UTC|newest]
Thread overview: 14+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-11-22 22:39 Sean Christopherson [this message]
2019-11-22 22:39 ` [PATCH 01/13] KVM: x86: Refactor I/O emulation helpers to provide vcpu-only variant Sean Christopherson
2019-11-22 22:39 ` [PATCH 02/13] KVM: x86: Explicitly pass an exception struct to check_intercept Sean Christopherson
2019-11-22 22:39 ` [PATCH 03/13] KVM: x86: Move emulation-only helpers to emulate.c Sean Christopherson
2019-11-22 22:39 ` [PATCH 04/13] KVM: x86: Refactor R/W page helper to take the emulation context Sean Christopherson
2019-11-22 22:39 ` [PATCH 05/13] KVM: x86: Refactor emulated exception injection to take the emul context Sean Christopherson
2019-11-22 22:39 ` [PATCH 06/13] KVM: x86: Refactor emulate tracepoint to explicitly take context Sean Christopherson
2019-11-22 22:39 ` [PATCH 07/13] KVM: x86: Refactor init_emulate_ctxt() " Sean Christopherson
2019-11-22 22:39 ` [PATCH 08/13] KVM: x86: Dynamically allocate per-vCPU emulation context Sean Christopherson
2019-11-22 22:39 ` [PATCH 09/13] KVM: x86: Move kvm_emulate.h into KVM's private directory Sean Christopherson
2019-11-22 22:39 ` [PATCH 10/13] KVM: x86: Shrink the usercopy region of the emulation context Sean Christopherson
2019-11-22 22:39 ` [PATCH 11/13] KVM: x86: Add helper to "handle" internal emulation error Sean Christopherson
2019-11-22 22:39 ` [PATCH 12/13] KVM: x86: Add variable to control existence of emulator Sean Christopherson
2019-11-22 22:39 ` [PATCH 13/13] KVM: x86: Allow userspace to disable the kernel's emulator Sean Christopherson
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=20191122223959.13545-1-sean.j.christopherson@intel.com \
--to=sean.j.christopherson@intel.com \
--cc=jmattson@google.com \
--cc=joro@8bytes.org \
--cc=kvm@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=pbonzini@redhat.com \
--cc=rkrcmar@redhat.com \
--cc=vkuznets@redhat.com \
--cc=wanpengli@tencent.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
all inboxes | Powered by JetHome®