From: Sean Christopherson <sean.j.christopherson@intel.com>
To: "Paolo Bonzini" <pbonzini@redhat.com>,
"Radim Krčmář" <rkrcmar@redhat.com>,
"Thomas Gleixner" <tglx@linutronix.de>,
"Ingo Molnar" <mingo@redhat.com>,
"Borislav Petkov" <bp@alien8.de>,
x86@kernel.org, "Josh Poimboeuf" <jpoimboe@redhat.com>,
"Peter Zijlstra" <peterz@infradead.org>
Cc: "H. Peter Anvin" <hpa@zytor.com>,
kvm@vger.kernel.org, linux-kernel@vger.kernel.org
Subject: Re: [PATCH v2 0/5] KVM: VMX: Optimize VMX instrs error/fault handling
Date: Tue, 24 Sep 2019 14:03:37 -0700 [thread overview]
Message-ID: <20190924210337.GE16218@linux.intel.com> (raw)
In-Reply-To: <20190719204110.18306-1-sean.j.christopherson@intel.com>
Paolo,
Any chance this can be picked up for 5.4? Josh's kvm_spurious_fault()
changes went into 5.3, so this can be taken through the KVM tree, which
probably makes the most sense since the non-KVM change is a one line
deletion.
On Fri, Jul 19, 2019 at 01:41:05PM -0700, Sean Christopherson wrote:
> A recent commit reworked __kvm_handle_fault_on_reboot() to play nice with
> objtool. An unfortunate side effect is that JMP is now inserted after
> most VMX instructions so that the reboot macro can use an actual CALL to
> kvm_spurious_fault() instead of a funky PUSH+JMP facsimile in .fixup.
>
> Rework the low level VMX instruction helpers to handle unexpected faults
> manually instead of relying on the "fault on reboot" macro. By using
> asm-goto, most helpers can branch directly to an in-function call to
> kvm_spurious_fault(), which can then be optimized by compilers to reside
> out-of-line at the end of the function instead of inline as done by
> "fault on reboot".
>
> The net impact relative to the current code base is more or less a nop
> when building with a compiler that supports __GCC_ASM_FLAG_OUTPUTS__.
> A bunch of code that was previously in .fixup gets moved into the slow
> paths of functions, but the fast paths are more basically unchanged.
>
> Without __GCC_ASM_FLAG_OUTPUTS__, manually coding the Jcc is a net
> positive as CC_SET() without compiler support almost always generates a
> SETcc+CMP+Jcc sequence, which is now replaced with a single Jcc.
>
> A small bonus is that the Jcc instrs are hinted to predict that the VMX
> instr will be successful.
>
> v2:
> - Rebased to x86/master, commit eceffd88ca20 ("Merge branch 'x86/urgent'")
> - Reworded changelogs to reference the commit instead lkml link for
> the recent changes to __kvm_handle_fault_on_reboot().
> - Added Paolo's acks for patch 1-4
> - Added patch 5 to do more cleanup, which was made possible by rebasing
> on top of the __kvm_handle_fault_on_reboot() changes.
>
> Sean Christopherson (5):
> objtool: KVM: x86: Check kvm_rebooting in kvm_spurious_fault()
> KVM: VMX: Optimize VMX instruction error and fault handling
> KVM: VMX: Add error handling to VMREAD helper
> KVM: x86: Drop ____kvm_handle_fault_on_reboot()
> KVM: x86: Don't check kvm_rebooting in __kvm_handle_fault_on_reboot()
>
> arch/x86/include/asm/kvm_host.h | 16 ++----
> arch/x86/kvm/vmx/ops.h | 93 ++++++++++++++++++++-------------
> arch/x86/kvm/vmx/vmx.c | 42 +++++++++++++++
> arch/x86/kvm/x86.c | 3 +-
> tools/objtool/check.c | 1 -
> 5 files changed, 104 insertions(+), 51 deletions(-)
>
> --
> 2.22.0
>
next prev parent reply other threads:[~2019-09-24 21:03 UTC|newest]
Thread overview: 11+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-07-19 20:41 [PATCH v2 0/5] KVM: VMX: Optimize VMX instrs error/fault handling Sean Christopherson
2019-07-19 20:41 ` [PATCH v2 1/5] objtool: KVM: x86: Check kvm_rebooting in kvm_spurious_fault() Sean Christopherson
2019-07-19 20:41 ` [PATCH v2 2/5] KVM: VMX: Optimize VMX instruction error and fault handling Sean Christopherson
2019-07-19 20:41 ` [PATCH v2 3/5] KVM: VMX: Add error handling to VMREAD helper Sean Christopherson
2019-07-28 19:36 ` Josh Poimboeuf
2019-07-29 9:20 ` Paolo Bonzini
2019-07-19 20:41 ` [PATCH v2 4/5] KVM: x86: Drop ____kvm_handle_fault_on_reboot() Sean Christopherson
2019-07-19 20:41 ` [PATCH v2 5/5] KVM: x86: Don't check kvm_rebooting in __kvm_handle_fault_on_reboot() Sean Christopherson
2019-07-19 21:41 ` Paolo Bonzini
2019-09-24 21:03 ` Sean Christopherson [this message]
2019-09-25 13:30 ` [PATCH v2 0/5] KVM: VMX: Optimize VMX instrs error/fault handling 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=20190924210337.GE16218@linux.intel.com \
--to=sean.j.christopherson@intel.com \
--cc=bp@alien8.de \
--cc=hpa@zytor.com \
--cc=jpoimboe@redhat.com \
--cc=kvm@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=mingo@redhat.com \
--cc=pbonzini@redhat.com \
--cc=peterz@infradead.org \
--cc=rkrcmar@redhat.com \
--cc=tglx@linutronix.de \
--cc=x86@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.