Commit c7899551 authored by Aishwarya Pant's avatar Aishwarya Pant Committed by Jonathan Corbet
Browse files

Documentation: rapidio: move sysfs interface to ABI



Right now, the description of the rapidio sysfs interfaces is in
Documentation/rapidio/sysfs.txt. Since these are a part of the ABI, they
should be in Documentation/ABI along with the rest.

Signed-off-by: default avatarAishwarya Pant <aishpant@gmail.com>
Acked-by: default avatarAlexandre Bounine <alexandre.bounine@idt.com>
Signed-off-by: default avatarJonathan Corbet <corbet@lwn.net>
parent e55ee934
Loading
Loading
Loading
Loading
+198 −0
Original line number Diff line number Diff line
What:		/sys/bus/rapidio/devices/nn:d:iiii
Description:
		For each RapidIO device, the RapidIO subsystem creates files in
		an individual subdirectory with the following name format of
		device_name "nn:d:iiii", where:

		nn   - two-digit hexadecimal ID of RapidIO network where the
		       device resides
		d    - device type: 'e' - for endpoint or 's' - for switch
		iiii - four-digit device destID for endpoints, or switchID for
		       switches

		For example, below is a list of device directories that
		represents a typical RapidIO network with one switch, one host,
		and two agent endpoints, as it is seen by the enumerating host
		(with destID = 1):

		/sys/bus/rapidio/devices/00:e:0000
		/sys/bus/rapidio/devices/00:e:0002
		/sys/bus/rapidio/devices/00:s:0001

		NOTE: An enumerating or discovering endpoint does not create a
		sysfs entry for itself, this is why an endpoint with destID=1 is
		not shown in the list.

Attributes Common for All RapidIO Devices
-----------------------------------------

What:		/sys/bus/rapidio/devices/nn:d:iiii/did
Date:		Nov, 2005
KernelVersion:	v2.6.15
Contact:	Matt Porter <mporter@kernel.crashing.org>,
		Alexandre Bounine <alexandre.bounine@idt.com>
Description:
		(RO) returns the device identifier

What:		/sys/bus/rapidio/devices/nn:d:iiii/vid
Date:		Nov, 2005
KernelVersion:	v2.6.15
Contact:	Matt Porter <mporter@kernel.crashing.org>,
		Alexandre Bounine <alexandre.bounine@idt.com>
Description:
		(RO) returns the device vendor identifier

What:		/sys/bus/rapidio/devices/nn:d:iiii/device_rev
Date:		Nov, 2005
KernelVersion:	v2.6.15
Contact:	Matt Porter <mporter@kernel.crashing.org>,
		Alexandre Bounine <alexandre.bounine@idt.com>
Description:
		(RO) returns the device revision level

What:		/sys/bus/rapidio/devices/nn:d:iiii/asm_did
Date:		Nov, 2005
KernelVersion:	v2.6.15
Contact:	Matt Porter <mporter@kernel.crashing.org>,
		Alexandre Bounine <alexandre.bounine@idt.com>
Description:
		(RO) returns identifier for the assembly containing the device

What:		/sys/bus/rapidio/devices/nn:d:iiii/asm_rev
Date:		Nov, 2005
KernelVersion:	v2.6.15
Contact:	Matt Porter <mporter@kernel.crashing.org>,
		Alexandre Bounine <alexandre.bounine@idt.com>
Description:
		(RO) returns revision level of the assembly containing the
		device

What:		/sys/bus/rapidio/devices/nn:d:iiii/asm_vid
Date:		Nov, 2005
KernelVersion:	v2.6.15
Contact:	Matt Porter <mporter@kernel.crashing.org>,
		Alexandre Bounine <alexandre.bounine@idt.com>
Description:
		(RO) returns vendor identifier of the assembly containing the
		device

What:		/sys/bus/rapidio/devices/nn:d:iiii/destid
Date:		Mar, 2011
KernelVersion:	v2.6.3
Contact:	Matt Porter <mporter@kernel.crashing.org>,
		Alexandre Bounine <alexandre.bounine@idt.com>
Description:
		(RO) returns device destination ID assigned by the enumeration
		routine

What:		/sys/bus/rapidio/devices/nn:d:iiii/lprev
Date:		Mar, 2011
KernelVersion:	v2.6.39
Contact:	Matt Porter <mporter@kernel.crashing.org>,
		Alexandre Bounine <alexandre.bounine@idt.com>
Description:
		(RO) returns name of previous device (switch) on the path to the
		device that that owns this attribute

