53b56ca781
Changes to other patches are all just metadata/context changes except for pvebackup_co_prepare() needing to call bdrv_co_unref() rather than bdrv_unref(), because it is a coroutine itself. This is documented in d6ee2e324e ("block-coroutine-wrapper: Introduce no_co_wrapper"). The change is necessary, because one of the stable fixes converts bdrv_unref and blk_unref into no_co_wrappers (in preparation for a second patch to fix a hang with the block resize QMP command). Signed-off-by: Fiona Ebner <f.ebner@proxmox.com>
37 lines
1.6 KiB
Diff
37 lines
1.6 KiB
Diff
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
|
From: Richard Henderson <richard.henderson@linaro.org>
|
|
Date: Fri, 5 May 2023 21:40:49 +0100
|
|
Subject: [PATCH] accel/tcg: Fix atomic_mmu_lookup for reads
|
|
MIME-Version: 1.0
|
|
Content-Type: text/plain; charset=UTF-8
|
|
Content-Transfer-Encoding: 8bit
|
|
|
|
A copy-paste bug had us looking at the victim cache for writes.
|
|
|
|
Cc: qemu-stable@nongnu.org
|
|
Reported-by: Peter Maydell <peter.maydell@linaro.org>
|
|
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
|
|
Fixes: 08dff435e2 ("tcg: Probe the proper permissions for atomic ops")
|
|
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
|
|
Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
|
|
Message-Id: <20230505204049.352469-1-richard.henderson@linaro.org>
|
|
(cherry-picked from commit 8c313254e61ed47a1bf4a2db714b25cdd94fbcce)
|
|
Signed-off-by: Fiona Ebner <f.ebner@proxmox.com>
|
|
---
|
|
accel/tcg/cputlb.c | 2 +-
|
|
1 file changed, 1 insertion(+), 1 deletion(-)
|
|
|
|
diff --git a/accel/tcg/cputlb.c b/accel/tcg/cputlb.c
|
|
index e984a98dc4..145fba45b2 100644
|
|
--- a/accel/tcg/cputlb.c
|
|
+++ b/accel/tcg/cputlb.c
|
|
@@ -1830,7 +1830,7 @@ static void *atomic_mmu_lookup(CPUArchState *env, target_ulong addr,
|
|
} else /* if (prot & PAGE_READ) */ {
|
|
tlb_addr = tlbe->addr_read;
|
|
if (!tlb_hit(tlb_addr, addr)) {
|
|
- if (!VICTIM_TLB_HIT(addr_write, addr)) {
|
|
+ if (!VICTIM_TLB_HIT(addr_read, addr)) {
|
|
tlb_fill(env_cpu(env), addr, size,
|
|
MMU_DATA_LOAD, mmu_idx, retaddr);
|
|
index = tlb_index(env, mmu_idx, addr);
|