[<prev] [next>] [day] [month] [year] [list]
Message-Id: <11961736482266-git-send-email-avi@qumranet.com>
Date: Tue, 27 Nov 2007 16:27:28 +0200
From: Avi Kivity <avi@...ranet.com>
To: Linus Torvalds <torvalds@...ux-foundation.org>
Cc: kvm-devel@...ts.sourceforge.net, linux-kernel@...r.kernel.org
Subject: [GIT PULL] KVM fixes for Linux 2.6.24-rc3
Linus,
Please pull the the kvm updates in
git://git.kernel.org/pub/scm/linux/kernel/git/avi/kvm.git for-linus
fixing some x86 emulator and AMD FPU handling regressions.
Amit Shah (2):
KVM: x86 emulator: Use emulator_write_emulated and not emulator_write_std
KVM: SVM: Fix FPU leak while emulating clts
Avi Kivity (1):
KVM: SVM: Unload guest fpu on vcpu_put()
Izik Eidus (2):
KVM: x86 emulator: fix JMP_REL
KVM: x86 emulator: fix the saving of of the eip value
drivers/kvm/kvm_main.c | 3 +--
drivers/kvm/svm.c | 1 +
drivers/kvm/x86_emulate.c | 6 +++---
3 files changed, 5 insertions(+), 5 deletions(-)
diff --git a/drivers/kvm/kvm_main.c b/drivers/kvm/kvm_main.c
index 07ae280..47c10b8 100644
--- a/drivers/kvm/kvm_main.c
+++ b/drivers/kvm/kvm_main.c
@@ -1188,8 +1188,7 @@ int emulate_invlpg(struct kvm_vcpu *vcpu, gva_t address)
int emulate_clts(struct kvm_vcpu *vcpu)
{
- vcpu->cr0 &= ~X86_CR0_TS;
- kvm_x86_ops->set_cr0(vcpu, vcpu->cr0);
+ kvm_x86_ops->set_cr0(vcpu, vcpu->cr0 & ~X86_CR0_TS);
return X86EMUL_CONTINUE;
}
diff --git a/drivers/kvm/svm.c b/drivers/kvm/svm.c
index 7a6eead..4e04e49 100644
--- a/drivers/kvm/svm.c
+++ b/drivers/kvm/svm.c
@@ -663,6 +663,7 @@ static void svm_vcpu_put(struct kvm_vcpu *vcpu)
wrmsrl(host_save_user_msrs[i], svm->host_user_msrs[i]);
rdtscll(vcpu->host_tsc);
+ kvm_put_guest_fpu(vcpu);
}
static void svm_vcpu_decache(struct kvm_vcpu *vcpu)
diff --git a/drivers/kvm/x86_emulate.c b/drivers/kvm/x86_emulate.c
index 33b1814..bd46de6 100644
--- a/drivers/kvm/x86_emulate.c
+++ b/drivers/kvm/x86_emulate.c
@@ -448,8 +448,7 @@ struct operand {
#define JMP_REL(rel) \
do { \
- _eip += (int)(rel); \
- _eip = ((op_bytes == 2) ? (uint16_t)_eip : (uint32_t)_eip); \
+ register_address_increment(_eip, rel); \
} while (0)
/*
@@ -1147,7 +1146,7 @@ done_prefixes:
}
register_address_increment(_regs[VCPU_REGS_RSP],
-dst.bytes);
- if ((rc = ops->write_std(
+ if ((rc = ops->write_emulated(
register_address(ctxt->ss_base,
_regs[VCPU_REGS_RSP]),
&dst.val, dst.bytes, ctxt->vcpu)) != 0)
@@ -1359,6 +1358,7 @@ special_insn:
}
src.val = (unsigned long) _eip;
JMP_REL(rel);
+ op_bytes = ad_bytes;
goto push;
}
case 0xe9: /* jmp rel */
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
Powered by blists - more mailing lists