What:		/sys/bus/rapidio/devices/nn:d:iiii/modalias
Date:		Jul, 2013
KernelVersion:	v3.11
Contact:	Matt Porter <mporter@kernel.crashing.org>,
		Alexandre Bounine <alexandre.bounine@idt.com>
Description:
		(RO) returns the device modalias

What:		/sys/bus/rapidio/devices/nn:d:iiii/config
Date:		Nov, 2005
KernelVersion:	v2.6.15
Contact:	Matt Porter <mporter@kernel.crashing.org>,
		Alexandre Bounine <alexandre.bounine@idt.com>
Description:
		(RW) Binary attribute to read from and write to the device
		configuration registers using the RapidIO maintenance
		transactions. This attribute is similar in behaviour to the
		"config" attribute of PCI devices and provides an access to the
		RapidIO device registers using standard file read and write
		operations.

RapidIO Switch Device Attributes
--------------------------------

RapidIO switches have additional attributes in sysfs. RapidIO subsystem supports
common and device-specific sysfs attributes for switches. Because switches are
integrated into the RapidIO subsystem, it offers a method to create
device-specific sysfs attributes by specifying a callback function that may be
set by the switch initialization routine during enumeration or discovery
process.

What:		/sys/bus/rapidio/devices/nn:s:iiii/routes
Date:		Nov, 2005
KernelVersion:	v2.6.15
Contact:	Matt Porter <mporter@kernel.crashing.org>,
		Alexandre Bounine <alexandre.bounine@idt.com>
Description:
		(RO) reports switch routing information in "destID port" format.
		This attribute reports only valid routing table entries, one
		line for each entry.

What:		/sys/bus/rapidio/devices/nn:s:iiii/destid
Date:		Mar, 2011
KernelVersion:	v2.6.3
Contact:	Matt Porter <mporter@kernel.crashing.org>,
		Alexandre Bounine <alexandre.bounine@idt.com>
Description:
		(RO) device destination ID of the associated device that defines
		a route to the switch

What:		/sys/bus/rapidio/devices/nn:s:iiii/hopcount
Date:		Mar, 2011
KernelVersion:	v2.6.39
Contact:	Matt Porter <mporter@kernel.crashing.org>,
		Alexandre Bounine <alexandre.bounine@idt.com>
Description:
		(RO) number of hops on the path to the switch

What:		/sys/bus/rapidio/devices/nn:s:iiii/lnext
Date:		Mar, 2011
KernelVersion:	v2.6.39
Contact:	Matt Porter <mporter@kernel.crashing.org>,
		Alexandre Bounine <alexandre.bounine@idt.com>
Description:
		(RO) returns names of devices linked to the switch except one of
		a device linked to the ingress port (reported as "lprev"). This
		is an array names with number of lines equal to number of ports
		in switch. If a switch port has no attached device, returns
		"null" instead of a device name.

Device-specific Switch Attributes
---------------------------------

IDT_GEN2-

What:		/sys/bus/rapidio/devices/nn:s:iiii/errlog
Date:		Oct, 2010
KernelVersion:	v2.6.37
Contact:	Matt Porter <mporter@kernel.crashing.org>,
		Alexandre Bounine <alexandre.bounine@idt.com>
Description:
		(RO) reads contents of device error log until it is empty.

RapidIO Bus Attributes
----------------------

What:		/sys/bus/rapidio/scan
Date:		May, 2013
KernelVersion:	v3.11
Contact:	Matt Porter <mporter@kernel.crashing.org>,
		Alexandre Bounine <alexandre.bounine@idt.com>
Description:
		(WO) Allows to trigger enumeration discovery process from user
		space. To initiate an enumeration or discovery process on
		specific mport device, a user needs to write mport_ID (not
		RapidIO destination ID) into this file. The mport_ID is a
		sequential number (0 ...  RIO_MAX_MPORTS) assigned to the mport
		device. For example, for a machine with a single RapidIO
		controller, mport_ID for that controller always will be 0. To
		initiate RapidIO enumeration/discovery on all available mports a
		user must write '-1' (or RIO_MPORT_ANY) into this attribute
		file.
+55 −0
Original line number Diff line number Diff line
What:		/sys/class/rapidio_port
Description:
		On-chip RapidIO controllers and PCIe-to-RapidIO bridges
		(referenced as "Master Port" or "mport") are presented in sysfs
		as the special class of devices: "rapidio_port".
		The /sys/class/rapidio_port subdirectory contains individual
		subdirectories named as "rapidioN" where N = mport ID registered
		with RapidIO subsystem.
		NOTE: An mport ID is not a RapidIO destination ID assigned to a
		given local mport device.

