Allow paged real mode during vmrun emulation.

Emulate cr0 and cr4 when guest does not intercept them.

Signed-off-by: Christoph Egger <Christoph.Egger@amd.com>
Acked-by: Eddie Dong <eddie.dong@intel.com>
Acked-by: Tim Deegan <Tim.Deegan@citrix.com>
Committed-by: Tim Deegan <Tim.Deegan@citrix.com>
This commit is contained in:
cegger committed 2011-02-28 12:21:49 +01:00
1 parent 67bb195fe2
commit 69d563c720
1 file changed
+3 -1
+3 -1
View File
@@ -55,6 +55,7 @@
#include <asm/hvm/support.h>
#include <asm/hvm/cacheattr.h>
#include <asm/hvm/trace.h>
#include <asm/hvm/nestedhvm.h>
#include <asm/mtrr.h>
#include <asm/apic.h>
#include <public/sched.h>
@@ -1335,7 +1336,8 @@ int hvm_set_cr0(unsigned long value)
/* ET is reserved and should be always be 1. */
value |= X86_CR0_ET;
if ( (value & (X86_CR0_PE | X86_CR0_PG)) == X86_CR0_PG )
if ( !nestedhvm_vmswitch_in_progress(v) &&
(value & (X86_CR0_PE | X86_CR0_PG)) == X86_CR0_PG )
goto gpf;
if ( (value & X86_CR0_PG) && !(old_value & X86_CR0_PG) )
Reference in new issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.