xref: /openbmc/linux/Documentation/ABI/testing/sysfs-firmware-sgi_uv (revision c900529f3d9161bfde5cca0754f83b4d3c3e0220)
18b3a8944SRuss AndersonWhat:		/sys/firmware/sgi_uv/
2c1593764SJustin ErnstDate:		September 2020
3c1593764SJustin ErnstContact:	Justin Ernst <justin.ernst@hpe.com>
48b3a8944SRuss AndersonDescription:
58b3a8944SRuss Anderson		The /sys/firmware/sgi_uv directory contains information
6c1593764SJustin Ernst		about the UV platform.
78b3a8944SRuss Anderson
8c1593764SJustin Ernst		Under that directory are a number of read-only attributes::
98b3a8944SRuss Anderson
10c9624cb7SMike Travis			archtype
11c9624cb7SMike Travis			hub_type
12c9624cb7SMike Travis			hubless
138b3a8944SRuss Anderson			partition_id
148b3a8944SRuss Anderson			coherence_id
15c1593764SJustin Ernst			uv_type
168b3a8944SRuss Anderson
17c9624cb7SMike Travis		The archtype entry contains the UV architecture type that
18c9624cb7SMike Travis		is used to select arch-dependent addresses and features.
19c9624cb7SMike Travis		It can be set via the OEM_ID in the ACPI MADT table or by
20c9624cb7SMike Travis		UVsystab entry both passed from UV BIOS.
21c9624cb7SMike Travis
22c9624cb7SMike Travis		The hub_type entry is used to select the type of hub which is
23c9624cb7SMike Travis		similar to uv_type but encoded in a binary format.  Include
24c9624cb7SMike Travis		the file uv_hub.h to get the definitions.
25c9624cb7SMike Travis
26c9624cb7SMike Travis		The hubless entry basically is present and set only if there
27c9624cb7SMike Travis		is no hub.  In this case the hub_type entry is not present.
28c9624cb7SMike Travis
298b3a8944SRuss Anderson		The partition_id entry contains the partition id.
30c1593764SJustin Ernst		UV systems can be partitioned into multiple physical
318b3a8944SRuss Anderson		machines, which each partition running a unique copy
328b3a8944SRuss Anderson		of the operating system. Each partition will have a unique
33c1593764SJustin Ernst		partition id.
348b3a8944SRuss Anderson
358b3a8944SRuss Anderson		The coherence_id entry contains the coherence id.
36c1593764SJustin Ernst		A partitioned UV system can have one or more coherence
37c1593764SJustin Ernst		domains. The coherence id indicates which coherence domain
38c1593764SJustin Ernst		this partition is in.
398b3a8944SRuss Anderson
40c1593764SJustin Ernst		The uv_type entry contains the hub revision number.
41c1593764SJustin Ernst		This value can be used to identify the UV system version::
42c1593764SJustin Ernst
43e93d757cSJustin Ernst			"0.*" = Hubless UV ('*' is subtype)
44c1593764SJustin Ernst			"3.0" = UV2
45c1593764SJustin Ernst			"5.0" = UV3
46c1593764SJustin Ernst			"7.0" = UV4
47c1593764SJustin Ernst			"7.1" = UV4a
48c1593764SJustin Ernst			"9.0" = UV5
49c1593764SJustin Ernst
50c1593764SJustin Ernst		The /sys/firmware/sgi_uv directory also contains two directories::
51c1593764SJustin Ernst
52c1593764SJustin Ernst			hubs/
53c1593764SJustin Ernst			pcibuses/
54c1593764SJustin Ernst
55c1593764SJustin Ernst		The hubs directory contains a number of hub objects, each representing
56c1593764SJustin Ernst		a UV Hub visible to the BIOS. Each hub object's name is appended by a
57c1593764SJustin Ernst		unique ordinal value (ex. /sys/firmware/sgi_uv/hubs/hub_5)
58c1593764SJustin Ernst
59c1593764SJustin Ernst		Each hub object directory contains a number of read-only attributes::
60c1593764SJustin Ernst
61c1593764SJustin Ernst			cnode
62c1593764SJustin Ernst			location
63c1593764SJustin Ernst			name
64c1593764SJustin Ernst			nasid
65c1593764SJustin Ernst			shared
66c1593764SJustin Ernst			this_partition
67c1593764SJustin Ernst
68c1593764SJustin Ernst		The cnode entry contains the cnode number of the corresponding hub.
69c1593764SJustin Ernst		If a cnode value is not applicable, the value returned will be -1.
70c1593764SJustin Ernst
71c1593764SJustin Ernst		The location entry contains the location string of the corresponding hub.
72c1593764SJustin Ernst		This value is used to physically identify a hub within a system.
73c1593764SJustin Ernst
74c1593764SJustin Ernst		The name entry contains the name of the corresponding hub. This name can
75c1593764SJustin Ernst		be two variants::
76c1593764SJustin Ernst
77c1593764SJustin Ernst			"UVHub x.x" = A 'node' ASIC, connecting a CPU to the interconnect
78c1593764SJustin Ernst			fabric. The 'x.x' value represents the ASIC revision.
79c1593764SJustin Ernst			(ex. 'UVHub 5.0')
80c1593764SJustin Ernst
81c1593764SJustin Ernst			"NLxRouter" = A 'router ASIC, only connecting other ASICs to
82c1593764SJustin Ernst			the interconnect fabric. The 'x' value representing
83c1593764SJustin Ernst			the fabric technology version. (ex. 'NL8Router')
84c1593764SJustin Ernst
85c1593764SJustin Ernst		The nasid entry contains the nasid number of the corresponding hub.
86c1593764SJustin Ernst		If a nasid value is not applicable, the value returned will be -1.
87c1593764SJustin Ernst
88c1593764SJustin Ernst		The shared entry contains a boolean value describing whether the
89c1593764SJustin Ernst		corresponding hub is shared between system partitions.
90c1593764SJustin Ernst
91c1593764SJustin Ernst		The this_partition entry contains a boolean value describing whether
92c1593764SJustin Ernst		the corresponding hub is local to the current partition.
93c1593764SJustin Ernst
94c1593764SJustin Ernst		Each hub object directory also contains a number of port objects,
95c1593764SJustin Ernst		each representing a fabric port on the corresponding hub.
96c1593764SJustin Ernst		A port object's name is appended by a unique ordinal value
97c1593764SJustin Ernst		(ex. /sys/firmware/sgi_uv/hubs/hub_5/port_3)
98c1593764SJustin Ernst
99c1593764SJustin Ernst		Each port object directory contains a number of read-only attributes::
100c1593764SJustin Ernst
101c1593764SJustin Ernst			conn_hub
102c1593764SJustin Ernst			conn_port
103c1593764SJustin Ernst
104c1593764SJustin Ernst		The conn_hub entry contains a value representing the unique
105*ebab9426SBjorn Helgaas		ordinal value of the hub on the other end of the fabric
106c1593764SJustin Ernst		cable plugged into the port. If the port is disconnected,
107c1593764SJustin Ernst		the value returned will be -1.
108c1593764SJustin Ernst
109c1593764SJustin Ernst		The conn_port entry contains a value representing the unique
110*ebab9426SBjorn Helgaas		ordinal value of the port on the other end of the fabric cable
111c1593764SJustin Ernst		plugged into the port. If the port is disconnected, the value
112c1593764SJustin Ernst		returned will be -1.
113c1593764SJustin Ernst
114c1593764SJustin Ernst		Ex:
115c1593764SJustin Ernst			A value of '3' is read from:
116c1593764SJustin Ernst				/sys/firmware/sgi_uv/hubs/hub_5/port_3/conn_hub
117c1593764SJustin Ernst
118c1593764SJustin Ernst			and a value of '6' is read from:
119c1593764SJustin Ernst				/sys/firmware/sgi_uv/hubs/hub_5/port_3/conn_port
120c1593764SJustin Ernst
121c1593764SJustin Ernst			representing that this port is connected to:
122c1593764SJustin Ernst				/sys/firmware/sgi_uv/hubs/hub_3/port_6
123c1593764SJustin Ernst
124c1593764SJustin Ernst		The pcibuses directory contains a number of PCI bus objects.
125c1593764SJustin Ernst		Each PCI bus object's name is appended by its PCI bus address.
126c1593764SJustin Ernst		(ex. pcibus_0003:80)
127c1593764SJustin Ernst
128c1593764SJustin Ernst		Each pcibus object has a number of possible read-only attributes::
129c1593764SJustin Ernst
130c1593764SJustin Ernst			type
131c1593764SJustin Ernst			location
132c1593764SJustin Ernst			slot
133c1593764SJustin Ernst			ppb_addr
134c1593764SJustin Ernst			iio_stack
135c1593764SJustin Ernst
136c1593764SJustin Ernst		The type entry contains a value describing the type of IO at
137c1593764SJustin Ernst		the corresponding PCI bus address. Known possible values
138c1593764SJustin Ernst		across all UV versions are::
139c1593764SJustin Ernst
140c1593764SJustin Ernst			BASE IO
141c1593764SJustin Ernst			PCIe IO
142c1593764SJustin Ernst			PCIe SLOT
143c1593764SJustin Ernst			NODE IO
144c1593764SJustin Ernst			Riser
145c1593764SJustin Ernst			PPB
146c1593764SJustin Ernst
147c1593764SJustin Ernst		The location entry contains the location string of the UV Hub
148c1593764SJustin Ernst		of the CPU physically connected to the corresponding PCI bus.
149c1593764SJustin Ernst
150c1593764SJustin Ernst		The slot entry contains the physical slot number of the
151c1593764SJustin Ernst		corresponding PCI bus. This value is used to physically locate
152c1593764SJustin Ernst		PCI cards within a system.
153c1593764SJustin Ernst
154c1593764SJustin Ernst		The ppb_addr entry contains the PCI address string of the
155c1593764SJustin Ernst		bridged PCI bus. This entry is only present when the PCI bus
156c1593764SJustin Ernst		object type is 'PPB'.
157c1593764SJustin Ernst
158c1593764SJustin Ernst		The iio_stack entry contains a value describing the IIO stack
159c1593764SJustin Ernst		number that the corresponding PCI bus object is connected to.
160