X-Git-Url: http://v3vee.org/palacios/gitweb/gitweb.cgi?a=blobdiff_plain;f=palacios%2Fsrc%2Fpalacios%2Fvmm_ctrl_regs.c;h=b27df4ba64d3e23b15162f7385260721d8297b3b;hb=b283373f3067fe329fb6c526f62d72cec27f4149;hp=7d6e381911dc68674a10c9212d599b007d25657b;hpb=ac7e7ba347053dd19a38a32b645c9b07c1962e97;p=palacios.git diff --git a/palacios/src/palacios/vmm_ctrl_regs.c b/palacios/src/palacios/vmm_ctrl_regs.c index 7d6e381..b27df4b 100644 --- a/palacios/src/palacios/vmm_ctrl_regs.c +++ b/palacios/src/palacios/vmm_ctrl_regs.c @@ -566,15 +566,19 @@ int v3_handle_efer_write(struct guest_info * core, uint_t msr, struct v3_msr src PrintDebug("EFER Write\n"); PrintDebug("EFER Write Values: HI=%x LO=%x\n", src.hi, src.lo); + //PrintDebug("Old EFER=%p\n", (void *)*(addr_t*)(shadow_efer)); // We virtualize the guests efer to hide the SVME and LMA bits guest_efer->value = src.value; - - // Enable/Disable Syscall - shadow_efer->sce = src.value & 0x1; - + if (core->shdw_pg_mode == SHADOW_PAGING) { + // Enable/Disable Syscall + shadow_efer->sce = src.value & 0x1; + } else if (core->shdw_pg_mode == NESTED_PAGING) { + *(uint64_t *)shadow_efer = src.value; + shadow_efer->svme = 1; + } return 0; }