From fac803136b7e7b2e4f582dfc007296568bef8932 Mon Sep 17 00:00:00 2001 From: Avi Kivity Date: Wed, 21 Mar 2007 17:58:32 +0200 Subject: [PATCH] --- yaml --- r: 54079 b: refs/heads/master c: 038881c8bec0e9a796d1782c56e29e7c2456626d h: refs/heads/master i: 54077: b11883500bfe068dfe9bf4da2c31ba3b5c36017f 54075: 03ae24df67c2a22cb3aba74c7358a95791d32855 54071: c6f6091389cbd8765454dc5e8068f2e96fcd9065 54063: 93880d5bd1fd9de948c3a938feace44284eda022 54047: 624d9a164e1900019e652961169766c51a971962 54015: c905af7772ae3fbc1778e9c572dc01195c6c3a71 v: v3 --- [refs] | 2 +- trunk/drivers/kvm/vmx.c | 9 ++++++++- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/[refs] b/[refs] index 099fa89c4811..582fb721aa57 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 024aa1c02f0a9f938af83f55c727bcb18187eba4 +refs/heads/master: 038881c8bec0e9a796d1782c56e29e7c2456626d diff --git a/trunk/drivers/kvm/vmx.c b/trunk/drivers/kvm/vmx.c index 027a9625ef90..578dff5424e3 100644 --- a/trunk/drivers/kvm/vmx.c +++ b/trunk/drivers/kvm/vmx.c @@ -864,7 +864,14 @@ static void vmx_set_segment(struct kvm_vcpu *vcpu, vmcs_writel(sf->base, var->base); vmcs_write32(sf->limit, var->limit); vmcs_write16(sf->selector, var->selector); - if (var->unusable) + if (vcpu->rmode.active && var->s) { + /* + * Hack real-mode segments into vm86 compatibility. + */ + if (var->base == 0xffff0000 && var->selector == 0xf000) + vmcs_writel(sf->base, 0xf0000); + ar = 0xf3; + } else if (var->unusable) ar = 1 << 16; else { ar = var->type & 15;