diff options
Diffstat (limited to 'docs/03-architecture/09-full-system-picture.md')
| -rw-r--r-- | docs/03-architecture/09-full-system-picture.md | 38 |
1 files changed, 24 insertions, 14 deletions
diff --git a/docs/03-architecture/09-full-system-picture.md b/docs/03-architecture/09-full-system-picture.md index e03a68e..3c15830 100644 --- a/docs/03-architecture/09-full-system-picture.md +++ b/docs/03-architecture/09-full-system-picture.md @@ -80,7 +80,7 @@ flowchart TB class VDEV,EMU done class MEMM,WORK wip - class BE plan + class BE done class IOMMU,VFIO done class GSP,ENG,GMMU,VRAM,DB hw class ND,USR,GKO,APP vendor @@ -125,8 +125,9 @@ stateDiagram-v2 Emulated today: the module drives the stage transitions and answers status reads from the BAR0 shadow. The real - backend boots the physical GSP in - parallel [planned]. + backend boots the physical GSP as its + own live session (init-done, static + configuration and clean releases proven). end note ``` @@ -262,14 +263,14 @@ flowchart LR F --> G["Write releases and completions<br/>into guest memory"] G --> H["Guest trackers advance"] - D -.->|"planned"| I["Forward to a real engine"] + D -.->|"wip/default-off"| I["Forward to a real engine"] classDef done fill:#d5f5d5,stroke:#1e7a1e classDef wip fill:#fff3cd,stroke:#9a7b1a classDef plan fill:#f8d7da,stroke:#9a1a1a class A,B,D done class E,F,G,H wip - class I plan + class I wip ``` This is a correctness bridge: it advances synchronization and memory @@ -329,22 +330,30 @@ flowchart TB R4 --> R5["Real submissions scheduled by GSP"] R5 --> R6["Completion and faults relayed to guest"] end - G -.->|"translation [planned]"| R4 + G -.->|"translation [wip/default-off]"| R4 classDef done fill:#d5f5d5,stroke:#1e7a1e + classDef wip fill:#fff3cd,stroke:#9a7b1a classDef plan fill:#f8d7da,stroke:#9a1a1a class A,B,C,D,E done class F,G wip - class R1,R2,R3,R4,R5,R6 plan + class R1,R2,R3 done + class R4,R5,R6 wip ``` +Backend boot, the real RM client, channel allocation and real CE copies are +live; guest-forwarding and relay are default-off; GR execution and real guest +page tables are the open `[planned]` parts (see +[`11-physical-backend-guest-wiring.md`](11-physical-backend-guest-wiring.md)). + ## 5. Scheduling and multi-tenancy There is no hardware partitioning (no SR-IOV) on this GPU generation, so tenancy is a **logical VF model**: each VM holds one mdev instance, and the module gives each instance its own GSP-RM session, channels, page tables and scheduling policy. “Per-VF GSP emulation” therefore means per-mdev emulation -context plus a per-mdev real GSP client in the backend. +context plus a per-mdev real GSP client in the backend. Today the backend is +a single per-GPU session (live); per-mdev clients are planned. ```mermaid flowchart TB @@ -358,7 +367,7 @@ flowchart TB Q2["Emulation context 2"] Q3["Emulation context N"] POL["Fairness policy [planned]<br/>time slices, quotas, priority, burst"] - C1["Real GSP client 1 [planned]"] + C1["Real GSP client 1<br/>single per-GPU session [live]"] C2["Real GSP client 2 [planned]"] C3["Real GSP client N [planned]"] end @@ -381,7 +390,8 @@ flowchart TB classDef wip fill:#fff3cd,stroke:#9a7b1a classDef plan fill:#f8d7da,stroke:#9a1a1a class Q1,Q2,Q3 done - class C1,C2,C3,POL,SCHED plan + class C1 done + class C2,C3,POL,SCHED plan ``` **How multi-tenant performance works (and is intended to):** @@ -636,10 +646,10 @@ against a stock guest driver with evidence in the repository. | Guest memory access + VA-to-PA discovery | partial | yes | protocol-derived discovery, no external pins | | Push decode + semaphore completion | partial | yes | complete GR/compute encodings | | Software execution bridge (memsets, copies, releases) | partial | yes | remains bridge only | -| Page-table population for server-owned ranges | no | no | design + validator, then implement | -| Execution backend (own GPU + real GSP) | no | no | device ownership, real GSP bring-up, RM client | -| Real work forwarding (GR and CE) | no | no | after backend bring-up | -| Fault semantics (buffers, replay, cancel) | no | no | after forwarding | +| Page-table population for server-owned ranges | partial (module-built scratch page tables, default off) | yes (default off) | real guest page tables | +| Execution backend (own GPU + real GSP) | yes (single per-GPU session) | yes | per-mdev clients | +| Real work forwarding (GR and CE) | partial (CE default-off) | yes (default off) | GR context validity/execution | +| Fault semantics (buffers, replay, cancel) | partial (forwarded-engine observation/relay default-off) | yes (default off) | GR fault semantics and triage | | Multi-tenant fairness policy | no | no | after multi-tenant forwarding | | Version matrix (2+ driver families) | partial | partial | per-version profiles + A/B | | Windows guest | no | no | after Linux execution path | |
