lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Message-Id: <1432983566-15773-1-git-send-email-guangrong.xiao@linux.intel.com>
Date:	Sat, 30 May 2015 18:59:11 +0800
From:	Xiao Guangrong <guangrong.xiao@...ux.intel.com>
To:	pbonzini@...hat.com
Cc:	gleb@...nel.org, mtosatti@...hat.com, kvm@...r.kernel.org,
	linux-kernel@...r.kernel.org,
	Xiao Guangrong <guangrong.xiao@...ux.intel.com>
Subject: [PATCH 00/15] KVM: x86: fully implement vMTRR

Currently guest MTRR is completely prohibited if cache snoop is supported on
IOMMU (!noncoherent_dma) and host does the emulation based on the knowledge
from host side, however, host side is not the good point to know
what the purpose of guest is. A good example is that pass-throughed VGA
frame buffer is not always UC as host expected

Besides that, there is a bugs in current code if noncoherent_dma is detected:
KVM still uses hugepage even if the 4K pages in that ranges span between
on different memory types and uses the cache type of first page to do memory
mapping

This patchset enables full MTRR virtualization and currently only works on
Intel EPT architecture

There is the code will be attached in this thread is used to check the effect
of this patchset:
[12834.843439] __INIT__.
[12835.909109] Running in preload MTRR_TYPE_UNCACHABLE 4753900 ns.
[12835.915232] Running in MTRR_TYPE_UNCACHABLE 5257522 ns.
[12838.083948] Running in preload MTRR_TYPE_WRBACK 13266 ns.
[12838.084998] Running in MTRR_TYPE_WRBACK 13099 ns.

There is the kernel compiling test result in guest which has 16 vcpus and 10G
memory:
before the patchset: 4m48.162s
after the patchset: 4m49.014s
no performance regression is detected

Xiao Guangrong (15):
  KVM: x86: move MTRR related code to a separate file
  KVM: MTRR: handle MSR_MTRRcap in kvm_mtrr_get_msr
  KVM: MTRR: remove mtrr_state.have_fixed
  KVM: MTRR: exactly define the size of variable MTRRs
  KVM: MTRR: clean up mtrr default type
  KVM: MTRR: do not split 64 bits MSR content
  KVM: MTRR: improve kvm_mtrr_get_guest_memory_type
  KVM: MTRR: introduce fixed_mtrr_segment table
  KVM: MTRR: introduce var_mtrr_range
  KVM: MTRR: sort variable MTRRs
  KVM: MTRR: introduce fixed_mtrr_addr_* functions
  KVM: MTRR: introduce mtrr_for_each_mem_type
  KVM: MTRR: simplify kvm_mtrr_get_guest_memory_type
  KVM: MTRR: do not map huage page for non-consistent range
  KVM: VMX: fully implement guest MTRR virtualization

 arch/x86/include/asm/kvm_host.h |  29 +-
 arch/x86/kvm/Makefile           |   2 +-
 arch/x86/kvm/mmu.c              | 126 ++------
 arch/x86/kvm/mtrr.c             | 671 ++++++++++++++++++++++++++++++++++++++++
 arch/x86/kvm/svm.c              |   2 +-
 arch/x86/kvm/vmx.c              |  28 +-
 arch/x86/kvm/x86.c              | 219 +------------
 arch/x86/kvm/x86.h              |   5 +
 8 files changed, 731 insertions(+), 351 deletions(-)
 create mode 100644 arch/x86/kvm/mtrr.c

-- 
2.1.0

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