On 17.10.2017 16:04, Halil Pasic wrote:
> Simplify the error handling of the MSCH.  Let the code detecting the
> condition tell (in a less ambiguous way) how it's to be handled. No
> changes in behavior.

ok, so you claim no changes in behavior ...

> Signed-off-by: Halil Pasic <pa...@linux.vnet.ibm.com>
> ---
>  hw/s390x/css.c         | 18 +++++-------------
>  include/hw/s390x/css.h |  2 +-
>  target/s390x/ioinst.c  | 23 ++++-------------------
>  3 files changed, 10 insertions(+), 33 deletions(-)
> 
> diff --git a/hw/s390x/css.c b/hw/s390x/css.c
> index b9e0329825..30fc236946 100644
> --- a/hw/s390x/css.c
> +++ b/hw/s390x/css.c
> @@ -1347,28 +1347,24 @@ static void copy_schib_from_guest(SCHIB *dest, const 
> SCHIB *src)
>      }
>  }
>  
> -int css_do_msch(SubchDev *sch, const SCHIB *orig_schib)
> +IOInstEnding css_do_msch(SubchDev *sch, const SCHIB *orig_schib)
>  {
>      SCSW *s = &sch->curr_status.scsw;
>      PMCW *p = &sch->curr_status.pmcw;
>      uint16_t oldflags;
> -    int ret;
>      SCHIB schib;
>  
>      if (!(sch->curr_status.pmcw.flags & PMCW_FLAGS_MASK_DNV)) {
> -        ret = 0;
> -        goto out;
> +        return IOINST_CC_EXPECTED;
>      }
>  
>      if (s->ctrl & SCSW_STCTL_STATUS_PEND) {
> -        ret = -EINPROGRESS;
> -        goto out;
> +        return IOINST_CC_STATUS_PRESENT;
>      }
>  
>      if (s->ctrl &
>          (SCSW_FCTL_START_FUNC|SCSW_FCTL_HALT_FUNC|SCSW_FCTL_CLEAR_FUNC)) {
> -        ret = -EBUSY;
> -        goto out;
> +        return IOINST_CC_STATUS_PRESENT;
>      }

... but here you change -EBUSY (which got mapped to CC=2) to
CC_STATUS_PRESENT which means CC=1. So that's a change in behavior. i.e.
this is either a bug, or you should update the patch description with a
justification for this change in behavior.

 Thomas

Reply via email to