From: Richard Henderson Date: Wed, 26 Mar 2025 03:21:23 +0000 (-0700) Subject: accel/tcg: Rebuild full flags in tlb_reset_dirty_range_locked X-Git-Tag: v10.1.0-rc0~117^2~83 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=f05d251906a335465a5c5b3a6ffcdce96eca54f4;p=thirdparty%2Fqemu.git accel/tcg: Rebuild full flags in tlb_reset_dirty_range_locked Undo the split between inline and slow flags before masking. Reviewed-by: Pierrick Bouvier Signed-off-by: Richard Henderson --- diff --git a/accel/tcg/cputlb.c b/accel/tcg/cputlb.c index 5df98d93d0c..28c47d48725 100644 --- a/accel/tcg/cputlb.c +++ b/accel/tcg/cputlb.c @@ -886,9 +886,10 @@ static void tlb_reset_dirty_range_locked(CPUTLBEntryFull *full, CPUTLBEntry *ent uintptr_t start, uintptr_t length) { const uintptr_t addr = ent->addr_write; + int flags = addr | full->slow_flags[MMU_DATA_STORE]; - if ((addr & (TLB_INVALID_MASK | TLB_MMIO | - TLB_DISCARD_WRITE | TLB_NOTDIRTY)) == 0) { + flags &= TLB_INVALID_MASK | TLB_MMIO | TLB_DISCARD_WRITE | TLB_NOTDIRTY; + if (flags == 0) { uintptr_t host = (addr & TARGET_PAGE_MASK) + ent->addend; if ((host - start) < length) { qatomic_set(&ent->addr_write, addr | TLB_NOTDIRTY);