aboutsummaryrefslogtreecommitdiff
path: root/accel
diff options
context:
space:
mode:
authorMark Cave-Ayland <mark.cave-ayland@ilande.co.uk>2023-06-29 09:25:21 +0100
committerRichard Henderson <richard.henderson@linaro.org>2023-07-01 08:26:54 +0200
commit3307e08c6f142bb3d2406cfbc0ee19359748b51a (patch)
treeb753d344fd7a1903316ac719685779f86986ed5c /accel
parenta95a464777f74fc28665fae6bb8412d831264111 (diff)
accel/tcg: Fix start page passed to tb_invalidate_phys_page_range__locked
Due to a copy-paste error in tb_invalidate_phys_range, the wrong start address was passed to tb_invalidate_phys_page_range__locked. Correct is to use the start of each page in turn. Signed-off-by: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk> Fixes: e506ad6a05 ("accel/tcg: Pass last not end to tb_invalidate_phys_range") Message-Id: <20230629082522.606219-2-mark.cave-ayland@ilande.co.uk> Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
Diffstat (limited to 'accel')
-rw-r--r--accel/tcg/tb-maint.c10
1 files changed, 6 insertions, 4 deletions
diff --git a/accel/tcg/tb-maint.c b/accel/tcg/tb-maint.c
index 3541419845..33ea1aadd1 100644
--- a/accel/tcg/tb-maint.c
+++ b/accel/tcg/tb-maint.c
@@ -1182,15 +1182,17 @@ void tb_invalidate_phys_range(tb_page_addr_t start, tb_page_addr_t last)
index_last = last >> TARGET_PAGE_BITS;
for (index = start >> TARGET_PAGE_BITS; index <= index_last; index++) {
PageDesc *pd = page_find(index);
- tb_page_addr_t bound;
+ tb_page_addr_t page_start, page_last;
if (pd == NULL) {
continue;
}
assert_page_locked(pd);
- bound = (index << TARGET_PAGE_BITS) | ~TARGET_PAGE_MASK;
- bound = MIN(bound, last);
- tb_invalidate_phys_page_range__locked(pages, pd, start, bound, 0);
+ page_start = index << TARGET_PAGE_BITS;
+ page_last = page_start | ~TARGET_PAGE_MASK;
+ page_last = MIN(page_last, last);
+ tb_invalidate_phys_page_range__locked(pages, pd,
+ page_start, page_last, 0);
}
page_collection_unlock(pages);
}