[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PULL v2 02/12] accel/tcg: Uncache the host address for instruction fetc
|
From: |
Richard Henderson |
|
Subject: |
[PULL v2 02/12] accel/tcg: Uncache the host address for instruction fetch when tlb size < 1 |
|
Date: |
Wed, 3 May 2023 08:20:48 +0100 |
From: Weiwei Li <liweiwei@iscas.ac.cn>
When PMP entry overlap part of the page, we'll set the tlb_size to 1, which
will make the address in tlb entry set with TLB_INVALID_MASK, and the next
access will again go through tlb_fill.However, this way will not work in
tb_gen_code() => get_page_addr_code_hostp(): the TLB host address will be
cached, and the following instructions can use this host address directly
which may lead to the bypass of PMP related check.
Resolves: https://gitlab.com/qemu-project/qemu/-/issues/1542.
Signed-off-by: Weiwei Li <liweiwei@iscas.ac.cn>
Signed-off-by: Junqiang Wang <wangjunqiang@iscas.ac.cn>
Reviewed-by: LIU Zhiwei <zhiwei_liu@linux.alibaba.com>
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Message-Id: <20230422130329.23555-6-liweiwei@iscas.ac.cn>
---
accel/tcg/cputlb.c | 5 +++++
1 file changed, 5 insertions(+)
diff --git a/accel/tcg/cputlb.c b/accel/tcg/cputlb.c
index e984a98dc4..efa0cb67c9 100644
--- a/accel/tcg/cputlb.c
+++ b/accel/tcg/cputlb.c
@@ -1696,6 +1696,11 @@ tb_page_addr_t get_page_addr_code_hostp(CPUArchState
*env, target_ulong addr,
if (p == NULL) {
return -1;
}
+
+ if (full->lg_page_size < TARGET_PAGE_BITS) {
+ return -1;
+ }
+
if (hostp) {
*hostp = p;
}
--
2.34.1
- [PATCH 00/84] tcg: Build once for system, once for user, Richard Henderson, 2023/05/03
- [PATCH 02/84] tcg: Widen gen_insn_data to uint64_t, Richard Henderson, 2023/05/03
- [PATCH 04/84] tcg: Widen helper_{ld,st}_i128 addresses to uint64_t, Richard Henderson, 2023/05/03
- [PATCH 08/84] accel/tcg: Merge do_gen_mem_cb into caller, Richard Henderson, 2023/05/03
- [PATCH 03/84] accel/tcg: Widen tcg-ldst.h addresses to uint64_t, Richard Henderson, 2023/05/03
- [PATCH 06/84] tcg: Widen tcg_gen_code pc_start argument to uint64_t, Richard Henderson, 2023/05/03
- [PULL v2 05/12] tcg: Add tcg_gen_gvec_andcs, Richard Henderson, 2023/05/03
- [PULL v2 01/12] softmmu: Tidy dirtylimit_dirty_ring_full_time, Richard Henderson, 2023/05/03
- [PULL v2 02/12] accel/tcg: Uncache the host address for instruction fetch when tlb size < 1,
Richard Henderson <=
- [PATCH 01/84] tcg: Split out memory ops to tcg-op-ldst.c, Richard Henderson, 2023/05/03
- [PATCH 09/84] tcg: Reduce copies for plugin_gen_mem_callbacks, Richard Henderson, 2023/05/03
- [PULL v2 06/12] tcg: Add tcg_gen_gvec_rotrs, Richard Henderson, 2023/05/03
- [PULL v2 07/12] qemu/int128: Re-shuffle Int128Alias members, Richard Henderson, 2023/05/03
- [PATCH 10/84] accel/tcg: Widen plugin_gen_empty_mem_callback to i64, Richard Henderson, 2023/05/03
- [PULL v2 04/12] qemu/host-utils.h: Add clz and ctz functions for lower-bit integers, Richard Henderson, 2023/05/03
- [PULL v2 03/12] qemu/bitops.h: Limit rotate amounts, Richard Henderson, 2023/05/03
- [PATCH 05/84] tcg: Widen helper_atomic_* addresses to uint64_t, Richard Henderson, 2023/05/03
- [PATCH 07/84] accel/tcg: Merge gen_mem_wrapped with plugin_gen_empty_mem_callback, Richard Henderson, 2023/05/03
- [PULL v2 09/12] accel/tcg: Add cpu_ld*_code_mmu, Richard Henderson, 2023/05/03