mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-11-17 09:14:19 +08:00
KVM: add missing kvmtrace bits
This patch adds some kvmtrace bits to the generic x86 code where it is instrumented from SVM. Signed-off-by: Joerg Roedel <joerg.roedel@amd.com> Signed-off-by: Avi Kivity <avi@qumranet.com>
This commit is contained in:
parent
a069805579
commit
54e445ca84
@ -2020,6 +2020,7 @@ int emulate_invlpg(struct kvm_vcpu *vcpu, gva_t address)
|
||||
|
||||
int emulate_clts(struct kvm_vcpu *vcpu)
|
||||
{
|
||||
KVMTRACE_0D(CLTS, vcpu, handler);
|
||||
kvm_x86_ops->set_cr0(vcpu, vcpu->arch.cr0 & ~X86_CR0_TS);
|
||||
return X86EMUL_CONTINUE;
|
||||
}
|
||||
@ -2600,27 +2601,41 @@ void realmode_lmsw(struct kvm_vcpu *vcpu, unsigned long msw,
|
||||
|
||||
unsigned long realmode_get_cr(struct kvm_vcpu *vcpu, int cr)
|
||||
{
|
||||
unsigned long value;
|
||||
|
||||
kvm_x86_ops->decache_cr4_guest_bits(vcpu);
|
||||
switch (cr) {
|
||||
case 0:
|
||||
return vcpu->arch.cr0;
|
||||
value = vcpu->arch.cr0;
|
||||
break;
|
||||
case 2:
|
||||
return vcpu->arch.cr2;
|
||||
value = vcpu->arch.cr2;
|
||||
break;
|
||||
case 3:
|
||||
return vcpu->arch.cr3;
|
||||
value = vcpu->arch.cr3;
|
||||
break;
|
||||
case 4:
|
||||
return vcpu->arch.cr4;
|
||||
value = vcpu->arch.cr4;
|
||||
break;
|
||||
case 8:
|
||||
return kvm_get_cr8(vcpu);
|
||||
value = kvm_get_cr8(vcpu);
|
||||
break;
|
||||
default:
|
||||
vcpu_printf(vcpu, "%s: unexpected cr %u\n", __func__, cr);
|
||||
return 0;
|
||||
}
|
||||
KVMTRACE_3D(CR_READ, vcpu, (u32)cr, (u32)value,
|
||||
(u32)((u64)value >> 32), handler);
|
||||
|
||||
return value;
|
||||
}
|
||||
|
||||
void realmode_set_cr(struct kvm_vcpu *vcpu, int cr, unsigned long val,
|
||||
unsigned long *rflags)
|
||||
{
|
||||
KVMTRACE_3D(CR_WRITE, vcpu, (u32)cr, (u32)val,
|
||||
(u32)((u64)val >> 32), handler);
|
||||
|
||||
switch (cr) {
|
||||
case 0:
|
||||
kvm_set_cr0(vcpu, mk_cr_64(vcpu->arch.cr0, val));
|
||||
|
Loading…
Reference in New Issue
Block a user