linux_dsm_epyc7002/drivers/s390/cio
Dong Jia Shi 688c29533f vfio: ccw: bypass bad idaw address when fetching IDAL ccws
We currently return the same error code (-EFAULT) to indicate two
different error cases:
1. a bug in vfio-ccw implementation has been found.
2. a buggy channel program has been detected.

This brings difficulty for userland program (specifically Qemu) to
handle.

Let's use -EFAULT to only indicate the first case. For the second
case, we simply hand over the ccws to lower level for further
handling.

Notice:
Once a bad idaw address is detected, the current behavior is to
suppress the ssch. With this fix, the channel program will be
accepted, and part of the channel program (the part ahead of
the bad idaw) could possibly be executed by the device before
I/O conclusion.

Suggested-by: Halil Pasic <pasic@linux.vnet.ibm.com>
Reviewed-by: Pierre Morel <pmorel@linux.vnet.ibm.com>
Signed-off-by: Dong Jia Shi <bjsdjshi@linux.vnet.ibm.com>
Message-Id: <20171011023822.42948-2-bjsdjshi@linux.vnet.ibm.com>
Signed-off-by: Cornelia Huck <cohuck@redhat.com>
2017-10-16 11:10:13 +02:00
..
airq.c s390/cio: Introduce common I/O layer tracepoints 2015-12-18 14:59:36 +01:00
blacklist.c Replace <asm/uaccess.h> with <linux/uaccess.h> globally 2016-12-24 11:46:01 -08:00
blacklist.h
ccwgroup.c s390/ccwgroup: tie a ccwgroup driver to its ccw driver 2017-09-29 15:51:30 +02:00
ccwreq.c s390: Use pr_warn instead of pr_warning 2016-03-07 13:12:04 +01:00
chp.c s390/cio: add const to bin_attribute structures 2017-08-03 13:16:30 +02:00
chp.h s390/cio: clarify cssid usage 2017-01-16 07:27:52 +01:00
chsc_sch.c s390/chsc: fix ioctl CHSC_INFO_CU command 2016-07-15 14:31:58 +02:00
chsc_sch.h
chsc.c s390/cio: use cssid for pgid generation 2017-01-16 07:27:52 +01:00
chsc.h s390/cio: use cssid for pgid generation 2017-01-16 07:27:52 +01:00
cio_debug.h
cio.c s390: cio: export more interfaces 2017-03-31 12:55:03 +02:00
cio.h s390: cio: introduce cio_cancel_halt_clear 2017-03-31 12:55:02 +02:00
cmf.c s390/cmf: use tod_to_ns() 2017-09-28 07:29:43 +02:00
crw.c s390/cio: Consolidate inline assemblies and related data definitions 2015-12-18 14:59:34 +01:00
css.c s390/cio: introduce io_subchannel_type 2017-06-12 16:26:01 +02:00
css.h s390/cio: remove unused struct member 2017-01-16 07:27:53 +01:00
device_fsm.c s390/cio: recover from bad paths 2017-09-19 08:36:19 +02:00
device_id.c
device_ops.c s390: cio: make it explicitly non-modular 2016-10-31 17:55:32 +01:00
device_pgid.c s390/cio: move ccw_device_stlck functions 2015-10-27 09:34:44 +01:00
device_status.c s390/cio: stop using subchannel_id from ccw_device_private 2016-08-08 15:41:32 +02:00
device.c s390/cio: recover from bad paths 2017-09-19 08:36:19 +02:00
device.h s390/cio: recover from bad paths 2017-09-19 08:36:19 +02:00
eadm_sch.c block: introduce new block status code type 2017-06-09 09:27:32 -06:00
eadm_sch.h
fcx.c
idset.c
idset.h s390: use canonical include guard style 2016-06-13 15:58:17 +02:00
io_sch.h s390/cio: recover from bad paths 2017-09-19 08:36:19 +02:00
ioasm.c s390/chsc: Add exception handler for CHSC instruction 2017-02-23 10:06:38 +01:00
ioasm.h s390/cio: Change I/O instructions from inline to normal functions 2015-12-18 14:59:37 +01:00
isc.c
itcw.c
Makefile vfio: ccw: introduce a finite state machine 2017-03-31 12:55:11 +02:00
orb.h
qdio_debug.c s390: Delete unnecessary checks before the function call "debug_unregister" 2015-11-27 09:24:16 +01:00
qdio_debug.h s390/qdio: increase string buffer size 2017-05-09 10:44:37 +02:00
qdio_main.c s390/qdio: improve some debug prints 2017-02-03 13:50:23 +01:00
qdio_setup.c
qdio_thinint.c sched/headers: Prepare to use <linux/rcuupdate.h> instead of <linux/rculist.h> in <linux/sched.h> 2017-03-02 08:42:38 +01:00
qdio.h
scm.c block: introduce new block status code type 2017-06-09 09:27:32 -06:00
trace.c s390/cio: Introduce common I/O layer tracepoints 2015-12-18 14:59:36 +01:00
trace.h s390/cio: Introduce common I/O layer tracepoints 2015-12-18 14:59:36 +01:00
vfio_ccw_cp.c vfio: ccw: bypass bad idaw address when fetching IDAL ccws 2017-10-16 11:10:13 +02:00
vfio_ccw_cp.h vfio: ccw: introduce channel program interfaces 2017-03-31 12:55:05 +02:00
vfio_ccw_drv.c s390/vfio_ccw: remove unused variable 2017-07-05 07:35:29 +02:00
vfio_ccw_fsm.c vfio: ccw: remove unnecessary NULL checks of a pointer 2017-04-12 12:33:36 +02:00
vfio_ccw_ops.c s390/vfio_ccw: make some symbols static 2017-05-22 15:37:11 +02:00
vfio_ccw_private.h vfio: ccw: introduce a finite state machine 2017-03-31 12:55:11 +02:00