On Mon, Nov 17, 2014 at 08:25:14PM +0800, zhanghailiang wrote: > On 2014/11/17 18:53, zhanghailiang wrote: > >On 2014/11/17 18:39, Michael S. Tsirkin wrote: > >>On Mon, Nov 17, 2014 at 01:11:07PM +0800, zhanghailiang wrote: > >>>Hi, > >>> > >>>Patch 1 and 2 mainly fix bug about balloon not working correctly when we do > >>>hotplug memory. It takes 'ram_size' as VM's real RAM size which is wrong > >>>after we hotplug memory. > >>> > >>>This bug exists since we begin to support hotplug memory, and it is better > >>>to fix it. > >>> > >>>Patch 3 add some trace events, it helps debugging balloon. If it is > >>>unnecessary, > >>>pls feel free to remove it. > >>> > >>>Thanks, > >>>zhanghailiang > >> > >>What about other users of ram_size? > >>Are they all incorrect? > >> > > > >pc-dimm is only supported in x86 target now, and i am not quite sure if > >hotplug > >memory will break migration. I'll look into it. Thanks. > > > > Hi Michael, > > I have made a global search in qemu code, ram_size is used mostly for VM's > startup initialization, I think it's all OK except virtio-balloon and > function vmport_cmd_ram_size (I'm not sure about this place :( ).
Comment out ram_size in header, and see what breaks. > But, Unfortunately, hotplug memory action breaks migration. :( > I have made a simple test about this: > > Source: > # start VM > # hotplug memory: > object_add memory-backend-ram,id=ram1,size=1024M,host-nodes=0,policy=bind > device_add pc-dimm,id=dimm1,memdev=ram1 > # migrate VM to Destination > > Destination: > # qemu-system-x86_64: Unknown ramblock "ram1", cannot accept migration > qemu: warning: error while loading state for instance 0x0 of device 'ram' > qemu-system-x86_64: load of migration failed: Invalid argument > > *further test*: > hot-add CPU also break migration and reports error in destination: > 'Unknown savevm section or instance 'cpu_common' 4 > qemu-system-x86_64: load of migration failed: Invalid argument' > > I think we should support migration after hotplug memory/CPU action, > what's your opinion? ;) You must configure identical hardware on source and destination. This means that after adding memory on source, you must specify it (on command line) for destination. > I will try to fix these two problems. > > Thanks, > zhanghailiang > >>>v2: > >>>- fix compiling break for other targets that don't support pc-dimm > >>> > >>>zhanghailiang (3): > >>> pc-dimm: add a function to calculate VM's current RAM size > >>> virtio-balloon: Fix balloon not working correctly when hotplug memory > >>> virtio-balloon: Add some trace events > >>> > >>> hw/mem/pc-dimm.c | 26 ++++++++++++++++++++++++++ > >>> hw/virtio/virtio-balloon.c | 21 +++++++++++++++------ > >>> include/exec/cpu-common.h | 1 + > >>> stubs/qmp_pc_dimm_device_list.c | 5 +++++ > >>> trace-events | 4 ++++ > >>> 5 files changed, 51 insertions(+), 6 deletions(-) > >>> > >>>-- > >>>1.7.12.4 > >>> > >> > >>. > >> > > > > > > > > > > >