linux/drivers/s390/cio
Heiko Carstens 2862a2fdfa s390/qdio: fix do_sqbs() inline assembly constraint
Use "a" constraint instead of "d" constraint to pass the state parameter to
the do_sqbs() inline assembly. This prevents that general purpose register
zero is used for the state parameter.

If the compiler would select general purpose register zero this would be
problematic for the used instruction in rsy format: the register used for
the state parameter is a base register. If the base register is general
purpose register zero the contents of the register are unexpectedly ignored
when the instruction is executed.

This only applies to z/VM guests using QIOASSIST with dedicated (pass through)
QDIO-based devices such as FCP [zfcp driver] as well as real OSA or
HiperSockets [qeth driver].

A possible symptom for this case using zfcp is the following repeating kernel
message pattern:

zfcp <devbusid>: A QDIO problem occurred
zfcp <devbusid>: A QDIO problem occurred
zfcp <devbusid>: qdio: ZFCP on SC <sc> using AI:1 QEBSM:1 PRI:1 TDD:1 SIGA: W
zfcp <devbusid>: A QDIO problem occurred
zfcp <devbusid>: A QDIO problem occurred

Each of the qdio problem message can be accompanied by the following entries
for the affected subchannel <sc> in
/sys/kernel/debug/s390dbf/qdio_error/hex_ascii for zfcp or qeth:

<sc> ccq: 69....
<sc> SQBS ERROR.

