On 25/03/2021 10.39, Pierre Morel 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.
Signed-off-by: Pierre Morel <pmorel@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) {
Reviewed-by: Thomas Huth <thuth@xxxxxxxxxx>