diff options
Diffstat (limited to 'STATE-CURRENT.md')
| -rw-r--r-- | STATE-CURRENT.md | 50 |
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 |
