On 10/23/25 15:06, Philippe Mathieu-Daudé wrote:
+ /* Handle dirty page logging for ram. */
+ if (iswrite) {
+ hwaddr xlat;
+ MemoryRegion *mr = address_space_translate(as, ipa, &xlat,
+ NULL, true,
+ MEMTXATTRS_UNSPECIFIED);
+ if (memory_region_is_ram(mr)) {
+ uint64_t ipa_page = ipa & TARGET_PAGE_MASK;
+
+ /* TODO: Inject exception to the guest. */
+ assert(!mr->readonly);
+
+ if (memory_region_get_dirty_log_mask(mr)) {
+ memory_region_set_dirty(mr, ipa_page + xlat,
+ TARGET_PAGE_SIZE);
+ hvf_unprotect_dirty_range(ipa_page, TARGET_PAGE_SIZE);
+ }
We need to use the host page size/mask, not TARGET_PAGE_SIZE/MASK here.
r~