[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PULL 06/20] s390x: protvirt: Inhibit balloon when switching to protecte
From: |
Cornelia Huck |
Subject: |
[PULL 06/20] s390x: protvirt: Inhibit balloon when switching to protected mode |
Date: |
Thu, 30 Apr 2020 11:44:31 +0200 |
From: Janosch Frank <address@hidden>
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.
As we currently do not yet have a solution for this we will continue
like this:
1. We block ballooning now in QEMU (with this patch).
2. Later we will provide a change to virtio that removes the blocker
and adds VIRTIO_F_IOMMU_PLATFORM automatically by QEMU when doing the
protvirt switch. This is OK, as the balloon driver in Linux (the only
supported guest) will refuse to work with the IOMMU_PLATFORM feature
bit set.
3. Later, we can fix the guest balloon driver to accept the IOMMU
feature bit and correctly exercise sharing and unsharing of balloon
pages.
Signed-off-by: Janosch Frank <address@hidden>
Reviewed-by: David Hildenbrand <address@hidden>
Reviewed-by: Christian Borntraeger <address@hidden>
Reviewed-by: Claudio Imbrenda <address@hidden>
Reviewed-by: Cornelia Huck <address@hidden>
Message-Id: <address@hidden>
Signed-off-by: Cornelia Huck <address@hidden>
---
hw/s390x/s390-virtio-ccw.c | 11 +++++++++++
1 file changed, 11 insertions(+)
diff --git a/hw/s390x/s390-virtio-ccw.c b/hw/s390x/s390-virtio-ccw.c
index e00040a00ba6..db45249320ab 100644
--- a/hw/s390x/s390-virtio-ccw.c
+++ b/hw/s390x/s390-virtio-ccw.c
@@ -43,6 +43,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"
@@ -329,6 +330,7 @@ static void s390_machine_unprotect(S390CcwMachineState *ms)
ms->pv = false;
migrate_del_blocker(pv_mig_blocker);
error_free_or_abort(&pv_mig_blocker);
+ qemu_balloon_inhibit(false);
}
static int s390_machine_protect(S390CcwMachineState *ms)
@@ -336,10 +338,18 @@ static int s390_machine_protect(S390CcwMachineState *ms)
Error *local_err = NULL;
int rc;
+ /*
+ * Ballooning on protected VMs needs support in the guest for
+ * sharing and unsharing balloon pages. Block ballooning for
+ * now, until we have a solution to make at least Linux guests
+ * either support it or fail gracefully.
+ */
+ qemu_balloon_inhibit(true);
error_setg(&pv_mig_blocker,
"protected VMs are currently not migrateable.");
rc = migrate_add_blocker(pv_mig_blocker, &local_err);
if (rc) {
+ qemu_balloon_inhibit(false);
error_report_err(local_err);
error_free_or_abort(&pv_mig_blocker);
return rc;
@@ -348,6 +358,7 @@ static int s390_machine_protect(S390CcwMachineState *ms)
/* Create SE VM */
rc = s390_pv_vm_enable();
if (rc) {
+ qemu_balloon_inhibit(false);
error_report_err(local_err);
migrate_del_blocker(pv_mig_blocker);
error_free_or_abort(&pv_mig_blocker);
--
2.21.1
- [PULL 00/20] first set of s390x patches for 5.1, Cornelia Huck, 2020/04/30
- [PULL 01/20] virtio-net: fix rsc_ext compat handling, Cornelia Huck, 2020/04/30
- [PULL 02/20] linux-headers: update against Linux 5.7-rc3, Cornelia Huck, 2020/04/30
- [PULL 03/20] s390x: Move diagnose 308 subcodes and rcs into ipl.h, Cornelia Huck, 2020/04/30
- [PULL 05/20] s390x: protvirt: Add migration blocker, Cornelia Huck, 2020/04/30
- [PULL 06/20] s390x: protvirt: Inhibit balloon when switching to protected mode,
Cornelia Huck <=
- [PULL 04/20] s390x: protvirt: Support unpack facility, Cornelia Huck, 2020/04/30
- [PULL 07/20] s390x: protvirt: KVM intercept changes, Cornelia Huck, 2020/04/30
- [PULL 08/20] s390x: Add SIDA memory ops, Cornelia Huck, 2020/04/30
- [PULL 09/20] s390x: protvirt: Move STSI data over SIDAD, Cornelia Huck, 2020/04/30
- [PULL 10/20] s390x: protvirt: SCLP interpretation, Cornelia Huck, 2020/04/30
- [PULL 11/20] s390x: protvirt: Set guest IPL PSW, Cornelia Huck, 2020/04/30
- [PULL 12/20] s390x: protvirt: Move diag 308 data over SIDA, Cornelia Huck, 2020/04/30
- [PULL 13/20] s390x: protvirt: Disable address checks for PV guest IO emulation, Cornelia Huck, 2020/04/30
- [PULL 14/20] s390x: protvirt: Move IO control structures over SIDA, Cornelia Huck, 2020/04/30
- [PULL 15/20] s390x: protvirt: Handle SIGP store status correctly, Cornelia Huck, 2020/04/30