summaryrefslogtreecommitdiff
path: root/drivers/kvm
diff options
context:
space:
mode:
authorJoerg Roedel <joerg.roedel@amd.com>2007-02-19 15:37:46 +0300
committerAvi Kivity <avi@qumranet.com>2007-03-04 12:12:39 +0300
commitde979caacca51c929d2cc2f0f79611ee4a1bc8a5 (patch)
treed0a89aee5efdf8e65010dfcf718d600cd78ce0d9 /drivers/kvm
parentd27d4aca184ac0ca6b7e32caf79e1c2b91959be9 (diff)
downloadlinux-de979caacca51c929d2cc2f0f79611ee4a1bc8a5.tar.xz
KVM: vmx: hack set_cr0_no_modeswitch() to actually do modeswitch
The whole thing is rotten, but this allows vmx to boot with the guest reboot fix. Signed-off-by: Markus Rechberger <markus.rechberger@amd.com> Signed-off-by: Joerg Roedel <joerg.roedel@amd.com> Signed-off-by: Avi Kivity <avi@qumranet.com>
Diffstat (limited to 'drivers/kvm')
-rw-r--r--drivers/kvm/vmx.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/drivers/kvm/vmx.c b/drivers/kvm/vmx.c
index ff3bfc5c390a..e02c59807a7e 100644
--- a/drivers/kvm/vmx.c
+++ b/drivers/kvm/vmx.c
@@ -791,6 +791,9 @@ static void vmx_set_cr0(struct kvm_vcpu *vcpu, unsigned long cr0)
*/
static void vmx_set_cr0_no_modeswitch(struct kvm_vcpu *vcpu, unsigned long cr0)
{
+ if (!vcpu->rmode.active && !(cr0 & CR0_PE_MASK))
+ enter_rmode(vcpu);
+
vcpu->rmode.active = ((cr0 & CR0_PE_MASK) == 0);
update_exception_bitmap(vcpu);
vmcs_writel(CR0_READ_SHADOW, cr0);