On 3/17/20 12:36 PM, Cornelia Huck wrote: > On Wed, 11 Mar 2020 09:21:47 -0400 > Janosch Frank <fran...@linux.ibm.com> wrote: > >> IO instruction data is routed through SIDAD for protected guests, so >> adresses do not need to be checked, as this is kernel memory. >> >> Signed-off-by: Janosch Frank <fran...@linux.ibm.com> >> Reviewed-by: Thomas Huth <th...@redhat.com> >> Reviewed-by: David Hildenbrand <da...@redhat.com> >> --- >> target/s390x/ioinst.c | 33 ++++++++++++++++++++++++++------- >> 1 file changed, 26 insertions(+), 7 deletions(-) >> >> diff --git a/target/s390x/ioinst.c b/target/s390x/ioinst.c >> index c437a1d8c6afed80..481d789de9e09a04 100644 >> --- a/target/s390x/ioinst.c >> +++ b/target/s390x/ioinst.c >> @@ -16,6 +16,23 @@ >> #include "hw/s390x/ioinst.h" >> #include "trace.h" >> #include "hw/s390x/s390-pci-bus.h" >> +#include "hw/s390x/pv.h" >> + > > Maybe add > > /* all I/O instructions but chsc use the s format *> > to emphasize that this is not a generic decoder?
Ack > >> +static uint64_t get_address_from_regs(CPUS390XState *env, uint32_t ipb, >> + uint8_t *ar) >> +{ >> + /* >> + * Addresses for protected guests are all offsets into the >> + * satellite block which holds the IO control structures. Those >> + * control structures are always aligned and accessible, so we can >> + * return 0 here which will pass the following address checks. >> + */ >> + if (s390_is_pv()) { >> + *ar = 0; >> + return 0; >> + } >> + return decode_basedisp_s(env, ipb, ar); >> +} >> >> int ioinst_disassemble_sch_ident(uint32_t value, int *m, int *cssid, int >> *ssid, >> int *schid) > > With the other comment updates, > > Reviewed-by: Cornelia Huck <coh...@redhat.com> > > Thanks