summaryrefslogtreecommitdiffstats
path: root/STATE-CURRENT.md
diff options
context:
space:
mode:
authorArthur Hanson Rasmusson <arthur@vgpu.io>2026-11-10 05:25:15 -0500
committerArthur Hanson Rasmusson <arthur@vgpu.io>2026-11-10 05:25:15 -0500
commit90ab9baa309ae3c54d371546872c918c4c801920 (patch)
tree5382d56dc1df7407804a755d0028b99bb266d209 /STATE-CURRENT.md
parentcb8e822bbadd036cc6e94e945ff0f835402724fd (diff)
downloadopen-iov-90ab9baa309ae3c54d371546872c918c4c801920.tar.gz
open-iov-90ab9baa309ae3c54d371546872c918c4c801920.zip
wiki: 2026-11-10 status refresh - guest GL draws execute on the physical GPU
Refresh STATE-CURRENT, the Main Page and the status/frontier pages: the GSP event-IRQ fix completes swaps; the 2D path is green end-to-end; the guest's real GL draws now forward and execute on the physical GPU (work_gr backend_ok=9); the draw writes 0 pages because its constant-buffer (MVP) page is unresolved and forced to the seed page; the MME front-end defer, GR stale-wedge and the X DDX get-word/notifier completion remain. Published to open-iov.org.
Diffstat (limited to 'STATE-CURRENT.md')
-rw-r--r--STATE-CURRENT.md50
1 files changed, 50 insertions, 0 deletions
diff --git a/STATE-CURRENT.md b/STATE-CURRENT.md
index b0b382c..608c238 100644
--- a/STATE-CURRENT.md
+++ b/STATE-CURRENT.md
@@ -1,5 +1,55 @@
# Open-IOV Current State
+> **Snapshot: 2026-11-10 ~05:30 (SESSION 156 continued; HEAD `cb8e822b`,
+> tree clean, `vgpu/master` in sync; supersedes the 19:15 entry below).**
+> The execution chain came alive overnight. The guest's **real GL draws now
+> forward and execute on the physical GPU** (`work_gr backend_ok=9` on r1683,
+> `backend_ok=5` on r1685), the 2D path is green end-to-end (accelerated X
+> fills read back correctly via `xwd`), and the earlier glxgears poll hang is
+> gone: the GSP event-IRQ fix (`a478f0b4`) now sets the RISC-V SWGEN0
+> IRQSTAT/IRQMASK/IRQDEST and latches the CPU-tree leaf so the guest services
+> the event. The working recipe is a 12 GB file-backed guest
+> (`-object memory-backend-file ... /dev/shm/vgpu-guest-ram`), the
+> `gsp-phys-guest-ram` debugfs translation, the RM-call ladder stages 5/3/4,
+> the full r1624 module-argument set, and `sema_vas_cand_ms=1` (which made X
+> green on attempt 1 in r1685). The beef GR channel `0xbeef0100` now captures
+> real GL draw sections (`len=4808`, `win=1201 words`, `prog=0x4390900`).
+>
+> The new frontier is the **constant buffer**: the draw executes but the
+> engine writes 0 pages, and `bounce copy-out` reports 0 changed. The GL
+> draw's constant-buffer source is forced to the seed page because
+> `sema-gl: cb-copy src=0x0cd70000 ... first8=00000000 ... src=synthetic-id`
+> reads all zeros; a guest-RAM scan found no MVP matrix, and the
+> `0x3f800000` hits in vidmem are shader microcode immediates, not matrices.
+> With a zero MVP every vertex collapses to the origin, so there are no
+> fragments regardless of viewport/render-target. The next step is to decode
+> the CB-bind method on the beef channel, resolve that VA through the channel
+> VAS, and copy the real page into the seed page. Secondary walls: the MME
+> front-end busy/deferred class, the GR stale-wedge recovery, the X DDX
+> push-buffer get-word/notifier recycle (X can still die after a few forward
+> frames into the RM-degraded state), and the DDX's 4 GB sysmem allocation
+> that forces the 12 GB guest.
+>
+> Honest state: still no rendered pixel through the emulated vGPU and no
+> video. The execution chain (submit -> forward -> physical GR -> stores) is
+> now live for the guest's own GL work; the first pixel is gated on the MVP
+> constant-buffer content and the present/copy-out. Milestone position:
+> between M-GL1 and M-GL2. Estimate (subjective): a first non-black frame
+> hours-to-days if the constant-buffer decode behaves like its predecessors;
+> the two-VM GPU-accelerated video after that.
+>
+> CUDA front unchanged (backgrounded while graphics holds the device; its
+> 10-30 status stands): `41343c63` green (`victory_mail` `VADD bad=0` +
+> `STATUS OK`; `vecadd_loop` 100 launches PASS); the fresh-boot battery's
+> red class is D2H-stage with release-discipline fixes staged; the SESSION
+> 143 Vulkan fence regression is not re-measured.
+>
+> Live at check (read-only): r1685 VM up (QEMU 72960, mdev
+> `0dcda61f-a8ef-4111-8993-35942d2d5392`), X green, glxgears 300x300
+> rendering black, `work_gr backend_ok=5`; `vgsp` loaded (HEAD `cb8e822b`
+> plus the runtime parameters above), `guest_ram active=1`, ladder stage 4;
+> pstore empty; no reboot during the check.
+>
> **Snapshot: 2026-11-09 ~19:15 (SESSION 156 continued; HEAD `21e0d611`,
> tree clean; supersedes the 19:05 entry below).**
> The forced-GLX path moved the renderer wall: with