qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Qemu-devel] [PATCH 10/20] memory: fix RAM subpages in newly initialized


From: Avi Kivity
Subject: [Qemu-devel] [PATCH 10/20] memory: fix RAM subpages in newly initialized pages
Date: Tue, 14 Feb 2012 11:27:40 +0200

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 db7b5426a4b4242, which introduced subpages.

Signed-off-by: Avi Kivity <address@hidden>
---
 exec.c |   22 ++++++++++------------
 1 files changed, 10 insertions(+), 12 deletions(-)

diff --git a/exec.c b/exec.c
index 0756919..5d0afdb 100644
--- a/exec.c
+++ b/exec.c
@@ -2660,22 +2660,20 @@ void 
cpu_register_physical_memory_log(MemoryRegionSection *section,
                 *p = section_index;
             }
         } else {
-            MemoryRegion *mr = section->mr;
+            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;
-            if (!(memory_region_is_ram(mr) || mr->rom_device)) {
-                target_phys_addr_t start_addr2, end_addr2;
-                int need_subpage = 0;
 
-                CHECK_SUBPAGE(addr, start_addr, start_addr2, end_addr,
-                              end_addr2, need_subpage);
+            CHECK_SUBPAGE(addr, start_addr, start_addr2, end_addr,
+                          end_addr2, need_subpage);
 
-                if (need_subpage) {
-                    subpage = subpage_init((addr & TARGET_PAGE_MASK),
-                                           p, phys_section_unassigned);
-                    subpage_register(subpage, start_addr2, end_addr2,
-                                     section_index);
-                }
+            if (need_subpage) {
+                subpage = subpage_init((addr & TARGET_PAGE_MASK),
+                                       p, phys_section_unassigned);
+                subpage_register(subpage, start_addr2, end_addr2,
+                                 section_index);
             }
         }
         addr += TARGET_PAGE_SIZE;
-- 
1.7.9




reply via email to

[Prev in Thread] Current Thread [Next in Thread]