Reviewed-by: Benjamin Block <bblock@linux.ibm.com>
Cc: Steffen Maier <maier@linux.ibm.com>
Fixes: 8129ee1642 ("[PATCH] s390: qdio V=V pass-through")
Cc: <stable@vger.kernel.org>
Signed-off-by: Heiko Carstens <hca@linux.ibm.com>
Signed-off-by: Alexander Gordeev <agordeev@linux.ibm.com>
2023-05-17 15:20:17 +02:00
..
airq.c s390/airq: allow for airq structure that uses an input vector 2022-07-11 09:54:15 +02:00
blacklist.c s390/cio: avoid excessive path-verification requests 2021-09-27 13:54:38 +02:00
blacklist.h
ccwgroup.c s390/qeth: fix deadlock during failing recovery 2021-09-21 20:02:24 -07:00
ccwreq.c
chp.c s390: replace snprintf in show functions with sysfs_emit 2021-11-16 12:29:19 +01:00
chp.h s390/cio: Add support for FCES status notification 2020-11-16 08:14:38 -07:00
chsc_sch.c s390/cio: sort out physical vs virtual pointers usage 2022-12-01 10:58:04 +01:00
chsc_sch.h
chsc.c s390/cio: replace zero-length array with flexible-array member 2023-04-13 17:36:29 +02:00
chsc.h s390/cio: replace zero-length array with flexible-array member 2023-04-13 17:36:29 +02:00
cio_debug.h s390/cio: introduce CIO debugfs directory 2021-03-22 11:36:04 +01:00
cio_debugfs.c s390/cio: introduce CIO debugfs directory 2021-03-22 11:36:04 +01:00
cio_inject.c s390/cio: add CRW inject functionality 2021-03-22 11:36:04 +01:00
cio_inject.h s390/cio: add CRW inject functionality 2021-03-22 11:36:04 +01:00
cio.c s390/cio: sort out physical vs virtual pointers usage 2022-12-01 10:58:04 +01:00
cio.h s390/cio: Use driver_set_override() instead of open-coding 2022-04-22 17:13:54 +02:00
cmf.c s390/cmf: get rid of register asm 2021-06-28 11:18:28 +02:00
crw.c s390: remove invalid email address of Heiko Carstens 2022-02-06 23:31:29 +01:00
css.c Driver core changes for 6.3-rc1 2023-02-24 12:58:55 -08:00
css.h s390/cio: evaluate devices with non-operational paths 2023-01-22 18:42:34 +01:00
device_fsm.c s390/cio: sort out physical vs virtual pointers usage 2022-12-01 10:58:04 +01:00
device_id.c s390/cio: sort out physical vs virtual pointers usage 2022-12-01 10:58:04 +01:00
device_ops.c s390/cio: make ccw_device_dma_* more robust 2021-10-26 15:21:30 +02:00
device_pgid.c s390/cio: sort out physical vs virtual pointers usage 2022-12-01 10:58:04 +01:00
device_status.c s390/cio: sort out physical vs virtual pointers usage 2022-12-01 10:58:04 +01:00
device.c s390/cio: include subchannels without devices also for evaluation 2023-05-15 14:20:14 +02:00
device.h s390/cio: remove pm support from ccw bus driver 2020-12-02 18:19:25 +01:00
eadm_sch.c s390/cio: sort out physical vs virtual pointers usage 2022-12-01 10:58:04 +01:00
eadm_sch.h
fcx.c s390/cio: sort out physical vs virtual pointers usage 2022-12-01 10:58:04 +01:00
idset.c s390/cio: Remove unused inline function idset_sch_get_first 2020-05-20 10:22:49 +02:00
idset.h
io_sch.h s390/cio: remove pm support from ccw bus driver 2020-12-02 18:19:25 +01:00
ioasm.c s390/extable: move EX_TABLE define to asm-extable.h 2022-03-08 00:33:00 +01:00
ioasm.h
isc.c
itcw.c s390/cio: sort out physical vs virtual pointers usage 2022-12-01 10:58:04 +01:00
Makefile s390/cio: add CRW inject functionality 2021-03-22 11:36:04 +01:00
orb.h
qdio_debug.c s390: move from strlcpy with unused retval to strscpy 2022-08-30 22:00:33 +02:00
qdio_debug.h s390/qdio: cleanly split alloc and establish 2020-04-06 13:13:50 +02:00
qdio_main.c s390/qdio: remove unneeded sanity check in qdio_do_sqbs() 2021-12-06 14:42:26 +01:00
qdio_setup.c s390/qdio: clarify handler logic for qdio_handle_activate_check() 2021-12-06 14:42:25 +01:00
qdio_thinint.c s390/airq: pass more TPI info to airq handlers 2022-07-11 09:54:10 +02:00
qdio.h s390/qdio: fix do_sqbs() inline assembly constraint 2023-05-17 15:20:17 +02:00
scm.c driver core: make struct bus_type.uevent() take a const * 2023-01-27 13:45:52 +01:00
trace.c
trace.h s390: use struct tpi_info in lowcore.h 2021-06-07 17:07:01 +02:00
vfio_ccw_async.c vfio/ccw: Remove private->mdev 2022-07-07 14:06:12 -06:00
vfio_ccw_chp.c vfio/ccw: remove private->sch 2022-11-10 11:11:25 -07:00
vfio_ccw_cp.c vfio/ccw: remove old IDA format restrictions 2023-01-09 14:34:09 +01:00
vfio_ccw_cp.h vfio/ccw: simplify the cp_get_orb interface 2023-01-09 14:34:07 +01:00
vfio_ccw_drv.c vfio/ccw: remove WARN_ON during shutdown 2023-02-14 11:45:40 +01:00
vfio_ccw_fsm.c vfio/ccw: simplify the cp_get_orb interface 2023-01-09 14:34:07 +01:00
vfio_ccw_ops.c VFIO updates for v6.2-rc1 2022-12-15 13:12:15 -08:00
vfio_ccw_private.h vfio/ccw: replace vfio_init_device with _alloc_ 2022-11-10 11:30:23 -07:00
vfio_ccw_trace.c vfio-ccw: Add trace for CRW event 2020-06-03 11:28:19 +02:00
vfio_ccw_trace.h vfio-ccw: Add trace for CRW event 2020-06-03 11:28:19 +02:00