Merge remote-tracking branch 'qemu-kvm/fix-vhost-after-memory-listener' into staging * qemu-kvm/fix-vhost-after-memory-listener: vhost: improve region filtering vhost: fix mem_sections memory corruption vhost: fix incorrect userspace address
diff --git a/memory.c b/memory.c index 394cbab..5ab2112 100644 --- a/memory.c +++ b/memory.c
@@ -843,7 +843,7 @@ static bool memory_region_wrong_endianness(MemoryRegion *mr) { -#ifdef TARGET_BIG_ENDIAN +#ifdef TARGET_WORDS_BIGENDIAN return mr->ops->endianness == DEVICE_LITTLE_ENDIAN; #else return mr->ops->endianness == DEVICE_BIG_ENDIAN; @@ -942,6 +942,7 @@ break; case 4: *data = bswap32(*data); + break; default: abort(); }
diff --git a/savevm.c b/savevm.c index 88c4bd8..80be1ff 100644 --- a/savevm.c +++ b/savevm.c
@@ -2284,7 +2284,7 @@ void vmstate_register_ram(MemoryRegion *mr, DeviceState *dev) { - qemu_ram_set_idstr(memory_region_get_ram_addr(mr), + qemu_ram_set_idstr(memory_region_get_ram_addr(mr) & TARGET_PAGE_MASK, memory_region_name(mr), dev); }
diff --git a/target-ppc/kvm.c b/target-ppc/kvm.c index 9b2e605..ce8ac5b 100644 --- a/target-ppc/kvm.c +++ b/target-ppc/kvm.c
@@ -822,7 +822,8 @@ }; rma_region = g_new(MemoryRegion, 1); - memory_region_init_ram_ptr(rma_region, NULL, name, size, rma); + memory_region_init_ram_ptr(rma_region, name, size, rma); + vmstate_register_ram_global(rma_region); memory_region_add_subregion(sysmem, 0, rma_region); return size;