[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH v8 04/15] s390x: protvirt: Inhibit balloon when switching to prot
From: |
Janosch Frank |
Subject: |
[PATCH v8 04/15] s390x: protvirt: Inhibit balloon when switching to protected mode |
Date: |
Tue, 10 Mar 2020 09:39:57 -0400 |
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 guest balloon driver will reject to
work with the IOMMU change
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>
---
hw/s390x/s390-virtio-ccw.c | 5 +++++
1 file changed, 5 insertions(+)
diff --git a/hw/s390x/s390-virtio-ccw.c b/hw/s390x/s390-virtio-ccw.c
index 1ceb42c0b5..8fac7221b1 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"
@@ -328,6 +329,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)
@@ -335,10 +337,12 @@ static int s390_machine_protect(S390CcwMachineState *ms)
static Error *local_err;
int rc;
+ 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 (local_err) {
+ qemu_balloon_inhibit(false);
error_report_err(local_err);
error_free_or_abort(&pv_mig_blocker);
return rc;
@@ -347,6 +351,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);
error_free_or_abort(&pv_mig_blocker);
return rc;
--
2.20.1
- [PATCH v8 11/15] s390x: protvirt: Disable address checks for PV guest IO emulation, (continued)
- [PATCH v8 11/15] s390x: protvirt: Disable address checks for PV guest IO emulation, Janosch Frank, 2020/03/10
- [PATCH v8 02/15] s390x: protvirt: Support unpack facility, Janosch Frank, 2020/03/10
- [PATCH v8 12/15] s390x: protvirt: Move IO control structures over SIDA, Janosch Frank, 2020/03/10
- [PATCH v8 08/15] s390x: protvirt: SCLP interpretation, Janosch Frank, 2020/03/10
- [PATCH v8 01/15] Sync pv, Janosch Frank, 2020/03/10
- [PATCH v8 04/15] s390x: protvirt: Inhibit balloon when switching to protected mode,
Janosch Frank <=
- [PATCH v8 05/15] s390x: protvirt: KVM intercept changes, Janosch Frank, 2020/03/10
- [PATCH v8 13/15] s390x: protvirt: Handle SIGP store status correctly, Janosch Frank, 2020/03/10
- [PATCH v8 10/15] s390x: protvirt: Move diag 308 data over SIDA, Janosch Frank, 2020/03/10
- [PATCH v8 09/15] s390x: protvirt: Set guest IPL PSW, Janosch Frank, 2020/03/10