On Thu, 25 Mar 2021 10:39:03 +0100 Pierre Morel <pmorel@xxxxxxxxxxxxx> wrote: > We will may want to check the result of an I/O without waiting > for an interrupt. > For example because we do not handle interrupt. > Let's separate waiting for interrupt and the I/O complretion check. ^^^^^^^^^^^ completion > Signed-off-by: Pierre Morel <pmorel@xxxxxxxxxxxxx> Reviewed-by: Claudio Imbrenda <imbrenda@xxxxxxxxxxxxx> > --- > lib/s390x/css.h | 1 + > lib/s390x/css_lib.c | 13 ++++++++++--- > 2 files changed, 11 insertions(+), 3 deletions(-) > > diff --git a/lib/s390x/css.h b/lib/s390x/css.h > index 0058355..5d1e1f0 100644 > --- a/lib/s390x/css.h > +++ b/lib/s390x/css.h > @@ -317,6 +317,7 @@ int css_residual_count(unsigned int schid); > > void enable_io_isc(uint8_t isc); > int wait_and_check_io_completion(int schid); > +int check_io_completion(int schid); > > /* > * CHSC definitions > diff --git a/lib/s390x/css_lib.c b/lib/s390x/css_lib.c > index f5c4f37..1e5c409 100644 > --- a/lib/s390x/css_lib.c > +++ b/lib/s390x/css_lib.c > @@ -487,18 +487,25 @@ struct ccw1 *ccw_alloc(int code, void *data, > int count, unsigned char flags) } > > /* wait_and_check_io_completion: > + * @schid: the subchannel ID > + */ > +int wait_and_check_io_completion(int schid) > +{ > + wait_for_interrupt(PSW_MASK_IO); > + return check_io_completion(schid); > +} > + > +/* check_io_completion: > * @schid: the subchannel ID > * > * Makes the most common check to validate a successful I/O > * completion. > * Only report failures. > */ > -int wait_and_check_io_completion(int schid) > +int check_io_completion(int schid) > { > int ret = 0; > > - wait_for_interrupt(PSW_MASK_IO); > - > report_prefix_push("check I/O completion"); > > if (lowcore_ptr->io_int_param != schid) {