What:		/sys/class/rapidio_port/rapidioN/sys_size
Date:		Apr, 2014
KernelVersion:	v3.15
Contact:	Matt Porter <mporter@kernel.crashing.org>,
		Alexandre Bounine <alexandre.bounine@idt.com>
Description:
		(RO) reports RapidIO common transport system size:
		0 = small (8-bit destination ID, max. 256 devices),
		1 = large (16-bit destination ID, max. 65536 devices).

What:		/sys/class/rapidio_port/rapidioN/port_destid
Date:		Apr, 2014
KernelVersion:	v3.15
Contact:	Matt Porter <mporter@kernel.crashing.org>,
		Alexandre Bounine <alexandre.bounine@idt.com>
Description:
		(RO) reports RapidIO destination ID assigned to the given
		RapidIO mport device. If value 0xFFFFFFFF is returned this means
		that no valid destination ID have been assigned to the mport
		(yet). Normally, before enumeration/discovery have been executed
		only fabric enumerating mports have a valid destination ID
		assigned to them using "hdid=..." rapidio module parameter.

After enumeration or discovery was performed for a given mport device,
the corresponding subdirectory will also contain subdirectories for each
child RapidIO device connected to the mport.

The example below shows mport device subdirectory with several child RapidIO
devices attached to it.

[rio@rapidio ~]$ ls /sys/class/rapidio_port/rapidio0/ -l
total 0
drwxr-xr-x 3 root root    0 Feb 11 15:10 00:e:0001
drwxr-xr-x 3 root root    0 Feb 11 15:10 00:e:0004
drwxr-xr-x 3 root root    0 Feb 11 15:10 00:e:0007
drwxr-xr-x 3 root root    0 Feb 11 15:10 00:s:0002
drwxr-xr-x 3 root root    0 Feb 11 15:10 00:s:0003
drwxr-xr-x 3 root root    0 Feb 11 15:10 00:s:0005
lrwxrwxrwx 1 root root    0 Feb 11 15:11 device -> ../../../0000:01:00.0
-r--r--r-- 1 root root 4096 Feb 11 15:11 port_destid
drwxr-xr-x 2 root root    0 Feb 11 15:11 power
lrwxrwxrwx 1 root root    0 Feb 11 15:04 subsystem -> ../../../../../../class/rapidio_port
-r--r--r-- 1 root root 4096 Feb 11 15:11 sys_size
-rw-r--r-- 1 root root 4096 Feb 11 15:04 uevent
+3 −158
Original line number Diff line number Diff line
                         RapidIO sysfs Files

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

1. RapidIO Device Subdirectories
--------------------------------

For each RapidIO device, the RapidIO subsystem creates files in an individual
subdirectory with the following name, /sys/bus/rapidio/devices/<device_name>.

The format of device_name is "nn:d:iiii", where:

nn - two-digit hexadecimal ID of RapidIO network where the device resides
d  - device typr: 'e' - for endpoint or 's' - for switch
iiii - four-digit device destID for endpoints, or switchID for switches

For example, below is a list of device directories that represents a typical
RapidIO network with one switch, one host, and two agent endpoints, as it is
seen by the enumerating host (destID = 1):

/sys/bus/rapidio/devices/00:e:0000
/sys/bus/rapidio/devices/00:e:0002
/sys/bus/rapidio/devices/00:s:0001

NOTE: An enumerating or discovering endpoint does not create a sysfs entry for
itself, this is why an endpoint with destID=1 is not shown in the list.

2. Attributes Common for All RapidIO Devices
--------------------------------------------

Each device subdirectory contains the following informational read-only files:

       did - returns the device identifier
       vid - returns the device vendor identifier
device_rev - returns the device revision level
   asm_did - returns identifier for the assembly containing the device
   asm_rev - returns revision level of the assembly containing the device
   asm_vid - returns vendor identifier of the assembly containing the device
   destid  - returns device destination ID assigned by the enumeration routine
             (see 4.1 for switch specific details)
   lprev   - returns name of previous device (switch) on the path to the device
             that that owns this attribute
  modalias - returns the device modalias

In addition to the files listed above, each device has a binary attribute file
that allows read/write access to the device configuration registers using
the RapidIO maintenance transactions:

 config - reads from and writes to the device configuration registers.

This attribute is similar in behavior to the "config" attribute of PCI devices
and provides an access to the RapidIO device registers using standard file read
and write operations.

3. RapidIO Endpoint Device Attributes
-------------------------------------

Currently Linux RapidIO subsystem does not create any endpoint specific sysfs
attributes. It is possible that RapidIO master port drivers and endpoint device
drivers will add their device-specific sysfs attributes but such attributes are
outside the scope of this document.

