If we detect that the internally manged state of the subchannel
is broken beyond repair while in do_subchannel_work in case of
virtual we just abort the operation and pretend all went well,
while in case of pass-through we honor the situation with -ENODEV
which results in cc 3 for the instruction whose handler triggered
the call.

Let's be consistent on this and do the -ENODEV also for virtual
subchannels.

Signed-off-by: Halil Pasic <pa...@linux.vnet.ibm.com>
Acked-by: Pierre Morel<pmo...@linux.vnet.ibm.com>
---
 hw/s390x/css.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/hw/s390x/css.c b/hw/s390x/css.c
index 0822538cde..bc47bf5b20 100644
--- a/hw/s390x/css.c
+++ b/hw/s390x/css.c
@@ -1078,7 +1078,7 @@ int do_subchannel_work_virtual(SubchDev *sch)
         sch_handle_start_func_virtual(sch);
     } else {
         /* Cannot happen. */
-        return 0;
+        return -ENODEV;
     }
     css_inject_io_interrupt(sch);
     return 0;
-- 
2.13.5


Reply via email to