Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 64fb6d9a authored by Linus Torvalds's avatar Linus Torvalds
Browse files

Merge tag 'kvm-3.11-2' of git://git.kernel.org/pub/scm/virt/kvm/kvm

Pull more KVM changes from Gleb Natapov:
 "A fix for a bug that prevents some guests from working on old Intel
  CPUs and a patch that integrates ARM64 KVM, merged via ARM64 tree,
  into Kconfig."

* tag 'kvm-3.11-2' of git://git.kernel.org/pub/scm/virt/kvm/kvm:
  KVM: VMX: mark unusable segment as nonpresent
  arm64: KVM: Kconfig integration
parents b4294eec 03617c18
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -270,6 +270,8 @@ source "drivers/Kconfig"

source "fs/Kconfig"

source "arch/arm64/kvm/Kconfig"

source "arch/arm64/Kconfig.debug"

source "security/Kconfig"
+1 −0
Original line number Diff line number Diff line
@@ -21,6 +21,7 @@
#include <linux/sched.h>
#include <linux/mm.h>
#include <linux/dma-mapping.h>
#include <linux/kvm_host.h>
#include <asm/thread_info.h>
#include <asm/memory.h>
#include <asm/cputable.h>

arch/arm64/kvm/Kconfig

0 → 100644
+51 −0
Original line number Diff line number Diff line
#
# KVM configuration
#

source "virt/kvm/Kconfig"

menuconfig VIRTUALIZATION
	bool "Virtualization"
	---help---
	  Say Y here to get to see options for using your Linux host to run
	  other operating systems inside virtual machines (guests).
	  This option alone does not add any kernel code.

	  If you say N, all options in this submenu will be skipped and
	  disabled.

if VIRTUALIZATION

config KVM
	bool "Kernel-based Virtual Machine (KVM) support"
	select MMU_NOTIFIER
	select PREEMPT_NOTIFIERS
	select ANON_INODES
	select KVM_MMIO
	select KVM_ARM_HOST
	select KVM_ARM_VGIC
	select KVM_ARM_TIMER
	---help---
	  Support hosting virtualized guest machines.

	  If unsure, say N.

config KVM_ARM_HOST
	bool
	---help---
	  Provides host support for ARM processors.

config KVM_ARM_VGIC
	bool
	depends on KVM_ARM_HOST && OF
	select HAVE_KVM_IRQCHIP
	---help---
	  Adds support for a hardware assisted, in-kernel GIC emulation.

config KVM_ARM_TIMER
	bool
	depends on KVM_ARM_VGIC
	---help---
	  Adds support for the Architected Timers in virtual machines.

endif # VIRTUALIZATION
+9 −2
Original line number Diff line number Diff line
@@ -3404,15 +3404,22 @@ static void vmx_get_segment(struct kvm_vcpu *vcpu,
	var->limit = vmx_read_guest_seg_limit(vmx, seg);
	var->selector = vmx_read_guest_seg_selector(vmx, seg);
	ar = vmx_read_guest_seg_ar(vmx, seg);
	var->unusable = (ar >> 16) & 1;
	var->type = ar & 15;
	var->s = (ar >> 4) & 1;
	var->dpl = (ar >> 5) & 3;
	var->present = (ar >> 7) & 1;
	/*
	 * Some userspaces do not preserve unusable property. Since usable
	 * segment has to be present according to VMX spec we can use present
	 * property to amend userspace bug by making unusable segment always
	 * nonpresent. vmx_segment_access_rights() already marks nonpresent
	 * segment as unusable.
	 */
	var->present = !var->unusable;
	var->avl = (ar >> 12) & 1;
	var->l = (ar >> 13) & 1;
	var->db = (ar >> 14) & 1;
	var->g = (ar >> 15) & 1;
	var->unusable = (ar >> 16) & 1;
}

static u64 vmx_get_segment_base(struct kvm_vcpu *vcpu, int seg)