요약·해설과 원문, 전문 번역을 서로 분리했습니다. API 이름, symbol, source path는 원문 표기를 사용합니다.
1. 요약·해설
원문의 핵심 논리와 kernel programming 관점의 보충 설명입니다. 아래의 전문 번역과는 별도로 작성했습니다.
Hub and fabric connectivity
sysfs-firmware-sgi_uv:54-123BIOS-visible hubs와 ordinal ports의 remote endpoints를 연결해 interconnect fabric topology를 복원할 수 있습니다.
PCI bus physical placement
sysfs-firmware-sgi_uv:124-159Address-named PCI bus objects가 IO type, hub location, slot, bridge address와 IIO stack을 제공합니다.
2. 영어 원문 전체
번역 기준이 된 Linux v6.18.37 원문입니다. 줄 번호는 이 버전의 파일 좌표입니다.
원문 전체 펼치기
What: /sys/firmware/sgi_uv/
Date: September 2020
Contact: Justin Ernst <justin.ernst@hpe.com>
Description:
The /sys/firmware/sgi_uv directory contains information
about the UV platform.
Under that directory are a number of read-only attributes::
archtype
hub_type
hubless
partition_id
coherence_id
uv_type
The archtype entry contains the UV architecture type that
is used to select arch-dependent addresses and features.
It can be set via the OEM_ID in the ACPI MADT table or by
UVsystab entry both passed from UV BIOS.
The hub_type entry is used to select the type of hub which is
similar to uv_type but encoded in a binary format. Include
the file uv_hub.h to get the definitions.
The hubless entry basically is present and set only if there
is no hub. In this case the hub_type entry is not present.
The partition_id entry contains the partition id.
UV systems can be partitioned into multiple physical
machines, which each partition running a unique copy
of the operating system. Each partition will have a unique
partition id.
The coherence_id entry contains the coherence id.
A partitioned UV system can have one or more coherence
domains. The coherence id indicates which coherence domain
this partition is in.
The uv_type entry contains the hub revision number.
This value can be used to identify the UV system version::
"0.*" = Hubless UV ('*' is subtype)
"3.0" = UV2
"5.0" = UV3
"7.0" = UV4
"7.1" = UV4a
"9.0" = UV5
The /sys/firmware/sgi_uv directory also contains two directories::
hubs/
pcibuses/
The hubs directory contains a number of hub objects, each representing
a UV Hub visible to the BIOS. Each hub object's name is appended by a
unique ordinal value (ex. /sys/firmware/sgi_uv/hubs/hub_5)
Each hub object directory contains a number of read-only attributes::
cnode
location
name
nasid
shared
this_partition
The cnode entry contains the cnode number of the corresponding hub.
If a cnode value is not applicable, the value returned will be -1.
The location entry contains the location string of the corresponding hub.
This value is used to physically identify a hub within a system.
The name entry contains the name of the corresponding hub. This name can
be two variants::
"UVHub x.x" = A 'node' ASIC, connecting a CPU to the interconnect
fabric. The 'x.x' value represents the ASIC revision.
(ex. 'UVHub 5.0')
"NLxRouter" = A 'router ASIC, only connecting other ASICs to
the interconnect fabric. The 'x' value representing
the fabric technology version. (ex. 'NL8Router')
The nasid entry contains the nasid number of the corresponding hub.
If a nasid value is not applicable, the value returned will be -1.
The shared entry contains a boolean value describing whether the
corresponding hub is shared between system partitions.
The this_partition entry contains a boolean value describing whether
the corresponding hub is local to the current partition.
Each hub object directory also contains a number of port objects,
each representing a fabric port on the corresponding hub.
A port object's name is appended by a unique ordinal value
(ex. /sys/firmware/sgi_uv/hubs/hub_5/port_3)
Each port object directory contains a number of read-only attributes::
conn_hub
conn_port
The conn_hub entry contains a value representing the unique
ordinal value of the hub on the other end of the fabric
cable plugged into the port. If the port is disconnected,
the value returned will be -1.
The conn_port entry contains a value representing the unique
ordinal value of the port on the other end of the fabric cable
plugged into the port. If the port is disconnected, the value
returned will be -1.
Ex:
A value of '3' is read from:
/sys/firmware/sgi_uv/hubs/hub_5/port_3/conn_hub
and a value of '6' is read from:
/sys/firmware/sgi_uv/hubs/hub_5/port_3/conn_port
representing that this port is connected to:
/sys/firmware/sgi_uv/hubs/hub_3/port_6
The pcibuses directory contains a number of PCI bus objects.
Each PCI bus object's name is appended by its PCI bus address.
(ex. pcibus_0003:80)
Each pcibus object has a number of possible read-only attributes::
type
location
slot
ppb_addr
iio_stack
The type entry contains a value describing the type of IO at
the corresponding PCI bus address. Known possible values
across all UV versions are::
BASE IO
PCIe IO
PCIe SLOT
NODE IO
Riser
PPB
The location entry contains the location string of the UV Hub
of the CPU physically connected to the corresponding PCI bus.
The slot entry contains the physical slot number of the
corresponding PCI bus. This value is used to physically locate
PCI cards within a system.
The ppb_addr entry contains the PCI address string of the
bridged PCI bus. This entry is only present when the PCI bus
object type is 'PPB'.
The iio_stack entry contains a value describing the IIO stack
number that the corresponding PCI bus object is connected to.
3. 한국어 전문 번역
영어 원문의 문단 순서와 의미를 유지한 전체 번역입니다. 코드, 함수명, symbol과 URL은 원문 표기를 유지합니다.
SGI UV platform topology
1-159| 항목 | 한국어 전문 번역 |
|---|---|
| What | /sys/firmware/sgi_uv/ |
| Date | 2020년 9월 |
| Contact | Justin Ernst <justin.ernst@hpe.com> |
| Description | `/sys/firmware/sgi_uv`는 UV platform 정보를 제공합니다. Root의 read-only `archtype`은 architecture-dependent addresses와 features를 고르는 UV architecture type이며 UV BIOS가 전달한 ACPI MADT `OEM_ID` 또는 `UVsystab` entry로 설정할 수 있습니다. `hub_type`은 `uv_type`과 비슷한 hub type을 binary encoding으로 제공하고 definitions는 `uv_hub.h`에 있습니다. `hubless`는 hub가 없을 때만 존재하고 설정되며 이때 `hub_type`은 없습니다. `partition_id`는 UV system을 여러 physical machines로 나눠 각 partition이 독립 OS copy를 실행할 때의 unique ID입니다. `coherence_id`는 partition이 속한 coherence domain을 나타내며 한 partitioned system에는 하나 이상의 domains가 있을 수 있습니다. `uv_type`은 hub revision으로, `0.*`는 Hubless UV, `3.0`은 UV2, `5.0`은 UV3, `7.0`은 UV4, `7.1`은 UV4a, `9.0`은 UV5입니다. Root에는 `hubs/`와 `pcibuses/` directories도 있습니다. `hubs/`의 `hub_<ordinal>`은 BIOS에 보이는 UV Hub를 나타냅니다. Read-only `cnode`와 `nasid`는 적용할 수 없으면 -1, `location`은 physical identification string, `name`은 CPU를 interconnect fabric에 연결하는 node ASIC인 `UVHub x.x`(예: `UVHub 5.0`) 또는 다른 ASICs만 fabric에 연결하는 router ASIC인 `NLxRouter`(예: `NL8Router`)입니다. `shared`는 partitions 사이 공유 여부, `this_partition`은 현재 partition에 local인지 나타내는 booleans입니다. 각 hub에는 `port_<ordinal>` objects가 있으며 `conn_hub`와 `conn_port`가 fabric cable 반대편 hub와 port ordinal을 가리킵니다. 연결이 끊겼으면 각각 -1입니다. `pcibuses/` objects는 `pcibus_0003:80`처럼 PCI bus address를 이름에 붙입니다. 가능한 read-only attributes는 `type`, `location`, `slot`, `ppb_addr`, `iio_stack`입니다. `type`의 known values는 `BASE IO`, `PCIe IO`, `PCIe SLOT`, `NODE IO`, `Riser`, `PPB`입니다. `location`은 bus에 physically connected된 CPU의 UV Hub location, `slot`은 PCI card를 찾는 physical slot number, `ppb_addr`는 bridged PCI bus address이며 type이 `PPB`일 때만 존재하고, `iio_stack`은 bus가 연결된 IIO stack number입니다. |
| Access | Read-only attributes |
Root-level architecture, hub와 partition metadata입니다.
uv_type revision strings와 system generations입니다.
BIOS-visible hub_<ordinal> objects의 identity와 locality fields입니다.
hub_5의 port_3이 반대편 hub_3의 port_6을 지시하는 example입니다.
PCI bus address별 physical placement와 bridge metadata입니다.
모든 UV versions에서 알려진 type strings입니다.
/sys/firmware/sgi_uv/hubs/hub_5/port_3/conn_hub = 3
/sys/firmware/sgi_uv/hubs/hub_5/port_3/conn_port = 6
Connected endpoint:
/sys/firmware/sgi_uv/hubs/hub_3/port_6
Platform generation and partition identity
sysfs-firmware-sgi_uv:1-53Root attributes는 UV architecture·generation, hub presence, physical partition과 coherence domain을 식별합니다.