On 04/16/2015 04:53 PM, Mark Cave-Ayland wrote:
On 16/04/15 20:49, Stefan Berger wrote:
Hmmmm the fix is correct in that internal MSR variables need to be
updated post-restore (as noted in the message above it was the exception
prefix variables that weren't updated by having MSR_EP set).
Maybe on ppc64 there is another bit similar to MSR_TGPR that needs to be
excluded? Alex, any thoughts?
I want to add that I am running QEMU for ppc64 in emulation mode on a
x86_64 host. The suspend/resume problem, while in SLOF, did not exist in
QEMU v2.2, so I anticipate that this is a regression would also be
visible on QEMU on kvm, though a simple test on such a machine may show
different...
Removing the patch solves the problem while in SLOF. Once booting into
Linux suspend/resume does not work - with qemu-system-ppc64 on x86_64
host. Timestamps shown by Linux actually make a jump backwards and
ultimately Linux hangs.
Just to clarify the terminology here, when you say suspend/resume are
you talking about a hardware suspend/resume or issuing a savevm/loadvm
sequence in the QEMU monitor? Are you able to provide further detail to
reproduce your test case?
I am using 'virsh save' to suspend the VM, 'virsh restore' to resume it,
so I am doing this on libvirt level.
This is the XML to just test suspend / resume while it is in SLOF. No
disk needed.
<domain type='qemu'>
<name>ppc-test</name>
<uuid>3e17dcdb-4a22-49ed-b8f9-4df523d04bb3</uuid>
<memory unit='KiB'>1310720</memory>
<currentMemory unit='KiB'>1310720</currentMemory>
<vcpu placement='static'>1</vcpu>
<resource>
<partition>/machine</partition>
</resource>
<os>
<type arch='ppc64' machine='pseries-2.2'>hvm</type>
<boot dev='hd'/>
<boot dev='cdrom'/>
</os>
<clock offset='utc'/>
<on_poweroff>destroy</on_poweroff>
<on_reboot>restart</on_reboot>
<on_crash>restart</on_crash>
<devices>
<emulator>/usr/bin/qemu-system-ppc64</emulator>
<controller type='usb' index='0'>
<address type='pci' domain='0x0000' bus='0x00' slot='0x01'
function='0x0'/>
</controller>
<controller type='pci' index='0' model='pci-root'/>
<input type='keyboard' bus='usb'/>
<input type='mouse' bus='usb'/>
<graphics type='vnc' port='-1' autoport='yes' listen='0.0.0.0'>
<listen type='address' address='0.0.0.0'/>
</graphics>
<video>
<model type='vga' vram='16384' heads='1'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x05'
function='0x0'/>
</video>
<memballoon model='virtio'>
<address type='pci' domain='0x0000' bus='0x00' slot='0x02'
function='0x0'/>
</memballoon>
</devices>
<seclabel type='dynamic' model='selinux' relabel='yes'/>
</domain>
Stefan
ATB,
Mark.