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>
#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>
/* 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) )