← Documents Documentation/gpu/dp-mst/topology-figure-3.dot GitHub 원문 ↗

Linux 6.18.37 · GPU

DisplayPort MST 토폴로지 도식 3: 회색 분기와 굵은 참조 경로

Port #4·MSTB #4 분기를 회색으로 낮추고 Payload #2에서 Port #3과 MSTB #3으로 이어지는 참조 경로를 굵게 표시한 MST 토폴로지를 구조화합니다.

Source pathDocumentation/gpu/dp-mst/topology-figure-3.dot
Source versionLinux v6.18.37
TranslationDUJINLABS 전문 번역 + 해설

요약·해설과 원문, 전문 번역을 서로 분리했습니다. API 이름, symbol, source path는 원문 표기를 사용합니다.

1. 요약·해설

원문의 핵심 논리와 kernel programming 관점의 보충 설명입니다. 아래의 전문 번역과는 별도로 작성했습니다.

요약·해설

topology-figure-3.dot:1-59

Port #4·MSTB #4 분기를 회색으로 낮추고 Payload #2에서 Port #3과 MSTB #3으로 이어지는 참조 경로를 굵게 표시한 MST 토폴로지를 구조화합니다.

노드와 간선은 원문 DOT의 식별자와 방향을 유지하고, 표시 라벨과 주석만 한국어로 옮겼습니다. 색이나 굵기의 의미가 원문에 명시되지 않은 경우에는 적용 대상을 보여 주고 의미를 추정하지 않습니다.

도식 3 핵심 경로
MSTB #1Port #1MSTB #2
MSTB #1Port #2MSTB #3Port #3MSTB #4
MSTB #3Port #4

MSTB #1에서 두 하위 분기로 갈라지는 공통 토폴로지입니다.

2. 영어 원문 전체

번역 기준이 된 Linux v6.18.37 원문입니다. 줄 번호는 이 버전의 파일 좌표입니다.

원문 전체 펼치기
1 digraph T {
2 /* Make sure our payloads are always drawn below the driver node */
3 subgraph cluster_driver {
4 fillcolor = grey;
5 style = filled;
6 edge [dir=none];
7 driver -> payload1;
8 driver -> payload2 [penwidth=3];
9 edge [dir=""];
10 }
11
12 /* Driver malloc references */
13 edge [style=dashed];
14 driver -> port1;
15 driver -> port2;
16 driver -> port3:e;
17 driver -> port4 [color=grey];
18 payload1:s -> port1:e;
19 payload2:s -> port3:e [penwidth=3];
20 edge [style=""];
21
22 subgraph cluster_topology {
23 label="Topology Manager";
24 labelloc=bottom;
25
26 /* Topology references */
27 mstb1 -> {port1, port2};
28 port1 -> mstb2;
29 edge [color=grey];
30 port2 -> mstb3 -> {port3, port4};
31 port3 -> mstb4;
32 edge [color=""];
33
34 /* Malloc references */
35 edge [style=dashed;dir=back];
36 mstb1 -> {port1, port2};
37 port1 -> mstb2;
38 port2 -> mstb3 [penwidth=3];
39 mstb3 -> port3 [penwidth=3];
40 edge [color=grey];
41 mstb3 -> port4;
42 port3 -> mstb4;
43 }
44
45 mstb1 [label="MSTB #1";style=filled;fillcolor=palegreen];
46 mstb2 [label="MSTB #2";style=filled;fillcolor=palegreen];
47 mstb3 [label="MSTB #3";style=filled;fillcolor=palegreen;penwidth=3];
48 mstb4 [label="MSTB #4";style=filled;fillcolor=grey];
49
50 port1 [label="Port #1"];
51 port2 [label="Port #2";penwidth=5];
52 port3 [label="Port #3";penwidth=3];
53 port4 [label="Port #4";style=filled;fillcolor=grey];
54
55 driver [label="DRM driver";style=filled;shape=box;fillcolor=lightblue];
56
57 payload1 [label="Payload #1";style=filled;shape=box;fillcolor=lightblue];
58 payload2 [label="Payload #2";style=filled;shape=box;fillcolor=lightblue;penwidth=3];
59 }
60

3. 한국어 전문 번역

