diff options
Diffstat (limited to 'docs/03-architecture/03-gsp-and-gsp-rm.md')
| -rw-r--r-- | docs/03-architecture/03-gsp-and-gsp-rm.md | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/docs/03-architecture/03-gsp-and-gsp-rm.md b/docs/03-architecture/03-gsp-and-gsp-rm.md index 8809bb7..fe51838 100644 --- a/docs/03-architecture/03-gsp-and-gsp-rm.md +++ b/docs/03-architecture/03-gsp-and-gsp-rm.md @@ -54,6 +54,29 @@ Our emulation implements stage completion rather than the stages themselves — which is legitimate because the *only observable* to the driver is the state machine it polls. +```mermaid +sequenceDiagram + autonumber + participant GD as Guest driver + participant R0 as BAR0 shadow + participant GE as GSP emulation thread + participant MQ as Message queues in guest sysmem + participant GRM as GSP-RM emulation + + GD->>R0: WPR descriptors and boot kicks + GE-->>R0: stage status transitions + GD->>R0: poll for boot complete + R0-->>GD: firmware running + GD->>MQ: set up queues and ring the doorbell + GE->>MQ: read and dispatch elements + GRM-->>MQ: write replies + GE-->>GD: MSI-X completion +``` + +The cross-component detail (doorbells, queues, interrupts, latency classes) is +in [`09-full-system-picture.md`](09-full-system-picture.md) and +[`10-interaction-and-scheduling.md`](10-interaction-and-scheduling.md). + ## 3. The transport: message queues and RPC GSP-RM's transport is a shared-memory message queue pair: |
