|  | SYSFS FILES | 
|  |  | 
|  | For each InfiniBand device, the InfiniBand drivers create the | 
|  | following files under /sys/class/infiniband/<device name>: | 
|  |  | 
|  | node_type      - Node type (CA, switch or router) | 
|  | node_guid      - Node GUID | 
|  | sys_image_guid - System image GUID | 
|  |  | 
|  | In addition, there is a "ports" subdirectory, with one subdirectory | 
|  | for each port.  For example, if mthca0 is a 2-port HCA, there will | 
|  | be two directories: | 
|  |  | 
|  | /sys/class/infiniband/mthca0/ports/1 | 
|  | /sys/class/infiniband/mthca0/ports/2 | 
|  |  | 
|  | (A switch will only have a single "0" subdirectory for switch port | 
|  | 0; no subdirectory is created for normal switch ports) | 
|  |  | 
|  | In each port subdirectory, the following files are created: | 
|  |  | 
|  | cap_mask       - Port capability mask | 
|  | lid            - Port LID | 
|  | lid_mask_count - Port LID mask count | 
|  | rate           - Port data rate (active width * active speed) | 
|  | sm_lid         - Subnet manager LID for port's subnet | 
|  | sm_sl          - Subnet manager SL for port's subnet | 
|  | state          - Port state (DOWN, INIT, ARMED, ACTIVE or ACTIVE_DEFER) | 
|  | phys_state     - Port physical state (Sleep, Polling, LinkUp, etc) | 
|  |  | 
|  | There is also a "counters" subdirectory, with files | 
|  |  | 
|  | VL15_dropped | 
|  | excessive_buffer_overrun_errors | 
|  | link_downed | 
|  | link_error_recovery | 
|  | local_link_integrity_errors | 
|  | port_rcv_constraint_errors | 
|  | port_rcv_data | 
|  | port_rcv_errors | 
|  | port_rcv_packets | 
|  | port_rcv_remote_physical_errors | 
|  | port_rcv_switch_relay_errors | 
|  | port_xmit_constraint_errors | 
|  | port_xmit_data | 
|  | port_xmit_discards | 
|  | port_xmit_packets | 
|  | symbol_error | 
|  |  | 
|  | Each of these files contains the corresponding value from the port's | 
|  | Performance Management PortCounters attribute, as described in | 
|  | section 16.1.3.5 of the InfiniBand Architecture Specification. | 
|  |  | 
|  | The "pkeys" and "gids" subdirectories contain one file for each | 
|  | entry in the port's P_Key or GID table respectively.  For example, | 
|  | ports/1/pkeys/10 contains the value at index 10 in port 1's P_Key | 
|  | table. | 
|  |  | 
|  | There is an optional "hw_counters" subdirectory that may be under either | 
|  | the parent device or the port subdirectories or both.  If present, | 
|  | there are a list of counters provided by the hardware.  They may match | 
|  | some of the counters in the counters directory, but they often include | 
|  | many other counters.  In addition to the various counters, there will | 
|  | be a file named "lifespan" that configures how frequently the core | 
|  | should update the counters when they are being accessed (counters are | 
|  | not updated if they are not being accessed).  The lifespan is in milli- | 
|  | seconds and defaults to 10 unless set to something else by the driver. | 
|  | Users may echo a value between 0 - 10000 to the lifespan file to set | 
|  | the length of time between updates in milliseconds. | 
|  |  | 
|  | MTHCA | 
|  |  | 
|  | The Mellanox HCA driver also creates the files: | 
|  |  | 
|  | hw_rev   - Hardware revision number | 
|  | fw_ver   - Firmware version | 
|  | hca_type - HCA type: "MT23108", "MT25208 (MT23108 compat mode)", | 
|  | or "MT25208" | 
|  |  | 
|  | HFI1 | 
|  |  | 
|  | The hfi1 driver also creates these additional files: | 
|  |  | 
|  | hw_rev - hardware revision | 
|  | board_id - manufacturing board id | 
|  | tempsense - thermal sense information | 
|  | serial - board serial number | 
|  | nfreectxts - number of free user contexts | 
|  | nctxts - number of allowed contexts (PSM2) | 
|  | chip_reset - diagnostic (root only) | 
|  | boardversion - board version | 
|  |  | 
|  | sdma<N>/ - one directory per sdma engine (0 - 15) | 
|  | sdma<N>/cpu_list - read-write, list of cpus for user-process to sdma | 
|  | engine assignment. | 
|  | sdma<N>/vl - read-only, vl the sdma engine maps to. | 
|  |  | 
|  | The new interface will give the user control on the affinity settings | 
|  | for the hfi1 device. | 
|  | As an example, to set an sdma engine irq affinity and thread affinity | 
|  | of a user processes to use the sdma engine, which is "near" in terms | 
|  | of NUMA configuration, or physical cpu location, the user will do: | 
|  |  | 
|  | echo "3" > /proc/irq/<N>/smp_affinity_list | 
|  | echo "4-7" > /sys/devices/.../sdma3/cpu_list | 
|  | cat /sys/devices/.../sdma3/vl | 
|  | 0 | 
|  | echo "8" > /proc/irq/<M>/smp_affinity_list | 
|  | echo "9-12" > /sys/devices/.../sdma4/cpu_list | 
|  | cat /sys/devices/.../sdma4/vl | 
|  | 1 | 
|  |  | 
|  | to make sure that when a process runs on cpus 4,5,6, or 7, | 
|  | and uses vl=0, then sdma engine 3 is selected by the driver, | 
|  | and also the interrupt of the sdma engine 3 is steered to cpu 3. | 
|  | Similarly, when a process runs on cpus 9,10,11, or 12 and sets vl=1, | 
|  | then engine 4 will be selected and the irq of the sdma engine 4 is | 
|  | steered to cpu 8. | 
|  | This assumes that in the above N is the irq number of "sdma3", | 
|  | and M is irq number of "sdma4" in the /proc/interrupts file. | 
|  |  | 
|  | ports/1/ | 
|  | CCMgtA/ | 
|  | cc_settings_bin - CCA tables used by PSM2 | 
|  | cc_table_bin | 
|  | cc_prescan - enable prescaning for faster BECN response | 
|  | sc2v/ - 32 files (0 - 31) used to translate sl->vl | 
|  | sl2sc/ - 32 files (0 - 31) used to translate sl->sc | 
|  | vl2mtu/ - 16 (0 - 15) files used to determine MTU for vl |