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:
parent
1cca826549
commit
7c713b8acb
@ -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)
|
||||||
{
|
{
|
||||||
|
Loading…
Reference in New Issue
Block a user