summaryrefslogtreecommitdiffstats
path: root/target/i386
diff options
context:
space:
mode:
authorPaolo Bonzini2021-11-04 14:45:20 +0100
committerPaolo Bonzini2021-11-08 08:51:14 +0100
commit93eae3583256896dd91a4c2ca38dcbb8d4051cff (patch)
tree5e3693bf709ad0fe8276d0715609f625b24d6b82 /target/i386
parentMerge remote-tracking branch 'remotes/juanquintela/tags/migration-20211106-pu... (diff)
downloadqemu-93eae3583256896dd91a4c2ca38dcbb8d4051cff.tar.gz
qemu-93eae3583256896dd91a4c2ca38dcbb8d4051cff.tar.xz
qemu-93eae3583256896dd91a4c2ca38dcbb8d4051cff.zip
target-i386: mmu: use pg_mode instead of HF_LMA_MASK
Correctly look up the paging mode of the hypervisor when it is using 64-bit mode but the guest is not. Fixes: 68746930ae ("target/i386: use mmu_translate for NPT walk", 2021-05-11) Cc: qemu-stable@nongnu.org Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
Diffstat (limited to 'target/i386')
-rw-r--r--target/i386/tcg/sysemu/excp_helper.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/target/i386/tcg/sysemu/excp_helper.c b/target/i386/tcg/sysemu/excp_helper.c
index 7af887be4d..492b777de9 100644
--- a/target/i386/tcg/sysemu/excp_helper.c
+++ b/target/i386/tcg/sysemu/excp_helper.c
@@ -90,7 +90,7 @@ static int mmu_translate(CPUState *cs, hwaddr addr, MMUTranslateFunc get_hphys_f
target_ulong pdpe_addr;
#ifdef TARGET_X86_64
- if (env->hflags & HF_LMA_MASK) {
+ if (pg_mode & PG_MODE_LMA) {
bool la57 = pg_mode & PG_MODE_LA57;
uint64_t pml5e_addr, pml5e;
uint64_t pml4e_addr, pml4e;
@@ -287,7 +287,7 @@ do_check_protect_pse36:
*prot |= PAGE_EXEC;
}
- if (!(env->hflags & HF_LMA_MASK)) {
+ if (!(pg_mode & PG_MODE_LMA)) {
pkr = 0;
} else if (ptep & PG_USER_MASK) {
pkr = pg_mode & PG_MODE_PKE ? env->pkru : 0;