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