Message ID | 20200214151636.8764-10-frankja@linux.ibm.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | s390x: Protected Virtualization support | expand |
On Fri, 14 Feb 2020 10:16:28 -0500 Janosch Frank <frankja@linux.ibm.com> wrote: > 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> > --- > target/s390x/kvm.c | 15 ++++++++++++--- > 1 file changed, 12 insertions(+), 3 deletions(-) > > diff --git a/target/s390x/kvm.c b/target/s390x/kvm.c > index eec0b92479..fe669ed24c 100644 > --- a/target/s390x/kvm.c > +++ b/target/s390x/kvm.c > @@ -1772,11 +1772,16 @@ static int handle_tsch(S390CPU *cpu) > > static void insert_stsi_3_2_2(S390CPU *cpu, __u64 addr, uint8_t ar) > { > + CPUS390XState *env = &cpu->env; > SysIB_322 sysib; > int del; > > - if (s390_cpu_virt_mem_read(cpu, addr, ar, &sysib, sizeof(sysib))) { > - return; > + if (env->pv) { > + s390_cpu_pv_mem_read(cpu, 0, &sysib, sizeof(sysib)); This is only introduced by the next patch, right? > + } else { > + if (s390_cpu_virt_mem_read(cpu, addr, ar, &sysib, sizeof(sysib))) { > + return; > + } > } > /* Shift the stack of Extended Names to prepare for our own data */ > memmove(&sysib.ext_names[1], &sysib.ext_names[0], > @@ -1815,7 +1820,11 @@ static void insert_stsi_3_2_2(S390CPU *cpu, __u64 addr, uint8_t ar) > /* Insert UUID */ > memcpy(sysib.vm[0].uuid, &qemu_uuid, sizeof(sysib.vm[0].uuid)); > > - s390_cpu_virt_mem_write(cpu, addr, ar, &sysib, sizeof(sysib)); > + if (env->pv) { > + s390_cpu_pv_mem_write(cpu, 0, &sysib, sizeof(sysib)); > + } else { > + s390_cpu_virt_mem_write(cpu, addr, ar, &sysib, sizeof(sysib)); > + } > } > > static int handle_stsi(S390CPU *cpu)
On 2/20/20 11:54 AM, Cornelia Huck wrote: > On Fri, 14 Feb 2020 10:16:28 -0500 > Janosch Frank <frankja@linux.ibm.com> wrote: > >> 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> >> --- >> target/s390x/kvm.c | 15 ++++++++++++--- >> 1 file changed, 12 insertions(+), 3 deletions(-) >> >> diff --git a/target/s390x/kvm.c b/target/s390x/kvm.c >> index eec0b92479..fe669ed24c 100644 >> --- a/target/s390x/kvm.c >> +++ b/target/s390x/kvm.c >> @@ -1772,11 +1772,16 @@ static int handle_tsch(S390CPU *cpu) >> >> static void insert_stsi_3_2_2(S390CPU *cpu, __u64 addr, uint8_t ar) >> { >> + CPUS390XState *env = &cpu->env; >> SysIB_322 sysib; >> int del; >> >> - if (s390_cpu_virt_mem_read(cpu, addr, ar, &sysib, sizeof(sysib))) { >> - return; >> + if (env->pv) { >> + s390_cpu_pv_mem_read(cpu, 0, &sysib, sizeof(sysib)); > > This is only introduced by the next patch, right? Ups, time to reorder. > >> + } else { >> + if (s390_cpu_virt_mem_read(cpu, addr, ar, &sysib, sizeof(sysib))) { >> + return; >> + } >> } >> /* Shift the stack of Extended Names to prepare for our own data */ >> memmove(&sysib.ext_names[1], &sysib.ext_names[0], >> @@ -1815,7 +1820,11 @@ static void insert_stsi_3_2_2(S390CPU *cpu, __u64 addr, uint8_t ar) >> /* Insert UUID */ >> memcpy(sysib.vm[0].uuid, &qemu_uuid, sizeof(sysib.vm[0].uuid)); >> >> - s390_cpu_virt_mem_write(cpu, addr, ar, &sysib, sizeof(sysib)); >> + if (env->pv) { >> + s390_cpu_pv_mem_write(cpu, 0, &sysib, sizeof(sysib)); >> + } else { >> + s390_cpu_virt_mem_write(cpu, addr, ar, &sysib, sizeof(sysib)); >> + } >> } >> >> static int handle_stsi(S390CPU *cpu) > >
diff --git a/target/s390x/kvm.c b/target/s390x/kvm.c index eec0b92479..fe669ed24c 100644 --- a/target/s390x/kvm.c +++ b/target/s390x/kvm.c @@ -1772,11 +1772,16 @@ static int handle_tsch(S390CPU *cpu) static void insert_stsi_3_2_2(S390CPU *cpu, __u64 addr, uint8_t ar) { + CPUS390XState *env = &cpu->env; SysIB_322 sysib; int del; - if (s390_cpu_virt_mem_read(cpu, addr, ar, &sysib, sizeof(sysib))) { - return; + if (env->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; + } } /* Shift the stack of Extended Names to prepare for our own data */ memmove(&sysib.ext_names[1], &sysib.ext_names[0], @@ -1815,7 +1820,11 @@ static void insert_stsi_3_2_2(S390CPU *cpu, __u64 addr, uint8_t ar) /* Insert UUID */ memcpy(sysib.vm[0].uuid, &qemu_uuid, sizeof(sysib.vm[0].uuid)); - s390_cpu_virt_mem_write(cpu, addr, ar, &sysib, sizeof(sysib)); + if (env->pv) { + s390_cpu_pv_mem_write(cpu, 0, &sysib, sizeof(sysib)); + } else { + s390_cpu_virt_mem_write(cpu, addr, ar, &sysib, sizeof(sysib)); + } } static int handle_stsi(S390CPU *cpu)
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> --- target/s390x/kvm.c | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-)