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 order on the command line is not important.

  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: Already known devices cannot be ignored.

  For example, if device 0.0.abcd is already known and all other devices
  0.0.a000-0.0.afff are not known,
	"echo add 0.0.a000-0.0.accc, 0.0.af00-0.0.afff > /proc/cio_ignore"
  will add 0.0.a000-0.0.abcc, 0.0.abce-0.0.accc and 0.0.af00-0.0.afff to the
  list of ignored devices and skip 0.0.abcd.

  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.

  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.
