mirror of
https://github.com/rd-stuffs/msm-4.14.git
synced 2025-02-20 11:45:48 +08:00
[PATCH] KVM: Move find_vmx_entry() to vmx.c
Signed-off-by: Avi Kivity <avi@qumranet.com> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
This commit is contained in:
parent
f7fbf1fdf0
commit
7725f0badd
@ -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)
|
|||||||
|
|
||||||
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)
|
|||||||
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[] = {
|
|||||||
};
|
};
|
||||||
#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)
|
|||||||
== (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);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user