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: <1431956923-35602-1-git-send-email-pbonzini@redhat.com>
Date:	Mon, 18 May 2015 15:48:32 +0200
From:	Paolo Bonzini <pbonzini@...hat.com>
To:	linux-kernel@...r.kernel.org, kvm@...r.kernel.org
Cc:	Xiao Guangrong <guangrong.xiao@...ux.intel.com>,
	rkrcmar@...hat.com, bdas@...hat.com
Subject: [RFC PATCH 00/11] KVM: multiple address spaces (for SMM)

This implements Avi's suggestion of having two separate kvm_memslots for
regular and SMM operation, corresponding to different address spaces.

All in all, the surgery is limited even though there are a few preparatory
patches that touch all architectures.

The amount of added code for the vcpu-specific versions of kvm_read_guest
and kvm_write_guest is smaller, and duplication is limited to a couple of
functions.  Even the rmap parts, which scared me a lot when the first
version OOPSed on me, :) are actually very easy.

Patches 1-6 are preparatory cleanups that can be applied separately,
while the others will be posted in v2 of the SMM patches.

Patches 7-8 add the new functions (this time in virt/kvm/kvm_main.c).
Architectures can then define a function kvm_arch_vcpu_memslots_id that
returns the active address space id for a given VCPU.  The address space
ID must be passed to KVM_SET_USER_MEMORY_REGION and KVM_GET_DIRTY_LOG,
using the high 16 bits of the slot id.

Patch 9 then does VCPU-specific accesses in x86, and patch 10 loops
over the SMM slots as well on memslot iterations.

Patch 11 then introduces the SMRAM address space, which is very simple
after all the legwork.

Thanks for the reviews,

Paolo

Paolo Bonzini (11):
  KVM: introduce kvm_alloc/free_memslots
  KVM: use kvm_memslots whenever possible
  KVM: const-ify uses of struct kvm_userspace_memory_region
  KVM: add memslots argument to kvm_arch_memslots_updated
  KVM: add "new" argument to kvm_arch_commit_memory_region
  KVM: x86: pass kvm_mmu_page to gfn_to_rmap
  KVM: add vcpu-specific functions to read/write/translate GFNs
  KVM: implement multiple address spaces
  KVM: x86: use vcpu-specific functions to read/write/translate GFNs
  KVM: x86: work on all available address spaces
  KVM: x86: add SMM to the MMU role, support SMRAM address space

 Documentation/virtual/kvm/api.txt        |  12 ++
 arch/arm/kvm/mmu.c                       |  10 +-
 arch/mips/include/asm/kvm_host.h         |   2 +-
 arch/mips/kvm/mips.c                     |   9 +-
 arch/powerpc/include/asm/kvm_book3s_64.h |   2 +-
 arch/powerpc/include/asm/kvm_host.h      |   2 +-
 arch/powerpc/include/asm/kvm_ppc.h       |  10 +-
 arch/powerpc/kvm/book3s.c                |   9 +-
 arch/powerpc/kvm/book3s_64_mmu_hv.c      |   2 +-
 arch/powerpc/kvm/book3s_hv.c             |  15 +-
 arch/powerpc/kvm/book3s_pr.c             |  11 +-
 arch/powerpc/kvm/booke.c                 |   7 +-
 arch/powerpc/kvm/powerpc.c               |   7 +-
 arch/s390/include/asm/kvm_host.h         |   2 +-
 arch/s390/kvm/kvm-s390.c                 |   9 +-
 arch/x86/include/asm/kvm_host.h          |  29 +--
 arch/x86/kvm/mmu.c                       | 143 +++++++-------
 arch/x86/kvm/paging_tmpl.h               |  14 +-
 arch/x86/kvm/svm.c                       |  16 +-
 arch/x86/kvm/vmx.c                       |  34 ++--
 arch/x86/kvm/x86.c                       |  99 +++++++---
 include/linux/kvm_host.h                 |  54 +++++-
 include/linux/kvm_types.h                |   1 +
 include/uapi/linux/kvm.h                 |   1 +
 virt/kvm/kvm_main.c                      | 314 ++++++++++++++++++++++---------
 25 files changed, 548 insertions(+), 266 deletions(-)

-- 
1.8.3.1

--
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