Ballooning in protected VMs can only be done when the guest shares the pages it gives to the host. If pages are not shared, the integrity checks will fail once those pages have been altered and are given back to the guest.
Hence, until we have a solution for this in the guest kernel, we inhibit ballooning when switching into protected mode and reverse that once we move out of it. Signed-off-by: Janosch Frank <fran...@linux.ibm.com> Reviewed-by: David Hildenbrand <da...@redhat.com> --- hw/s390x/s390-virtio-ccw.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/hw/s390x/s390-virtio-ccw.c b/hw/s390x/s390-virtio-ccw.c index 038bad54cd..b039178004 100644 --- a/hw/s390x/s390-virtio-ccw.c +++ b/hw/s390x/s390-virtio-ccw.c @@ -41,6 +41,7 @@ #include "hw/qdev-properties.h" #include "hw/s390x/tod.h" #include "sysemu/sysemu.h" +#include "sysemu/balloon.h" #include "hw/s390x/pv.h" #include <linux/kvm.h> #include "migration/blocker.h" @@ -335,6 +336,7 @@ static void s390_machine_unprotect(S390CcwMachineState *ms) ms->pv = false; } migrate_del_blocker(pv_mig_blocker); + qemu_balloon_inhibit(false); } static int s390_machine_protect(S390CcwMachineState *ms) @@ -343,6 +345,7 @@ static int s390_machine_protect(S390CcwMachineState *ms) CPUState *t; int rc = -1; + qemu_balloon_inhibit(true); if (!pv_mig_blocker) { error_setg(&pv_mig_blocker, "protected VMs are currently not migrateable."); -- 2.20.1