public inbox for kvm@vger.kernel.org
 help / color / mirror / Atom feed
From: Avi Kivity <avi@redhat.com>
To: kvm@vger.kernel.org
Cc: Marcelo Tosatti <mtosatti@redhat.com>,
	Joerg Roedel <joerg.roedel@amd.com>,
	Sheng Yang <sheng@linux.intel.com>
Subject: [PATCH 0/3] Cache PDPTRs under ept/npt
Date: Mon,  1 Jun 2009 16:22:00 +0300	[thread overview]
Message-ID: <1243862524-22120-1-git-send-email-avi@redhat.com> (raw)

Currently the EPT code re-loads the PDPTRs after every exit, even though
they usually are not needed.  Moreover, the PDPTRs are reloaded from memory,
even though they are supposed to be kept on processor registers independent
from memory.  The NPT case is similar.

This patchset makes the PDPTRs cacheable registers (like RSP and RIP on vmx)
so they are only stored in the VMCS if they are dirtied and copied from the
VMCS to memory on demand.  As SVM doesn't virtualize the PDPTRs, we simple
load them from memory on demand (instead of on every exit).

It reduces ept vmexit costs (inb on some pic port) from 3231 cycles to 2750
cycles, a 15% reduction.

Please review.

Avi Kivity (3):
  KVM: VMX: Avoid duplicate ept tlb flush when setting cr3
  KVM: VMX: Simplify pdptr and cr3 management
  KVM: Cache pdptrs

 arch/x86/include/asm/kvm_host.h |    4 +++
 arch/x86/kvm/kvm_cache_regs.h   |   10 +++++++++
 arch/x86/kvm/mmu.c              |    7 ++++-
 arch/x86/kvm/paging_tmpl.h      |    2 +-
 arch/x86/kvm/svm.c              |   24 ++++++++++++++++-----
 arch/x86/kvm/vmx.c              |   42 +++++++++++++++++++++++++++++---------
 arch/x86/kvm/x86.c              |    8 +++++++
 7 files changed, 78 insertions(+), 19 deletions(-)


             reply	other threads:[~2009-06-01 13:22 UTC|newest]

Thread overview: 17+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2009-06-01 13:22 Avi Kivity [this message]
2009-06-01 13:22 ` [PATCH 1/3] KVM: VMX: Avoid duplicate ept tlb flush when setting cr3 Avi Kivity
2009-06-01 13:22 ` [PATCH 2/3] KVM: VMX: Simplify pdptr and cr3 management Avi Kivity
2009-06-02  9:22   ` Sheng Yang
2009-06-02  9:26     ` Avi Kivity
2009-06-02  9:30       ` Sheng Yang
2009-06-02  9:46         ` Avi Kivity
2009-06-02  9:56           ` Sheng Yang
2009-06-02 10:16             ` Avi Kivity
2009-06-02 11:31               ` Sheng Yang
2009-06-02 11:44                 ` Avi Kivity
2009-06-01 13:22 ` [PATCH 3/3] KVM: Cache pdptrs Avi Kivity
2009-06-02  9:04   ` Joerg Roedel
2009-06-02  9:09     ` Avi Kivity
2009-06-02  9:30       ` Joerg Roedel
2009-06-02  9:44         ` Avi Kivity
2009-06-02 11:50       ` Avi Kivity

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=1243862524-22120-1-git-send-email-avi@redhat.com \
    --to=avi@redhat.com \
    --cc=joerg.roedel@amd.com \
    --cc=kvm@vger.kernel.org \
    --cc=mtosatti@redhat.com \
    --cc=sheng@linux.intel.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