From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:58429) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1XN0OQ-0000xD-9g for qemu-devel@nongnu.org; Thu, 28 Aug 2014 10:09:44 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1XN0OL-00019E-Fp for qemu-devel@nongnu.org; Thu, 28 Aug 2014 10:09:38 -0400 Sender: Paolo Bonzini From: Paolo Bonzini Date: Thu, 28 Aug 2014 16:09:05 +0200 Message-Id: <1409234953-20742-7-git-send-email-pbonzini@redhat.com> In-Reply-To: <1409234953-20742-1-git-send-email-pbonzini@redhat.com> References: <1409234953-20742-1-git-send-email-pbonzini@redhat.com> Subject: [Qemu-devel] [PULL 06/14] target-i386: Don't forbid NX bit on PAE PDEs and PTEs List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org Cc: William Grant , qemu-stable@nongnu.org From: William Grant Commit e8f6d00c30ed88910d0d985f4b2bf41654172ceb ("target-i386: raise page fault for reserved physical address bits") added a check that the NX bit is not set on PAE PDPEs, but it also added it to rsvd_mask for the rest of the function. This caused any PDEs or PTEs with NX set to be erroneously rejected, making PAE guests with NX support unusable. Signed-off-by: William Grant Cc: qemu-stable@nongnu.org Signed-off-by: Paolo Bonzini --- target-i386/helper.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/target-i386/helper.c b/target-i386/helper.c index 47b982b..30cb0d0 100644 --- a/target-i386/helper.c +++ b/target-i386/helper.c @@ -615,8 +615,8 @@ int x86_cpu_handle_mmu_fault(CPUState *cs, vaddr addr, if (!(pdpe & PG_PRESENT_MASK)) { goto do_fault; } - rsvd_mask |= PG_HI_USER_MASK | PG_NX_MASK; - if (pdpe & rsvd_mask) { + rsvd_mask |= PG_HI_USER_MASK; + if (pdpe & (rsvd_mask | PG_NX_MASK)) { goto do_fault_rsvd; } ptep = PG_NX_MASK | PG_USER_MASK | PG_RW_MASK; -- 1.8.3.1