s390x: protvirt: Move STSI data over SIDAD

For protected guests, we need to put the STSI emulation results into
the SIDA, so SIE will write them into the guest at the next entry.

Signed-off-by: Janosch Frank <frankja@linux.ibm.com>
Reviewed-by: David Hildenbrand <david@redhat.com>
Reviewed-by: Claudio Imbrenda <imbrenda@linux.ibm.com>
Reviewed-by: Cornelia Huck <cohuck@redhat.com>
Message-Id: <20200319131921.2367-9-frankja@linux.ibm.com>
Signed-off-by: Cornelia Huck <cohuck@redhat.com>
This commit is contained in:
Janosch Frank 2020-03-19 09:19:13 -04:00 committed by Cornelia Huck
parent 1cca826549
commit 7c713b8acb

View File

@ -50,6 +50,7 @@
#include "exec/memattrs.h" #include "exec/memattrs.h"
#include "hw/s390x/s390-virtio-ccw.h" #include "hw/s390x/s390-virtio-ccw.h"
#include "hw/s390x/s390-virtio-hcall.h" #include "hw/s390x/s390-virtio-hcall.h"
#include "hw/s390x/pv.h"
#ifndef DEBUG_KVM #ifndef DEBUG_KVM
#define DEBUG_KVM 0 #define DEBUG_KVM 0
@ -1808,7 +1809,9 @@ static void insert_stsi_3_2_2(S390CPU *cpu, __u64 addr, uint8_t ar)
SysIB_322 sysib; SysIB_322 sysib;
int del, i; int del, i;
if (s390_cpu_virt_mem_read(cpu, addr, ar, &sysib, sizeof(sysib))) { if (s390_is_pv()) {
s390_cpu_pv_mem_read(cpu, 0, &sysib, sizeof(sysib));
} else if (s390_cpu_virt_mem_read(cpu, addr, ar, &sysib, sizeof(sysib))) {
return; return;
} }
/* Shift the stack of Extended Names to prepare for our own data */ /* Shift the stack of Extended Names to prepare for our own data */
@ -1861,8 +1864,12 @@ static void insert_stsi_3_2_2(S390CPU *cpu, __u64 addr, uint8_t ar)
/* Insert UUID */ /* Insert UUID */
memcpy(sysib.vm[0].uuid, &qemu_uuid, sizeof(sysib.vm[0].uuid)); memcpy(sysib.vm[0].uuid, &qemu_uuid, sizeof(sysib.vm[0].uuid));
if (s390_is_pv()) {
s390_cpu_pv_mem_write(cpu, 0, &sysib, sizeof(sysib));
} else {
s390_cpu_virt_mem_write(cpu, addr, ar, &sysib, sizeof(sysib)); s390_cpu_virt_mem_write(cpu, addr, ar, &sysib, sizeof(sysib));
} }
}
static int handle_stsi(S390CPU *cpu) static int handle_stsi(S390CPU *cpu)
{ {