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