@@ -190,6 +190,14 @@ void xen_ram_alloc(ram_addr_t ram_addr, ram_addr_t size, MemoryRegion *mr)
xen_pfn_t *pfn_list;
int i;
+ if (runstate_check(RUN_STATE_INMIGRATE)) {
+ /* RAM already populated in Xen */
+ fprintf(stderr, "%s: do not alloc "RAM_ADDR_FMT
+ " bytes of ram at "RAM_ADDR_FMT" when runstate is INMIGRATE\n",
+ __func__, size, ram_addr);
+ return;
+ }
+
if (mr == &ram_memory) {
return;
}
@@ -255,6 +263,14 @@ static int xen_add_to_physmap(XenIOState *state,
target_phys_addr_t phys_offset = memory_region_get_ram_addr(mr);
char path[80], value[17];
+ if (runstate_check(RUN_STATE_INMIGRATE)) {
+ fprintf(stderr, "%s: do not add "RAM_ADDR_FMT
+ " bytes of ram to physmap at "RAM_ADDR_FMT
+ " when runstate is INMIGRATE\n",
+ __func__, size, start_addr);
+ return 0;
+ }
+
if (get_physmapping(state, start_addr, size)) {
return 0;
}