a447edb5e5
- Include upstream patches targeted for the next stable release (bug fixes only) block-io-fix-bdrv_co_do_copy_on_readv.patch compat-disable-edid-on-correct-virtio-gp.patch target-ppc-Fix-rlwinm-on-ppc64.patch vhost-correctly-turn-on-VIRTIO_F_IOMMU_P.patch - s390x Protected Virtualization support - start and control guest in secure mode. (note: binary patch from patch series dropped since for s390x we rebuild the patched binary anyways) (bsc#1167075 jsc#SLE-7407) s390-sclp-improve-special-wait-psw-logic.patch s390x-Add-missing-vcpu-reset-functions.patch s390x-Add-SIDA-memory-ops.patch s390x-Add-unpack-facility-feature-to-GA1.patch s390x-Beautify-diag308-handling.patch s390x-Don-t-do-a-normal-reset-on-the-ini.patch s390x-ipl-Consolidate-iplb-validity-chec.patch s390x-kvm-Make-kvm_sclp_service_call-voi.patch s390x-Move-clear-reset.patch s390x-Move-diagnose-308-subcodes-and-rcs.patch s390x-Move-initial-reset.patch s390x-Move-reset-normal-to-shared-reset-.patch s390x-protvirt-Add-migration-blocker.patch s390x-protvirt-Disable-address-checks-fo.patch s390x-protvirt-Handle-SIGP-store-status-.patch s390x-protvirt-Inhibit-balloon-when-swit.patch s390x-protvirt-KVM-intercept-changes.patch s390x-protvirt-Move-diag-308-data-over-S.patch s390x-protvirt-Move-IO-control-structure.patch s390x-protvirt-Move-STSI-data-over-SIDAD.patch s390x-protvirt-SCLP-interpretation.patch s390x-protvirt-Set-guest-IPL-PSW.patch s390x-protvirt-Support-unpack-facility.patch Sync-pv.patch OBS-URL: https://build.opensuse.org/request/show/787000 OBS-URL: https://build.opensuse.org/package/show/Virtualization/qemu?expand=0&rev=538
61 lines
2.2 KiB
Diff
61 lines
2.2 KiB
Diff
From: Janosch Frank <frankja@linux.ibm.com>
|
|
Date: Mon, 13 May 2019 10:35:27 +0200
|
|
Subject: s390x: protvirt: KVM intercept changes
|
|
|
|
References: bsc#1167075
|
|
|
|
Protected VMs no longer intercept with code 4 for an instruction
|
|
interception. Instead they have codes 104 and 108 for protected
|
|
instruction interception and protected instruction notification
|
|
respectively.
|
|
|
|
The 104 mirrors the 4 interception.
|
|
|
|
The 108 is a notification interception to let KVM and QEMU know that
|
|
something changed and we need to update tracking information or
|
|
perform specific tasks. It's currently taken for the following
|
|
instructions:
|
|
|
|
* spx (To inform about the changed prefix location)
|
|
* sclp (On incorrect SCCB values, so we can inject a IRQ)
|
|
* sigp (All but "stop and store status")
|
|
* diag308 (Subcodes 0/1)
|
|
|
|
Of these exits only sclp errors, state changing sigps and diag308 will
|
|
reach QEMU. QEMU will do its parts of the job, while the ultravisor
|
|
has done the instruction part of the job.
|
|
|
|
Signed-off-by: Janosch Frank <frankja@linux.ibm.com>
|
|
Reviewed-by: David Hildenbrand <david@redhat.com>
|
|
Reviewed-by: Christian Borntraeger <borntraeger@de.ibm.com>
|
|
Reviewed-by: Claudio Imbrenda <imbrenda@linux.ibm.com>
|
|
Reviewed-by: Cornelia Huck <cohuck@redhat.com>
|
|
(cherry picked from commit fd70eb764f176c200d6723c2ad88362f23536bfa)
|
|
Signed-off-by: Bruce Rogers <brogers@suse.com>
|
|
---
|
|
target/s390x/kvm.c | 4 ++++
|
|
1 file changed, 4 insertions(+)
|
|
|
|
diff --git a/target/s390x/kvm.c b/target/s390x/kvm.c
|
|
index d8d02ff34f4fc942cb7935deec58..abeeaaa67452b0b938557b0d0dea 100644
|
|
--- a/target/s390x/kvm.c
|
|
+++ b/target/s390x/kvm.c
|
|
@@ -115,6 +115,8 @@
|
|
#define ICPT_CPU_STOP 0x28
|
|
#define ICPT_OPEREXC 0x2c
|
|
#define ICPT_IO 0x40
|
|
+#define ICPT_PV_INSTR 0x68
|
|
+#define ICPT_PV_INSTR_NOTIFICATION 0x6c
|
|
|
|
#define NR_LOCAL_IRQS 32
|
|
/*
|
|
@@ -1695,6 +1697,8 @@ static int handle_intercept(S390CPU *cpu)
|
|
(long)cs->kvm_run->psw_addr);
|
|
switch (icpt_code) {
|
|
case ICPT_INSTRUCTION:
|
|
+ case ICPT_PV_INSTR:
|
|
+ case ICPT_PV_INSTR_NOTIFICATION:
|
|
r = handle_instruction(cpu, run);
|
|
break;
|
|
case ICPT_PROGRAM:
|