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:
Родитель
a069805579
Коммит
54e445ca84
|
@ -2020,6 +2020,7 @@ int emulate_invlpg(struct kvm_vcpu *vcpu, gva_t address)
|
||||||
|
|
||||||
int emulate_clts(struct kvm_vcpu *vcpu)
|
int emulate_clts(struct kvm_vcpu *vcpu)
|
||||||
{
|
{
|
||||||
|
KVMTRACE_0D(CLTS, vcpu, handler);
|
||||||
kvm_x86_ops->set_cr0(vcpu, vcpu->arch.cr0 & ~X86_CR0_TS);
|
kvm_x86_ops->set_cr0(vcpu, vcpu->arch.cr0 & ~X86_CR0_TS);
|
||||||
return X86EMUL_CONTINUE;
|
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 realmode_get_cr(struct kvm_vcpu *vcpu, int cr)
|
||||||
{
|
{
|
||||||
|
unsigned long value;
|
||||||
|
|
||||||
kvm_x86_ops->decache_cr4_guest_bits(vcpu);
|
kvm_x86_ops->decache_cr4_guest_bits(vcpu);
|
||||||
switch (cr) {
|
switch (cr) {
|
||||||
case 0:
|
case 0:
|
||||||
return vcpu->arch.cr0;
|
value = vcpu->arch.cr0;
|
||||||
|
break;
|
||||||
case 2:
|
case 2:
|
||||||
return vcpu->arch.cr2;
|
value = vcpu->arch.cr2;
|
||||||
|
break;
|
||||||
case 3:
|
case 3:
|
||||||
return vcpu->arch.cr3;
|
value = vcpu->arch.cr3;
|
||||||
|
break;
|
||||||
case 4:
|
case 4:
|
||||||
return vcpu->arch.cr4;
|
value = vcpu->arch.cr4;
|
||||||
|
break;
|
||||||
case 8:
|
case 8:
|
||||||
return kvm_get_cr8(vcpu);
|
value = kvm_get_cr8(vcpu);
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
vcpu_printf(vcpu, "%s: unexpected cr %u\n", __func__, cr);
|
vcpu_printf(vcpu, "%s: unexpected cr %u\n", __func__, cr);
|
||||||
return 0;
|
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,
|
void realmode_set_cr(struct kvm_vcpu *vcpu, int cr, unsigned long val,
|
||||||
unsigned long *rflags)
|
unsigned long *rflags)
|
||||||
{
|
{
|
||||||
|
KVMTRACE_3D(CR_WRITE, vcpu, (u32)cr, (u32)val,
|
||||||
|
(u32)((u64)val >> 32), handler);
|
||||||
|
|
||||||
switch (cr) {
|
switch (cr) {
|
||||||
case 0:
|
case 0:
|
||||||
kvm_set_cr0(vcpu, mk_cr_64(vcpu->arch.cr0, val));
|
kvm_set_cr0(vcpu, mk_cr_64(vcpu->arch.cr0, val));
|
||||||
|
|
Загрузка…
Ссылка в новой задаче