linux/drivers/s390/cio
Eric Farman 15f0eb3d6a s390/cio: Update SCSW if it points to the end of the chain
Per the POPs [1], when processing an interrupt the SCSW.CPA field of an
IRB generally points to 8 bytes after the last CCW that was executed
(there are exceptions, but this is the most common behavior).

In the case of an error, this points us to the first un-executed CCW
in the chain.  But in the case of normal I/O, the address points beyond
the end of the chain.  While the guest generally only cares about this
when possibly restarting a channel program after error recovery, we
should convert the address even in the good scenario so that we provide
a consistent, valid, response upon I/O completion.

[1] Figure 16-6 in SA22-7832-11.  The footnotes in that table also state
that this is true even if the resulting address is invalid or protected,
but moving to the end of the guest chain should not be a surprise.

Signed-off-by: Eric Farman <farman@linux.ibm.com>
Message-Id: <20190514234248.36203-2-farman@linux.ibm.com>
Reviewed-by: Farhan Ali <alifm@linux.ibm.com>
Signed-off-by: Cornelia Huck <cohuck@redhat.com>
2019-06-03 12:02:55 +02:00
..
airq.c s390/airq: provide cacheline aligned ivs 2019-04-29 10:47:01 +02:00
blacklist.c License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
blacklist.h s390: add a few more SPDX identifiers 2017-12-05 07:51:09 +01:00
ccwgroup.c s390/ccwgroup: add get_ccwgroupdev_by_busid() 2018-10-08 09:09:59 +02:00
ccwreq.c License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
chp.c s390/cio: ensure that a chpid is registered only once 2018-07-17 07:27:51 +02:00
chp.h s390/chsc: query utility strings via fmt3 channel path descriptor 2018-03-26 16:13:16 +02:00
chsc.c s390 update with improvements and bug fixes for 5.1-rc2 2019-03-28 08:35:32 -07:00
chsc.h s390/cio: add function chsc_sgib() 2019-02-05 14:29:23 +01:00
chsc_sch.c compat: Move compat_timespec/ timeval to compat_time.h 2018-04-19 13:29:54 +02:00
chsc_sch.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
cio.c s390: show statistics for MSI IRQs 2019-04-29 10:47:01 +02:00
cio.h s390/airq: recognize directed interrupts 2019-04-29 10:47:01 +02:00
cio_debug.h Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/s390/linux 2017-11-13 11:47:01 -08:00
cmf.c mm: remove include/linux/bootmem.h 2018-10-31 08:54:16 -07:00
crw.c License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
css.c s390/css: reduce stsch calls 2018-07-17 07:27:55 +02:00
css.h s390/css: reduce stsch calls 2018-07-17 07:27:55 +02:00
device.c s390/cio: fix unbind of io_subchannel_driver 2018-03-26 16:13:06 +02:00
device.h s390/cio: Convert timers to use timer_setup() 2017-11-14 11:01:36 +01:00
device_fsm.c s390/cio: clear timer when terminating driver I/O 2018-02-22 10:09:27 +01:00
device_id.c License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
device_ops.c s390/cio: add helper to query utility strings per given ccw device 2018-05-23 08:06:56 +02:00
device_pgid.c License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
device_status.c License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
eadm_sch.c s390: cio: add SPDX identifiers to the remaining files 2017-11-24 14:28:41 +01:00
eadm_sch.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
fcx.c License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
idset.c License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
idset.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
io_sch.h s390/cio: fix return code after missing interrupt 2018-02-22 10:09:25 +01:00
ioasm.c s390/cio: export hsch to modules 2019-04-24 14:18:51 +02:00
ioasm.h s390: assume diag308 set always works 2018-04-10 07:38:59 +02:00
isc.c s390: cio: add SPDX identifiers to the remaining files 2017-11-24 14:28:41 +01:00
itcw.c s390/cio: fix kernel-doc usage 2018-02-05 07:34:52 +01:00
Makefile vfio-ccw: add handling for async channel instructions 2019-04-24 14:18:51 +02:00
orb.h License cleanup: add SPDX GPL-2.0 license identifier to files with no license 2017-11-02 11:10:55 +01:00
qdio.h s390/qdio: eliminate queue's last_move cursor 2019-04-10 17:47:26 +02:00
qdio_debug.c s390/qdio: eliminate queue's last_move cursor 2019-04-10 17:47:26 +02:00
qdio_debug.h Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/s390/linux 2017-11-13 11:47:01 -08:00
qdio_main.c s390/qdio: optimize state inspection of HW-owned SBALs 2019-05-08 15:01:23 +02:00
qdio_setup.c s390/qdio: clean up pci_out_supported() 2019-03-29 07:23:49 +01:00
qdio_thinint.c s390/airq: recognize directed interrupts 2019-04-29 10:47:01 +02:00
scm.c s390: cio: add SPDX identifiers to the remaining files 2017-11-24 14:28:41 +01:00
trace.c s390/cio: Remove tracing for rchp instruction 2019-05-08 15:01:22 +02:00
trace.h s390/cio: Remove tracing for rchp instruction 2019-05-08 15:01:22 +02:00
vfio_ccw_async.c vfio-ccw: add handling for async channel instructions 2019-04-24 14:18:51 +02:00
vfio_ccw_cp.c s390/cio: Update SCSW if it points to the end of the chain 2019-06-03 12:02:55 +02:00
vfio_ccw_cp.h vfio-ccw: make it safe to access channel programs 2019-04-24 14:18:51 +02:00
vfio_ccw_drv.c vfio-ccw: Prevent quiesce function going into an infinite loop 2019-04-24 14:18:51 +02:00
vfio_ccw_fsm.c vfio-ccw: add handling for async channel instructions 2019-04-24 14:18:51 +02:00
vfio_ccw_ops.c vfio-ccw: Release any channel program when releasing/removing vfio-ccw mdev 2019-04-24 14:18:51 +02:00
vfio_ccw_private.h vfio-ccw: add handling for async channel instructions 2019-04-24 14:18:51 +02:00
vfio_ccw_trace.h vfio: ccw: add tracepoints for interesting error paths 2018-05-29 09:27:42 +02:00