Commit 7725f0ba authored by Avi Kivity's avatar Avi Kivity Committed by Linus Torvalds

[PATCH] KVM: Move find_vmx_entry() to vmx.c

Signed-off-by: default avatarAvi Kivity <avi@qumranet.com>
Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
parent f7fbf1fd
...@@ -72,17 +72,6 @@ static struct dentry *debugfs_dir; ...@@ -72,17 +72,6 @@ static struct dentry *debugfs_dir;
#define CR8_RESEVED_BITS (~0x0fULL) #define CR8_RESEVED_BITS (~0x0fULL)
#define EFER_RESERVED_BITS 0xfffffffffffff2fe #define EFER_RESERVED_BITS 0xfffffffffffff2fe
struct vmx_msr_entry *find_msr_entry(struct kvm_vcpu *vcpu, u32 msr)
{
int i;
for (i = 0; i < vcpu->nmsrs; ++i)
if (vcpu->guest_msrs[i].index == msr)
return &vcpu->guest_msrs[i];
return 0;
}
EXPORT_SYMBOL_GPL(find_msr_entry);
#ifdef CONFIG_X86_64 #ifdef CONFIG_X86_64
// LDT or TSS descriptor in the GDT. 16 bytes. // LDT or TSS descriptor in the GDT. 16 bytes.
struct segment_descriptor_64 { struct segment_descriptor_64 {
...@@ -1124,8 +1113,6 @@ static int get_msr(struct kvm_vcpu *vcpu, u32 msr_index, u64 *pdata) ...@@ -1124,8 +1113,6 @@ static int get_msr(struct kvm_vcpu *vcpu, u32 msr_index, u64 *pdata)
void set_efer(struct kvm_vcpu *vcpu, u64 efer) void set_efer(struct kvm_vcpu *vcpu, u64 efer)
{ {
struct vmx_msr_entry *msr;
if (efer & EFER_RESERVED_BITS) { if (efer & EFER_RESERVED_BITS) {
printk(KERN_DEBUG "set_efer: 0x%llx #GP, reserved bits\n", printk(KERN_DEBUG "set_efer: 0x%llx #GP, reserved bits\n",
efer); efer);
...@@ -1140,16 +1127,12 @@ void set_efer(struct kvm_vcpu *vcpu, u64 efer) ...@@ -1140,16 +1127,12 @@ void set_efer(struct kvm_vcpu *vcpu, u64 efer)
return; return;
} }
kvm_arch_ops->set_efer(vcpu, efer);
efer &= ~EFER_LMA; efer &= ~EFER_LMA;
efer |= vcpu->shadow_efer & EFER_LMA; efer |= vcpu->shadow_efer & EFER_LMA;
vcpu->shadow_efer = efer; vcpu->shadow_efer = efer;
msr = find_msr_entry(vcpu, MSR_EFER);
if (!(efer & EFER_LMA))
efer &= ~EFER_LME;
msr->data = efer;
} }
EXPORT_SYMBOL_GPL(set_efer); EXPORT_SYMBOL_GPL(set_efer);
......
...@@ -78,8 +78,6 @@ static const u32 vmx_msr_index[] = { ...@@ -78,8 +78,6 @@ static const u32 vmx_msr_index[] = {
}; };
#define NR_VMX_MSR (sizeof(vmx_msr_index) / sizeof(*vmx_msr_index)) #define NR_VMX_MSR (sizeof(vmx_msr_index) / sizeof(*vmx_msr_index))
struct vmx_msr_entry *find_msr_entry(struct kvm_vcpu *vcpu, u32 msr);
static inline int is_page_fault(u32 intr_info) static inline int is_page_fault(u32 intr_info)
{ {
return (intr_info & (INTR_INFO_INTR_TYPE_MASK | INTR_INFO_VECTOR_MASK | return (intr_info & (INTR_INFO_INTR_TYPE_MASK | INTR_INFO_VECTOR_MASK |
...@@ -93,6 +91,16 @@ static inline int is_external_interrupt(u32 intr_info) ...@@ -93,6 +91,16 @@ static inline int is_external_interrupt(u32 intr_info)
== (INTR_TYPE_EXT_INTR | INTR_INFO_VALID_MASK); == (INTR_TYPE_EXT_INTR | INTR_INFO_VALID_MASK);
} }
static struct vmx_msr_entry *find_msr_entry(struct kvm_vcpu *vcpu, u32 msr)
{
int i;
for (i = 0; i < vcpu->nmsrs; ++i)
if (vcpu->guest_msrs[i].index == msr)
return &vcpu->guest_msrs[i];
return 0;
}
static void vmcs_clear(struct vmcs *vmcs) static void vmcs_clear(struct vmcs *vmcs)
{ {
u64 phys_addr = __pa(vmcs); u64 phys_addr = __pa(vmcs);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment