If cpu-memory address space is same as memory address space,
use memory address space for cpu-memory address space.
any memory region change causeaddress space to rebuild PhysPageMap,
rebuilding PhysPageMap is very expensive.
removing cpu-memory address space reduces the guest boot time and
memory usage.
Signed-off-by: Anthony Xu <anthony...@intel.com>
---
cpus.c | 9 +++++++--
1 file changed, 7 insertions(+), 2 deletions(-)
diff --git a/cpus.c b/cpus.c
index 740b8dc..15c7a6a 100644
--- a/cpus.c
+++ b/cpus.c
@@ -1748,8 +1748,13 @@ void qemu_init_vcpu(CPUState *cpu)
/* If the target cpu hasn't set up any address spaces itself,
* give it the default one.
*/
- AddressSpace *as = address_space_init_shareable(cpu->memory,
- "cpu-memory");
+ AddressSpace *as;
+ if (cpu->memory == address_space_memory.root) {
+ address_space_memory.ref_count++;
+ as = &address_space_memory;
+ } else {
+ as = address_space_init_shareable(cpu->memory, "cpu-memory");
+ }
cpu->num_ases = 1;
cpu_address_space_init(cpu, as, 0);
}
--
1.8.3.1