]> xenbits.xensource.com Git - qemu-xen.git/commitdiff
accel/tcg: Don't treat invalid TLB entries as needing recheck
authorPeter Maydell <peter.maydell@linaro.org>
Fri, 29 Jun 2018 16:17:31 +0000 (17:17 +0100)
committerRichard Henderson <richard.henderson@linaro.org>
Mon, 2 Jul 2018 15:02:20 +0000 (08:02 -0700)
In get_page_addr_code() when we check whether the TLB entry
is marked as TLB_RECHECK, we should not go down that code
path if the TLB entry is not valid at all (ie the TLB_INVALID
bit is set).

Tested-by: Laurent Vivier <laurent@vivier.eu>
Reported-by: Laurent Vivier <laurent@vivier.eu>
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
Message-Id: <20180629161731.16239-1-peter.maydell@linaro.org>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
accel/tcg/cputlb.c

index 3ae1198c245dcddb9fa1b5e2be2a0f7e1aff8f21..cc90a5fe920112cf975503a31fe636584f030551 100644 (file)
@@ -963,7 +963,8 @@ tb_page_addr_t get_page_addr_code(CPUArchState *env, target_ulong addr)
         }
     }
 
-    if (unlikely(env->tlb_table[mmu_idx][index].addr_code & TLB_RECHECK)) {
+    if (unlikely((env->tlb_table[mmu_idx][index].addr_code &
+                  (TLB_RECHECK | TLB_INVALID_MASK)) == TLB_RECHECK)) {
         /*
          * This is a TLB_RECHECK access, where the MMU protection
          * covers a smaller range than a target page, and we must