mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-08-02 23:33:54 -06:00
accel/tcg: Call tb_invalidate_phys_page for PAGE_RESET
When PAGE_RESET is set, we are replacing pages with new
content, which means that we need to invalidate existing
cached data, such as TranslationBlocks. Perform the
reset invalidate while we're doing other invalidates,
which allows us to remove the separate invalidates from
the user-only mmap/munmap/mprotect routines.
In addition, restrict invalidation to PAGE_EXEC pages.
Since cdf7130851
, we have validated PAGE_EXEC is present
before translation, which means we can assume that if the
bit is not present, there are no translations to invalidate.
Reviewed-by: Alex Bennée <alex.bennee@linaro.org>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
This commit is contained in:
parent
24ace1ac3c
commit
8f39e01db9
3 changed files with 11 additions and 14 deletions
|
@ -182,7 +182,6 @@ int target_mprotect(abi_ulong start, abi_ulong len, int target_prot)
|
|||
}
|
||||
|
||||
page_set_flags(start, start + len, page_flags);
|
||||
tb_invalidate_phys_range(start, start + len);
|
||||
ret = 0;
|
||||
|
||||
error:
|
||||
|
@ -662,7 +661,6 @@ abi_long target_mmap(abi_ulong start, abi_ulong len, int target_prot,
|
|||
qemu_log_unlock(f);
|
||||
}
|
||||
}
|
||||
tb_invalidate_phys_range(start, start + len);
|
||||
mmap_unlock();
|
||||
return start;
|
||||
fail:
|
||||
|
@ -766,7 +764,6 @@ int target_munmap(abi_ulong start, abi_ulong len)
|
|||
|
||||
if (ret == 0) {
|
||||
page_set_flags(start, start + len, 0);
|
||||
tb_invalidate_phys_range(start, start + len);
|
||||
}
|
||||
mmap_unlock();
|
||||
return ret;
|
||||
|
@ -856,7 +853,6 @@ abi_long target_mremap(abi_ulong old_addr, abi_ulong old_size,
|
|||
page_set_flags(new_addr, new_addr + new_size,
|
||||
prot | PAGE_VALID | PAGE_RESET);
|
||||
}
|
||||
tb_invalidate_phys_range(new_addr, new_addr + new_size);
|
||||
mmap_unlock();
|
||||
return new_addr;
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue