While on x86 the host page size is fixed to 4KB, it is better to call qemu_real_host_page_size() for consistency.
Reviewed-by: Peter Maydell <[email protected]> Reviewed-by: Richard Henderson <[email protected]> Signed-off-by: Philippe Mathieu-Daudé <[email protected]> --- target/i386/hvf/hvf.c | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/target/i386/hvf/hvf.c b/target/i386/hvf/hvf.c index 16febbac48f..9a1bf026a4a 100644 --- a/target/i386/hvf/hvf.c +++ b/target/i386/hvf/hvf.c @@ -76,7 +76,7 @@ #include "qemu/main-loop.h" #include "qemu/accel.h" #include "target/i386/cpu.h" -#include "exec/target_page.h" +#include "exec/cpu-common.h" static Error *invtsc_mig_blocker; @@ -137,9 +137,12 @@ static bool ept_emulation_fault(hvf_slot *slot, uint64_t gpa, uint64_t ept_qual) if (write && slot) { if (slot->flags & HVF_SLOT_LOG) { - uint64_t dirty_page_start = gpa & ~(TARGET_PAGE_SIZE - 1u); + uintptr_t page_size = qemu_real_host_page_size(); + intptr_t page_mask = -(intptr_t)page_size; + uint64_t dirty_page_start = gpa & page_mask; + memory_region_set_dirty(slot->region, gpa - slot->start, 1); - hv_vm_protect(dirty_page_start, TARGET_PAGE_SIZE, + hv_vm_protect(dirty_page_start, page_size, HV_MEMORY_READ | HV_MEMORY_WRITE | HV_MEMORY_EXEC); } } -- 2.51.0
