memory: fix RAM subpages in newly initialized pages

If the first subpage installed in a page is RAM, then we install it as
a full page, instead of a subpage.  Fix by not special casing RAM.

The issue dates to commit db7b5426a4, which introduced subpages.

Signed-off-by: Avi Kivity <avi@redhat.com>
This commit is contained in:
Avi Kivity 2012-02-12 21:10:50 +02:00
parent d6f2ea22a0
commit 8636b9295b

8
exec.c
View File

@ -2660,13 +2660,12 @@ void cpu_register_physical_memory_log(MemoryRegionSection *section,
*p = section_index;
}
} else {
MemoryRegion *mr = section->mr;
p = phys_page_find_alloc(addr >> TARGET_PAGE_BITS, 1);
*p = section_index;
if (!(memory_region_is_ram(mr) || mr->rom_device)) {
target_phys_addr_t start_addr2, end_addr2;
int need_subpage = 0;
p = phys_page_find_alloc(addr >> TARGET_PAGE_BITS, 1);
*p = section_index;
CHECK_SUBPAGE(addr, start_addr, start_addr2, end_addr,
end_addr2, need_subpage);
@ -2677,7 +2676,6 @@ void cpu_register_physical_memory_log(MemoryRegionSection *section,
section_index);
}
}
}
addr += TARGET_PAGE_SIZE;
} while (addr != end_addr);