mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-11-28 14:44:10 +08:00
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
This commit is contained in:
commit
64fb6d9aa0
@ -270,6 +270,8 @@ source "drivers/Kconfig"
|
||||
|
||||
source "fs/Kconfig"
|
||||
|
||||
source "arch/arm64/kvm/Kconfig"
|
||||
|
||||
source "arch/arm64/Kconfig.debug"
|
||||
|
||||
source "security/Kconfig"
|
||||
|
@ -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>
|
||||
|
51
arch/arm64/kvm/Kconfig
Normal file
51
arch/arm64/kvm/Kconfig
Normal file
@ -0,0 +1,51 @@
|
||||
#
|
||||
# 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
|
@ -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)
|
||||
|
Loading…
Reference in New Issue
Block a user