S/390 common I/O-Layer - command line parameters and /proc entries
==================================================================

Command line parameters
-----------------------

* cio_msg = yes | no
  
  Determines whether information on found devices and sensed device 
  characteristics should be shown during startup, i. e. messages of the types 
  "Detected device 0.0.4711 on subchannel 0.0.0042" and "SenseID: Device
  0.0.4711 reports: ...".

  Default is off.


* cio_ignore = {all} |
	       {<device> | <range of devices>} |
	       {!<device> | !<range of devices>}

  The given devices will be ignored by the common I/O-layer; no detection
  and device sensing will be done on any of those devices. The subchannel to 
  which the device in question is attached will be treated as if no device was
  attached.

  An ignored device can be un-ignored later; see the "/proc entries"-section for
  details.

  The devices must be given either as bus ids (0.0.abcd) or as hexadecimal
  device numbers (0xabcd or abcd, for 2.4 backward compatibility).
  You can use the 'all' keyword to ignore all devices.
  The '!' operator will cause the I/O-layer to _not_ ignore a device.
  The command line is parsed from left to right.

  For example, 
	cio_ignore=0.0.0023-0.0.0042,0.0.4711
  will ignore all devices ranging from 0.0.0023 to 0.0.0042 and the device
  0.0.4711, if detected.
  As another example,
	cio_ignore=all,!0.0.4711,!0.0.fd00-0.0.fd02
  will ignore all devices but 0.0.4711, 0.0.fd00, 0.0.fd01, 0.0.fd02.

  By default, no devices are ignored.


/proc entries
-------------

* /proc/cio_ignore

  Lists the ranges of devices (by bus id) which are ignored by common I/O.

  You can un-ignore certain or all devices by piping to /proc/cio_ignore. 
  "free all" will un-ignore all ignored devices, 
  "free <device range>, <device range>, ..." will un-ignore the specified
  devices.

  For example, if devices 0.0.0023 to 0.0.0042 and 0.0.4711 are ignored,
  - echo free 0.0.0030-0.0.0032 > /proc/cio_ignore
    will un-ignore devices 0.0.0030 to 0.0.0032 and will leave devices 0.0.0023
    to 0.0.002f, 0.0.0033 to 0.0.0042 and 0.0.4711 ignored;
  - echo free 0.0.0041 > /proc/cio_ignore will furthermore un-ignore device
    0.0.0041;
  - echo free all > /proc/cio_ignore will un-ignore all remaining ignored 
    devices.

  When a device is un-ignored, device recognition and sensing is performed and 
  the device driver will be notified if possible, so the device will become
  available to the system.

  You can also add ranges of devices to be ignored by piping to 
  /proc/cio_ignore; "add <device range>, <device range>, ..." will ignore the
  specified devices.

  Note: While already known devices can be added to the list of devices to be
        ignored, there will be no effect on then. However, if such a device
        disappears and then reappeares, it will then be ignored.

  For example,
	"echo add 0.0.a000-0.0.accc, 0.0.af00-0.0.afff > /proc/cio_ignore"
  will add 0.0.a000-0.0.accc and 0.0.af00-0.0.afff to the list of ignored
  devices.

  The devices can be specified either by bus id (0.0.abcd) or, for 2.4 backward
  compatibilty, by the device number in hexadecimal (0xabcd or abcd).


* /proc/s390dbf/cio_*/ (S/390 debug feature)

  Some views generated by the debug feature to hold various debug outputs.

  - /proc/s390dbf/cio_crw/sprintf
    Messages from the processing of pending channel report words (machine check
    handling), which will also show when CONFIG_DEBUG_CRW is defined.

  - /proc/s390dbf/cio_msg/sprintf
    Various debug messages from the common I/O-layer; generally, messages which 
    will also show when CONFIG_DEBUG_IO is defined.

  - /proc/s390dbf/cio_trace/hex_ascii
    Logs the calling of functions in the common I/O-layer and, if applicable, 
    which subchannel they were called for, as well as dumps of some data
    structures (like irb in an error case).

  The level of logging can be changed to be more or less verbose by piping to 
  /proc/s390dbf/cio_*/level a number between 0 and 6; see the documentation on
  the S/390 debug feature (Documentation/s390/s390dbf.txt) for details.

* For some of the information present in the /proc filesystem in 2.4 (namely,
  /proc/subchannels and /proc/chpids), see driver-model.txt.
  Information formerly in /proc/irq_count is now in /proc/interrupts.