영어 원문의 문단 순서와 의미를 유지한 전체 번역입니다. 코드, 함수명, symbol과 URL은 원문 표기를 유지합니다.

DOT 토폴로지 도식 3 전문 번역

1-59

Port #4·MSTB #4 분기를 회색으로 낮추고 Payload #2에서 Port #3과 MSTB #3으로 이어지는 참조 경로를 굵게 표시한 MST 토폴로지를 구조화합니다.

Graphviz `digraph T`는 회색 `cluster_driver`와 `cluster_topology` 두 영역을 사용합니다. 드라이버 영역에는 `driver`, `payload1`, `payload2`가 있고 토폴로지 영역에는 `mstb1`-`mstb4`와 `port1`-`port4`가 있습니다. 노드 ID와 포트 방향 `:s`, `:e`, 간선 방향 및 모든 Graphviz 속성은 번역에서 그대로 보존합니다.

실선은 주석상 `Topology references`, 점선은 `malloc references`입니다. 토폴로지 안 점선에는 `dir=back`이 지정되어 화살표가 선언 방향의 반대로 그려집니다. `driver`와 payload 사이 간선은 `dir=none`이라 방향 화살표가 없습니다.

이 도식의 붉은색·회색·굵은 선이 어떤 수명주기 상태를 뜻하는지는 DOT 원문에 범례가 없습니다. 번역은 적용된 노드와 간선을 정확히 열거하되 의미를 임의로 확정하지 않습니다.

노드 사전
노드 ID원문 라벨기본 모양한국어 역할
driverDRM driverlightblue boxDRM 드라이버 객체
payload1, payload2Payload #1, #2lightblue boxMST payload 객체
mstb1-mstb4MSTB #1-#4filled nodeMST branch 객체
port1-port4Port #1-#4nodeMST 포트 객체

DOT 노드 ID, 화면 라벨과 한국어 역할입니다.

실선 토폴로지 구조
MSTB #1Port #1MSTB #2
MSTB #1Port #2MSTB #3Port #3MSTB #4
MSTB #3Port #4

세 도식에 공통으로 선언된 MSTB와 Port 연결입니다.

드라이버와 payload 경로
DRM driverPayload #1Port #1
DRM driverPayload #2Port #3

드라이버 아래의 두 payload가 각각 Port #1과 Port #3에 연결됩니다.

도식 3 스타일과 강조
구성대상원문 표현
회색 노드MSTB #4, Port #4두 노드에 회색 채움 적용
회색 드라이버 참조driver -> port4점선 참조의 색을 grey로 지정
회색 토폴로지 분기port2 -> mstb3 -> {port3, port4}; port3 -> mstb4분기 전체 실선 간선
굵은 드라이버 경로driver - Payload #2; Payload #2 -> Port #3`penwidth=3`
굵은 malloc 경로port2 -> mstb3; mstb3 -> port3`penwidth=3`, `dir=back`
굵은 노드Port #2=5, MSTB #3/Port #3/Payload #2=3노드 외곽선 두께

원문 DOT에 선언된 색·채움·선 종류를 추정 없이 정리했습니다.

참조 계층
계층스타일대표 간선
드라이버 배치`dir=none`driver - payload1, payload2
드라이버 malloc 참조점선driver -> port1-port4; payload1 -> port1; payload2 -> port3
토폴로지 참조실선mstb1 -> port1/port2; port -> 하위 mstb
토폴로지 malloc 참조점선, `dir=back`Topology references와 같은 객체 경로의 역방향 화살표

같은 노드 사이에도 실선 토폴로지 참조와 점선 메모리 참조가 별도로 존재합니다.

원문 줄 좌표
원문 줄구성
1그래프 선언
2-10driver cluster와 payload 배치
12-20driver malloc 참조
22-43Topology Manager cluster의 실선·점선 참조
45-59노드 라벨·모양·색과 그래프 종료

59줄 DOT 원문의 구성 범위입니다.

아래 첫 코드 블록은 주석과 표시 라벨만 한국어로 옮긴 전문 번역입니다. 노드 ID, 간선, 속성, 괄호, 세미콜론과 줄 순서는 원문과 같습니다.

