Hello all,
I am doing a KVM-TCG migration of VMState as follows.
I start the QEMU process in KVM mode using the below command line -
sudo ./qemu-system-x86_64 -m 1024 --machine pc-i440fx-2.5 -netdev tap,id=tap1,ifname=tap0,script=no,downscript=no --accel kvm -device virtio-net-pci,netdev=tap1,mac=00:00:00:00:00:00 -drive file=~/os_images_for_qemu/ubuntu-16.04.server.qcow2,format=qcow2,if=none,id=img-direct -device virtio-blk-pci,drive=img-direct
I run an application in the VM and then after a while, I run the below commands in the QEMU monitor to save the VMState -
stop -> savevm -> c
I load the saved VMState in TCG mode, using the below command line
sudo ./qemu-system-x86_64 -m 1024 --machine pc-i440fx-2.5 -netdev tap,id=tap1,ifname=tap0,script=no,downscript=no --accel tcg -device virtio-net-pci,netdev=tap1,mac=00:00:00:00:00:00 -drive file=~/os_images_for_qemu/ubuntu-16.04.server.qcow2,format=qcow2,if=none,id=img-direct -device virtio-blk-pci,drive=img-direct -loadvm vm-20200929234419
I see that the VM in TCG mode gets stuck and after observation, I see that the TCG mode encounters a PAGE FAULT in the below sequence of function calls-
hrtimer_interrupt -> _hrtimer_run_queues -> remove_hrtimer -> timerqueue_del -> rb_next (fault)
I have 2 questions to ask-
1. Is it possible that the savevm operation in KVM mode does not copy the state of the
timerqueues associated with a particular clock correctly in memory ?
2. Or am I missing some hardware configuration in TCG (or KVM) that does not allow the TCG mode
to read the timerqueue details correctly ?
Note:
I am running QEMU-3.0. The guest is a Linux kernel with version 4.4.0-116-generic. The host
and guest architecture is x86_64.
Best Regards,
Arnab