qemu-devel
[Top][All Lists]
Advanced

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

Re: [Qemu-devel] [PATCH v2 0/3] fix bug about balloon working incorrectl


From: zhanghailiang
Subject: Re: [Qemu-devel] [PATCH v2 0/3] fix bug about balloon working incorrectly when hotplug memeory
Date: Tue, 18 Nov 2014 10:50:28 +0800
User-agent: Mozilla/5.0 (Windows NT 6.1; rv:31.0) Gecko/20100101 Thunderbird/31.1.1

On 2014/11/17 20:40, Michael S. Tsirkin wrote:
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.


OK, bellow errors are reported when do 'make -k' command after comment out 
'ram_size'
(The result is cut out from make-k-result.txt, you can find make-k-result.txt 
from affix).

/mnt/sdb/qemu/hw/cris/boot.c:80: error: ‘ram_size’ undeclared (first use in 
this function)
/mnt/sdb/qemu/hw/display/pxa2xx_lcd.c:304: error: ‘ram_size’ undeclared (first 
use in this function)
/mnt/sdb/qemu/hw/display/pxa2xx_lcd.c:834: error: ‘ram_size’ undeclared (first 
use in this function)
/mnt/sdb/qemu/hw/i386/../xenpv/xen_domainbuild.c:264: error: ‘ram_size’ 
undeclared (first use in this function)
/mnt/sdb/qemu/hw/i386/../xenpv/xen_domainbuild.c:82: error: ‘ram_size’ 
undeclared (first use in this function)
/mnt/sdb/qemu/hw/i386/pc.c:667: error: ‘ram_size’ undeclared (first use in this 
function)
/mnt/sdb/qemu/hw/i386/smbios.c:655: error: ‘ram_size’ undeclared (first use in 
this function)
/mnt/sdb/qemu/hw/i386/smbios.c:855: error: ‘ram_size’ undeclared (first use in 
this function)
/mnt/sdb/qemu/hw/intc/apic_common.c:317: error: ‘ram_size’ undeclared (first 
use in this function)
/mnt/sdb/qemu/hw/m68k/mcf5206.c:292: error: ‘ram_size’ undeclared (first use in 
this function)
/mnt/sdb/qemu/hw/m68k/mcf5208.c:142: error: ‘ram_size’ undeclared (first use in 
this function)
/mnt/sdb/qemu/hw/microblaze/boot.c:166: error: ‘ram_size’ undeclared (first use 
in this function)
/mnt/sdb/qemu/hw/mips/mips_fulong2e.c:132: error: ‘ram_size’ undeclared (first 
use in this function)
/mnt/sdb/qemu/hw/mips/mips_malta.c:823: error: ‘ram_size’ undeclared (first use 
in this function)
/mnt/sdb/qemu/hw/mips/mips_r4k.c:107: error: ‘ram_size’ undeclared (first use 
in this function)
/mnt/sdb/qemu/hw/misc/vmport.c:112: error: ‘ram_size’ undeclared (first use in 
this function)
/mnt/sdb/qemu/hw/moxie/moxiesim.c:80: error: ‘ram_size’ undeclared (first use 
in this function)
/mnt/sdb/qemu/hw/ppc/e500.c:865: error: ‘ram_size’ undeclared (first use in 
this function)
/mnt/sdb/qemu/hw/ppc/spapr.c:295: error: ‘ram_size’ undeclared (first use in 
this function)
/mnt/sdb/qemu/hw/ppc/spapr.c:684: error: ‘ram_size’ undeclared (first use in 
this function)
/mnt/sdb/qemu/hw/ppc/spapr_iommu.c:134: error: ‘ram_size’ undeclared (first use 
in this function)
/mnt/sdb/qemu/hw/s390x/ipl.c:102: error: ‘ram_size’ undeclared (first use in 
this function)
/mnt/sdb/qemu/hw/s390x/s390-virtio-ccw.c:121: error: ‘ram_size’ undeclared 
(first use in this function)
/mnt/sdb/qemu/hw/s390x/s390-virtio-ccw.c:69: error: ‘ram_size’ undeclared 
(first use in this function)
/mnt/sdb/qemu/hw/s390x/s390-virtio.c:218: error: ‘ram_size’ undeclared (first 
use in this function)
/mnt/sdb/qemu/hw/s390x/s390-virtio.c:73: error: ‘ram_size’ undeclared (first 
use in this function)
/mnt/sdb/qemu/hw/s390x/sclp.c:142: error: ‘ram_size’ undeclared (first use in 
this function)
/mnt/sdb/qemu/hw/s390x/sclp.c:195: error: ‘ram_size’ undeclared (first use in 
this function)
/mnt/sdb/qemu/hw/s390x/sclp.c:71: error: ‘ram_size’ undeclared (first use in 
this function)
/mnt/sdb/qemu/hw/sparc/sun4m.c:1090: error: ‘ram_size’ undeclared (first use in 
this function)
/mnt/sdb/qemu/hw/sparc64/sun4u.c:418: error: ‘ram_size’ undeclared (first use 
in this function)
/mnt/sdb/qemu/hw/sparc64/sun4u.c:882: error: ‘ram_size’ undeclared (first use 
in this function)
/mnt/sdb/qemu/hw/virtio/virtio-balloon.c:300: error: ‘ram_size’ undeclared 
(first use in this function)
/mnt/sdb/qemu/hw/virtio/virtio-balloon.c:315: error: ‘ram_size’ undeclared 
(first use in this function)
/mnt/sdb/qemu/hw/virtio/virtio-balloon.c:324: error: ‘ram_size’ undeclared 
(first use in this function)
/mnt/sdb/qemu/numa.c:202: error: ‘ram_size’ undeclared (first use in this 
function)
/mnt/sdb/qemu/target-arm/arm-semi.c:538: error: ‘ram_size’ undeclared (first 
use in this function)
/mnt/sdb/qemu/target-m68k/m68k-semi.c:459: error: ‘ram_size’ undeclared (first 
use in this function)
/mnt/sdb/qemu/target-ppc/kvm_ppc.h:180: error: ‘ram_size’ undeclared (first use 
in this function)
/mnt/sdb/qemu/target-s390x/helper.c:417: error: ‘ram_size’ undeclared (first 
use in this function)
/mnt/sdb/qemu/target-s390x/helper.c:457: error: ‘ram_size’ undeclared (first 
use in this function)
/mnt/sdb/qemu/target-s390x/mem_helper.c:878: error: ‘ram_size’ undeclared 
(first use in this function)
/mnt/sdb/qemu/target-s390x/mem_helper.c:890: error: ‘ram_size’ undeclared 
(first use in this function)
/mnt/sdb/qemu/target-s390x/mem_helper.c:903: error: ‘ram_size’ undeclared 
(first use in this function)
/mnt/sdb/qemu/translate-all.c:499: error: ‘ram_size’ undeclared (first use in 
this function)
/mnt/sdb/qemu/xen-hvm.c:1157: error: ‘ram_size’ undeclared (first use in this 
function)

For hotplug memory is only supported in x86 target now, so i think we should 
only
force on x86 related error reports, and most of them are used in VM's boot 
initializtion,
except numa.c, virtio-balloon, translate-all.c, pxa2xx_lcd.c, vmport.c where 
use ram_size.
And the last three i'm not quite sure if they are broken, i'm not familiar
with these codes. Do you know them? ;)


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.


Got it, so it does not break migration at all ;)

Thanks,
zhanghailiang
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


.








.


Attachment: make-k-result.txt
Description: Text document


reply via email to

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