Description: KVM: s390: pv: don't allow userspace to set the clock under PV
Symptom: Timer issues and RCU stalls after suspending and resuming an IBM Secure Execution guest
Problem: KVM and QEMU try to set the guest's TOD clock after resume under PV, even though that is not permitted under SE. Hence, their view of the guest clock may deviate from the ultravisor's, possibly causing KVM to re-dispatch the guest too late on clock comparator interrupts.
Solution: Don't set the clock after resume under PV. Note that kernel and
QEMU patches are required in lockstep, to avoid a warning message
in QEMU.
Reproduction: 1. Start SE guest using libvirt.
2. Pause the guest using "virsh suspend", wait for a few seconds, resume using "virsh resume".
3. Run "time sleep 1" in the guest.
4. The sleep will sleep much longer than one second.
Please note that fixing the described problem requires patches for the kernel as well as for QEMU.
This bug covers the qemu part, whereas the required kernel part is described and handled in the following related bug:
Bug 200889 - [UBUNTU 20.04] KVM: s390: pv: don't allow userspace to set the clock under PV - kernel part
Both parts, the kernel and the qemu patches should be applied / released at the same time to avoid problems resulting in the following warning message for customers:
'warning: Unable to set KVM guest TOD clock: Operation not supported'
Description: KVM: s390: pv: don't allow userspace to set the clock under PV
Symptom: Timer issues and RCU stalls after suspending and resuming an IBM
Secure Execution guest
Problem: KVM and QEMU try to set the guest's TOD clock after resume
under PV, even though that is not permitted under SE. Hence,
their view of the guest clock may deviate from the ultravisor's,
possibly causing KVM to re-dispatch the guest too late on clock
comparator interrupts.
Solution: Don't set the clock after resume under PV. Note that kernel and
QEMU patches are required in lockstep, to avoid a warning message
in QEMU.
Reproduction: 1. Start SE guest using libvirt.
seconds, resume using "virsh resume".
2. Pause the guest using "virsh suspend", wait for a few
3. Run "time sleep 1" in the guest.
4. The sleep will sleep much longer than one second.
Component: qemu
Upstream-ID: 38621181ae3cbec 62e3490fbc14f6a c01642d07a
Preventive: yes
Author: Nico Boehr <email address hidden>
Please note that fixing the described problem requires patches for the kernel as well as for QEMU.
This bug covers the qemu part, whereas the required kernel part is described and handled in the following related bug:
Bug 200889 - [UBUNTU 20.04] KVM: s390: pv: don't allow userspace to set the clock under PV - kernel part
Both parts, the kernel and the qemu patches should be applied / released at the same time to avoid problems resulting in the following warning message for customers:
'warning: Unable to set KVM guest TOD clock: Operation not supported'