digraph T {
    /* 페이로드가 항상 드라이버 노드 아래에 그려지도록 한다 */
    subgraph cluster_driver {
        fillcolor = grey;
        style = filled;
        edge [dir=none];
        driver -> payload1;
        driver -> payload2 [penwidth=3];
        edge [dir=""];
    }

    /* 드라이버의 malloc 참조 */
    edge [style=dashed];
    driver -> port1;
    driver -> port2;
    driver -> port3:e;
    driver -> port4 [color=grey];
    payload1:s -> port1:e;
    payload2:s -> port3:e [penwidth=3];
    edge [style=""];

    subgraph cluster_topology {
        label="토폴로지 관리자";
        labelloc=bottom;

        /* 토폴로지 참조 */
        mstb1 -> {port1, port2};
        port1 -> mstb2;
        edge [color=grey];
        port2 -> mstb3 -> {port3, port4};
        port3 -> mstb4;
        edge [color=""];

        /* malloc 참조 */
        edge [style=dashed;dir=back];
        mstb1 -> {port1, port2};
        port1 -> mstb2;
        port2 -> mstb3 [penwidth=3];
        mstb3 -> port3 [penwidth=3];
        edge [color=grey];
        mstb3 -> port4;
        port3 -> mstb4;
    }

    mstb1 [label="MSTB #1";style=filled;fillcolor=palegreen];
    mstb2 [label="MSTB #2";style=filled;fillcolor=palegreen];
    mstb3 [label="MSTB #3";style=filled;fillcolor=palegreen;penwidth=3];
    mstb4 [label="MSTB #4";style=filled;fillcolor=grey];

    port1 [label="포트 #1"];
    port2 [label="포트 #2";penwidth=5];
    port3 [label="포트 #3";penwidth=3];
    port4 [label="포트 #4";style=filled;fillcolor=grey];

    driver [label="DRM 드라이버";style=filled;shape=box;fillcolor=lightblue];

    payload1 [label="페이로드 #1";style=filled;shape=box;fillcolor=lightblue];
    payload2 [label="페이로드 #2";style=filled;shape=box;fillcolor=lightblue;penwidth=3];
}

아래 두 번째 코드 블록은 Linux v6.18.37의 59줄 DOT 원문 전체입니다.

digraph T {
    /* Make sure our payloads are always drawn below the driver node */
    subgraph cluster_driver {
        fillcolor = grey;
        style = filled;
        edge [dir=none];
        driver -> payload1;
        driver -> payload2 [penwidth=3];
        edge [dir=""];
    }

    /* Driver malloc references */
    edge [style=dashed];
    driver -> port1;
    driver -> port2;
    driver -> port3:e;
    driver -> port4 [color=grey];
    payload1:s -> port1:e;
    payload2:s -> port3:e [penwidth=3];
    edge [style=""];

    subgraph cluster_topology {
        label="Topology Manager";
        labelloc=bottom;

        /* Topology references */
        mstb1 -> {port1, port2};
        port1 -> mstb2;
        edge [color=grey];
        port2 -> mstb3 -> {port3, port4};
        port3 -> mstb4;
        edge [color=""];

        /* Malloc references */
        edge [style=dashed;dir=back];
        mstb1 -> {port1, port2};
        port1 -> mstb2;
        port2 -> mstb3 [penwidth=3];
        mstb3 -> port3 [penwidth=3];
        edge [color=grey];
        mstb3 -> port4;
        port3 -> mstb4;
    }

    mstb1 [label="MSTB #1";style=filled;fillcolor=palegreen];
    mstb2 [label="MSTB #2";style=filled;fillcolor=palegreen];
    mstb3 [label="MSTB #3";style=filled;fillcolor=palegreen;penwidth=3];
    mstb4 [label="MSTB #4";style=filled;fillcolor=grey];

    port1 [label="Port #1"];
    port2 [label="Port #2";penwidth=5];
    port3 [label="Port #3";penwidth=3];
    port4 [label="Port #4";style=filled;fillcolor=grey];

    driver [label="DRM driver";style=filled;shape=box;fillcolor=lightblue];

    payload1 [label="Payload #1";style=filled;shape=box;fillcolor=lightblue];
    payload2 [label="Payload #2";style=filled;shape=box;fillcolor=lightblue;penwidth=3];
}