On 3/4/20 6:55 PM, David Hildenbrand wrote: > On 04.03.20 12:42, Janosch Frank 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 <[email protected]> >> Reviewed-by: Thomas Huth <[email protected]> >> --- >> target/s390x/ioinst.c | 26 +++++++++++++++++++------- >> 1 file changed, 19 insertions(+), 7 deletions(-) >> >> diff --git a/target/s390x/ioinst.c b/target/s390x/ioinst.c >> index c437a1d8c6..e4102430aa 100644 >> --- a/target/s390x/ioinst.c >> +++ b/target/s390x/ioinst.c >> @@ -17,6 +17,16 @@ >> #include "trace.h" >> #include "hw/s390x/s390-pci-bus.h" >> >> +static uint64_t get_address_from_regs(CPUS390XState *env, uint32_t ipb, >> + uint8_t *ar) >> +{ > > Please add a comment here why this is done. (e.g., make all address > checks - like alignment checks - in the caller succeed, and we don't > need the address).
* 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 (env->pv) {
>> + *ar = 0;
>> + return 0;
>> + }
>> + return decode_basedisp_s(env, ipb, ar);
>> +}
>> +
>
> Reviewed-by: David Hildenbrand <[email protected]>
>
>
signature.asc
Description: OpenPGP digital signature
