KVM: x86 emulator: implement rdmsr and wrmsr
Allow real-mode emulation of rdmsr and wrmsr. This allows smp Windows to boot, presumably for its sipi trampoline. Signed-off-by: Avi Kivity <avi@qumranet.com>
This commit is contained in:
@ -1517,7 +1517,7 @@ EXPORT_SYMBOL_GPL(kvm_get_msr_common);
|
||||
* Returns 0 on success, non-0 otherwise.
|
||||
* Assumes vcpu_load() was already called.
|
||||
*/
|
||||
static int get_msr(struct kvm_vcpu *vcpu, u32 msr_index, u64 *pdata)
|
||||
int kvm_get_msr(struct kvm_vcpu *vcpu, u32 msr_index, u64 *pdata)
|
||||
{
|
||||
return kvm_arch_ops->get_msr(vcpu, msr_index, pdata);
|
||||
}
|
||||
@ -1595,7 +1595,7 @@ EXPORT_SYMBOL_GPL(kvm_set_msr_common);
|
||||
* Returns 0 on success, non-0 otherwise.
|
||||
* Assumes vcpu_load() was already called.
|
||||
*/
|
||||
static int set_msr(struct kvm_vcpu *vcpu, u32 msr_index, u64 data)
|
||||
int kvm_set_msr(struct kvm_vcpu *vcpu, u32 msr_index, u64 data)
|
||||
{
|
||||
return kvm_arch_ops->set_msr(vcpu, msr_index, data);
|
||||
}
|
||||
@ -2133,7 +2133,7 @@ static __init void kvm_init_msr_list(void)
|
||||
*/
|
||||
static int do_set_msr(struct kvm_vcpu *vcpu, unsigned index, u64 *data)
|
||||
{
|
||||
return set_msr(vcpu, index, *data);
|
||||
return kvm_set_msr(vcpu, index, *data);
|
||||
}
|
||||
|
||||
/*
|
||||
@ -2617,7 +2617,7 @@ static long kvm_vcpu_ioctl(struct file *filp,
|
||||
break;
|
||||
}
|
||||
case KVM_GET_MSRS:
|
||||
r = msr_io(vcpu, argp, get_msr, 1);
|
||||
r = msr_io(vcpu, argp, kvm_get_msr, 1);
|
||||
break;
|
||||
case KVM_SET_MSRS:
|
||||
r = msr_io(vcpu, argp, do_set_msr, 0);
|
||||
|
Reference in New Issue
Block a user