mirror of
https://github.com/torvalds/linux.git
synced 2024-11-12 15:11:50 +00:00
KVM: Add generic RDPMC support
Add a helper function that emulates the RDPMC instruction operation. Signed-off-by: Avi Kivity <avi@redhat.com> Signed-off-by: Gleb Natapov <gleb@redhat.com> Signed-off-by: Avi Kivity <avi@redhat.com>
This commit is contained in:
parent
f5132b0138
commit
022cd0e840
@ -760,6 +760,7 @@ int kvm_set_msr_common(struct kvm_vcpu *vcpu, u32 msr, u64 data);
|
||||
|
||||
unsigned long kvm_get_rflags(struct kvm_vcpu *vcpu);
|
||||
void kvm_set_rflags(struct kvm_vcpu *vcpu, unsigned long rflags);
|
||||
bool kvm_rdpmc(struct kvm_vcpu *vcpu);
|
||||
|
||||
void kvm_queue_exception(struct kvm_vcpu *vcpu, unsigned nr);
|
||||
void kvm_queue_exception_e(struct kvm_vcpu *vcpu, unsigned nr, u32 error_code);
|
||||
|
@ -760,6 +760,21 @@ int kvm_get_dr(struct kvm_vcpu *vcpu, int dr, unsigned long *val)
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(kvm_get_dr);
|
||||
|
||||
bool kvm_rdpmc(struct kvm_vcpu *vcpu)
|
||||
{
|
||||
u32 ecx = kvm_register_read(vcpu, VCPU_REGS_RCX);
|
||||
u64 data;
|
||||
int err;
|
||||
|
||||
err = kvm_pmu_read_pmc(vcpu, ecx, &data);
|
||||
if (err)
|
||||
return err;
|
||||
kvm_register_write(vcpu, VCPU_REGS_RAX, (u32)data);
|
||||
kvm_register_write(vcpu, VCPU_REGS_RDX, data >> 32);
|
||||
return err;
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(kvm_rdpmc);
|
||||
|
||||
/*
|
||||
* List of msr numbers which we expose to userspace through KVM_GET_MSRS
|
||||
* and KVM_SET_MSRS, and KVM_GET_MSR_INDEX_LIST.
|
||||
|
Loading…
Reference in New Issue
Block a user