^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1) ======================
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2) S/390 common I/O-Layer
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3) ======================
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5) command line parameters, procfs and debugfs entries
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 6) ===================================================
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 7)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 8) Command line parameters
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 9) -----------------------
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 10)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 11) * ccw_timeout_log
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 12)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 13) Enable logging of debug information in case of ccw device timeouts.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 14)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 15) * cio_ignore = device[,device[,..]]
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 16)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 17) device := {all | [!]ipldev | [!]condev | [!]<devno> | [!]<devno>-<devno>}
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 18)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 19) The given devices will be ignored by the common I/O-layer; no detection
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 20) and device sensing will be done on any of those devices. The subchannel to
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 21) which the device in question is attached will be treated as if no device was
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 22) attached.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 23)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 24) An ignored device can be un-ignored later; see the "/proc entries"-section for
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 25) details.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 26)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 27) The devices must be given either as bus ids (0.x.abcd) or as hexadecimal
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 28) device numbers (0xabcd or abcd, for 2.4 backward compatibility). If you
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 29) give a device number 0xabcd, it will be interpreted as 0.0.abcd.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 30)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 31) You can use the 'all' keyword to ignore all devices. The 'ipldev' and 'condev'
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 32) keywords can be used to refer to the CCW based boot device and CCW console
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 33) device respectively (these are probably useful only when combined with the '!'
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 34) operator). The '!' operator will cause the I/O-layer to _not_ ignore a device.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 35) The command line
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 36) is parsed from left to right.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 37)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 38) For example::
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 39)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 40) cio_ignore=0.0.0023-0.0.0042,0.0.4711
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 41)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 42) will ignore all devices ranging from 0.0.0023 to 0.0.0042 and the device
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 43) 0.0.4711, if detected.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 44)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 45) As another example::
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 46)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 47) cio_ignore=all,!0.0.4711,!0.0.fd00-0.0.fd02
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 48)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 49) will ignore all devices but 0.0.4711, 0.0.fd00, 0.0.fd01, 0.0.fd02.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 50)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 51) By default, no devices are ignored.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 52)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 53)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 54) /proc entries
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 55) -------------
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 56)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 57) * /proc/cio_ignore
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 58)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 59) Lists the ranges of devices (by bus id) which are ignored by common I/O.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 60)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 61) You can un-ignore certain or all devices by piping to /proc/cio_ignore.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 62) "free all" will un-ignore all ignored devices,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 63) "free <device range>, <device range>, ..." will un-ignore the specified
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 64) devices.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 65)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 66) For example, if devices 0.0.0023 to 0.0.0042 and 0.0.4711 are ignored,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 67)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 68) - echo free 0.0.0030-0.0.0032 > /proc/cio_ignore
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 69) will un-ignore devices 0.0.0030 to 0.0.0032 and will leave devices 0.0.0023
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 70) to 0.0.002f, 0.0.0033 to 0.0.0042 and 0.0.4711 ignored;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 71) - echo free 0.0.0041 > /proc/cio_ignore will furthermore un-ignore device
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 72) 0.0.0041;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 73) - echo free all > /proc/cio_ignore will un-ignore all remaining ignored
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 74) devices.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 75)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 76) When a device is un-ignored, device recognition and sensing is performed and
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 77) the device driver will be notified if possible, so the device will become
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 78) available to the system. Note that un-ignoring is performed asynchronously.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 79)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 80) You can also add ranges of devices to be ignored by piping to
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 81) /proc/cio_ignore; "add <device range>, <device range>, ..." will ignore the
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 82) specified devices.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 83)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 84) Note: While already known devices can be added to the list of devices to be
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 85) ignored, there will be no effect on then. However, if such a device
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 86) disappears and then reappears, it will then be ignored. To make
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 87) known devices go away, you need the "purge" command (see below).
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 88)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 89) For example::
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 90)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 91) "echo add 0.0.a000-0.0.accc, 0.0.af00-0.0.afff > /proc/cio_ignore"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 92)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 93) will add 0.0.a000-0.0.accc and 0.0.af00-0.0.afff to the list of ignored
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 94) devices.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 95)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 96) You can remove already known but now ignored devices via::
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 97)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 98) "echo purge > /proc/cio_ignore"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 99)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 100) All devices ignored but still registered and not online (= not in use)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 101) will be deregistered and thus removed from the system.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 102)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 103) The devices can be specified either by bus id (0.x.abcd) or, for 2.4 backward
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 104) compatibility, by the device number in hexadecimal (0xabcd or abcd). Device
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 105) numbers given as 0xabcd will be interpreted as 0.0.abcd.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 106)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 107) * /proc/cio_settle
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 108)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 109) A write request to this file is blocked until all queued cio actions are
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 110) handled. This will allow userspace to wait for pending work affecting
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 111) device availability after changing cio_ignore or the hardware configuration.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 112)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 113) * For some of the information present in the /proc filesystem in 2.4 (namely,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 114) /proc/subchannels and /proc/chpids), see driver-model.txt.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 115) Information formerly in /proc/irq_count is now in /proc/interrupts.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 116)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 117)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 118) debugfs entries
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 119) ---------------
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 120)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 121) * /sys/kernel/debug/s390dbf/cio_*/ (S/390 debug feature)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 122)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 123) Some views generated by the debug feature to hold various debug outputs.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 124)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 125) - /sys/kernel/debug/s390dbf/cio_crw/sprintf
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 126) Messages from the processing of pending channel report words (machine check
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 127) handling).
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 128)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 129) - /sys/kernel/debug/s390dbf/cio_msg/sprintf
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 130) Various debug messages from the common I/O-layer.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 131)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 132) - /sys/kernel/debug/s390dbf/cio_trace/hex_ascii
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 133) Logs the calling of functions in the common I/O-layer and, if applicable,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 134) which subchannel they were called for, as well as dumps of some data
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 135) structures (like irb in an error case).
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 136)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 137) The level of logging can be changed to be more or less verbose by piping to
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 138) /sys/kernel/debug/s390dbf/cio_*/level a number between 0 and 6; see the
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 139) documentation on the S/390 debug feature (Documentation/s390/s390dbf.rst)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 140) for details.