4. RapidIO Switch Device Attributes
-----------------------------------

RapidIO switches have additional attributes in sysfs. RapidIO subsystem supports
common and device-specific sysfs attributes for switches. Because switches are
integrated into the RapidIO subsystem, it offers a method to create
device-specific sysfs attributes by specifying a callback function that may be
set by the switch initialization routine during enumeration or discovery process.

4.1 Common Switch Attributes

   routes - reports switch routing information in "destID port" format. This
            attribute reports only valid routing table entries, one line for
            each entry.
   destid - device destination ID that defines a route to the switch
 hopcount - number of hops on the path to the switch
    lnext - returns names of devices linked to the switch except one of a device
            linked to the ingress port (reported as "lprev"). This is an array
            names with number of lines equal to number of ports in switch. If
            a switch port has no attached device, returns "null" instead of
            a device name.

4.2 Device-specific Switch Attributes

Device-specific switch attributes are listed for each RapidIO switch driver
that exports additional attributes.

IDT_GEN2:
 errlog - reads contents of device error log until it is empty.


5. RapidIO Bus Attributes
-------------------------

RapidIO bus subdirectory /sys/bus/rapidio implements the following bus-specific
attribute:

  scan - allows to trigger enumeration discovery process from user space. This
	 is a write-only attribute. To initiate an enumeration or discovery
	 process on specific mport device, a user needs to write mport_ID (not
	 RapidIO destination ID) into this file. The mport_ID is a sequential
	 number (0 ... RIO_MAX_MPORTS) assigned to the mport device.
	 For example, for a machine with a single RapidIO controller, mport_ID
	 for that controller always will be 0.
	 To initiate RapidIO enumeration/discovery on all available mports
	 a user must write '-1' (or RIO_MPORT_ANY) into this attribute file.


6. RapidIO Bus Controllers/Ports
--------------------------------

On-chip RapidIO controllers and PCIe-to-RapidIO bridges (referenced as
"Master Port" or "mport") are presented in sysfs as the special class of
devices: "rapidio_port".

The /sys/class/rapidio_port subdirectory contains individual subdirectories
named as "rapidioN" where N = mport ID registered with RapidIO subsystem.

NOTE: An mport ID is not a RapidIO destination ID assigned to a given local
mport device.

Each mport device subdirectory in addition to standard entries contains the
following device-specific attributes:

   port_destid - reports RapidIO destination ID assigned to the given RapidIO
                 mport device. If value 0xFFFFFFFF is returned this means that
                 no valid destination ID have been assigned to the mport (yet).
                 Normally, before enumeration/discovery have been executed only
                 fabric enumerating mports have a valid destination ID assigned
                 to them using "hdid=..." rapidio module parameter.
      sys_size - reports RapidIO common transport system size:
                   0 = small (8-bit destination ID, max. 256 devices),
                   1 = large (16-bit destination ID, max. 65536 devices).

After enumeration or discovery was performed for a given mport device,
the corresponding subdirectory will also contain subdirectories for each
child RapidIO device connected to the mport. Naming conventions for RapidIO
devices are described in Section 1 above.

The example below shows mport device subdirectory with several child RapidIO
devices attached to it.

[rio@rapidio ~]$ ls /sys/class/rapidio_port/rapidio0/ -l
total 0
drwxr-xr-x 3 root root    0 Feb 11 15:10 00:e:0001
drwxr-xr-x 3 root root    0 Feb 11 15:10 00:e:0004
drwxr-xr-x 3 root root    0 Feb 11 15:10 00:e:0007
drwxr-xr-x 3 root root    0 Feb 11 15:10 00:s:0002
drwxr-xr-x 3 root root    0 Feb 11 15:10 00:s:0003
drwxr-xr-x 3 root root    0 Feb 11 15:10 00:s:0005
lrwxrwxrwx 1 root root    0 Feb 11 15:11 device -> ../../../0000:01:00.0
-r--r--r-- 1 root root 4096 Feb 11 15:11 port_destid
drwxr-xr-x 2 root root    0 Feb 11 15:11 power
lrwxrwxrwx 1 root root    0 Feb 11 15:04 subsystem -> ../../../../../../class/rapidio_port
-r--r--r-- 1 root root 4096 Feb 11 15:11 sys_size
-rw-r--r-- 1 root root 4096 Feb 11 15:04 uevent
The RapidIO sysfs files have moved to:
Documentation/ABI/testing/sysfs-bus-rapidio and
Documentation/ABI/testing/sysfs-class-rapidio