KVM: Trace failed msr reads and writes
Record failed msrs reads and writes, and the fact that they failed as well. Signed-off-by: Avi Kivity <avi@redhat.com> Signed-off-by: Marcelo Tosatti <mtosatti@redhat.com>
This commit is contained in:
committed by
Marcelo Tosatti
parent
6e7d152967
commit
59200273c4
@@ -2177,9 +2177,10 @@ static int rdmsr_interception(struct vcpu_svm *svm)
|
||||
u32 ecx = svm->vcpu.arch.regs[VCPU_REGS_RCX];
|
||||
u64 data;
|
||||
|
||||
if (svm_get_msr(&svm->vcpu, ecx, &data))
|
||||
if (svm_get_msr(&svm->vcpu, ecx, &data)) {
|
||||
trace_kvm_msr_read_ex(ecx);
|
||||
kvm_inject_gp(&svm->vcpu, 0);
|
||||
else {
|
||||
} else {
|
||||
trace_kvm_msr_read(ecx, data);
|
||||
|
||||
svm->vcpu.arch.regs[VCPU_REGS_RAX] = data & 0xffffffff;
|
||||
@@ -2271,13 +2272,15 @@ static int wrmsr_interception(struct vcpu_svm *svm)
|
||||
u64 data = (svm->vcpu.arch.regs[VCPU_REGS_RAX] & -1u)
|
||||
| ((u64)(svm->vcpu.arch.regs[VCPU_REGS_RDX] & -1u) << 32);
|
||||
|
||||
trace_kvm_msr_write(ecx, data);
|
||||
|
||||
svm->next_rip = kvm_rip_read(&svm->vcpu) + 2;
|
||||
if (svm_set_msr(&svm->vcpu, ecx, data))
|
||||
if (svm_set_msr(&svm->vcpu, ecx, data)) {
|
||||
trace_kvm_msr_write_ex(ecx, data);
|
||||
kvm_inject_gp(&svm->vcpu, 0);
|
||||
else
|
||||
} else {
|
||||
trace_kvm_msr_write(ecx, data);
|
||||
skip_emulated_instruction(&svm->vcpu);
|
||||
}
|
||||
return 1;
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user