| Commit message (Collapse) | Author | Age |
| |
|
|
| |
via guest page tables - kills LOWFILL-REFUSED va=0x120458c00 pa=0x120458c00 that froze DDX screen repaints (fresh boot: fills done=3686400 rc=0, LOWFILL-REFUSED=0); xwd path proven byte-exact vs vidmem 0x200000 fill artifact; window still black (client re-presents static frame; no client content in vidmem); r1025 beef0100 pump regression (GPFIFO va=0xa0d8f54 all-zero, submissions=0 vs 208) - SESSION 153 r1024-r1025
|
| |
|
|
| |
completion slots for live beef channels; attempts now submit heavily (submissions 29->208, GP_PUT advancing put=14, sema-consume idx=94 put=95, ops_runs=2, copyent total=131068); client shim frames have content (mean_sum=60.8 nz_frac=0.2843); remaining wall = X presentation (DDX black fill va=0x120400000 vs client copy dst=0x4700000) - SESSION 153 r1024
|
| |
|
|
| |
beef-family channel-notifier base in svc_notify_complete; first real client submissions (submissions=29, sema-pushall h=0xbeef0100 va=0x421f758 len=1720 allow=1 trusted=1); attempt still recycles ~12s - SESSION 153 r1023
|
| |
|
|
| |
page fb 0x20fc00, not 0x18fe00); low-aperture 0x4000000-class entry window; GR-ring USERD probe accepts g>p/put-cap>1024; own-VAS-first counter derive - USERD wall broken (chan h=0xbeef0100 userd=0x20fc00 as=2 ring rc=0 pa=0x233603000); new wall: client never stores GP_PUT (put=0, FB 0x20fc00+0x8c frozen; last RM call ZCULL_BIND 0x20801208) - SESSION 153 r1016
|
| |
|
|
| |
navigation entries; published to open-iov.org (68 pages, 0 problems)
|
| |
|
|
| |
Interfaces and Stability pages; GSP explainer expanded (bare-metal behaviour + the two emulation modes); graphics pages (Graphics Execution, OpenGL, Vulkan, DirectX) with two new diagrams; status refresh across 15 pages; canonical docs updated (README status table, purpose-and-scope, performance contract); published to open-iov.org (67 pages, 0 problems)
|
| |
|
|
| |
ring_pa==0 - fixes fresh-boot Xorg 10s DMA-init wall (2/2 boots green, DDX channel sub=3402, TWOD fills execute) - SESSION 153 r1014-r1015
|
| |
|
|
| |
(41343c63), X/GL wall broken (fffae7b1) + RC-watchdog/VAS fixes, R18 CUDA-animation + two-VM GZDoom videos delivered, direct-GL-client channel gate root-caused (memfd slot bit0) and fixed by the kernel keeper (a64169db); walls = fresh-boot Xorg DMA-init, client PUT visibility, pixels (all captures black)
|
| |
|
|
| |
slot word (sema_shared_hold_pa); validated live (held pa=0x279b01000 word -> 0x2); with hold: client allocs c46f (hObject=0xbeef0100/0101/0102), readback err 502->0, window md5 changes (mean 2.69,2.68,4.02, nz_frac=0.0172) - SESSION 153 r1012-r1013
|
| |
|
|
| |
doorbell dispatch - built/live r1011; measurement falsified BAR0-USERD premise for client GP_PUT (shadows static, only pos=0x88704 traps); X channel sub=60 via kick-family RAM watch - SESSION 153 r1011
|
| |
|
|
| |
knob - direct client channel alloc gate broken open (c46f hObject=0xbeef0101, err@ReadPixels=0x0 px=255,0,255,0) - SESSION 153 r999-r1002
|
| |
|
|
| |
fold), FERMI_TWOD executor (screen fills rc=0), RT-as-screen surface alias + win-drop auto, client replay retires (faulted=0, GR forward failed=0) - SESSION 153 r984-r997
|
| |
|
|
| |
owns no channel, no command buffer; kicks on 0xbfef0002 are Xorg's (SESSION 153 r983)
|
| |
|
|
| |
targeting + per-handle notify cache - exec lane 48/48 continuous (SESSION 153 r977-r982)
|
| |
|
|
| |
FB->SYS notify retry - frozen alternation solved (SESSION 153 r974-r976)
|
| |
|
|
| |
notify lane executes (n=512), client c46f/c597 allocs appear (SESSION 153 r972/r973)
|
| |
|
|
| |
readback verified) + notify2d witness + kick probe (SESSION 153 r971)
|
| |
|
|
| |
method-emission gate); kick notify lane next (SESSION 153 r965)
|
| |
|
|
| |
attribution: r958 windows were Xorg init; harness DISPLAY regression fixed; init window retires 2 consecutive cycles (SESSION 153 r962)
|
| |
|
|
| |
sema_gl_win_patch knob (SESSION 153 r959-r961)
|
| |
|
|
| |
WINPROBE; strip experiment: binds-only windows retire, full draws die in FECS switch-in (SESSION 153 r955-r958)
|
| |
|
|
| |
attach-on-BEGIN; init replay retires ch_rel=0xc0ffee02; draw windows remain unreleased (SESSION 153 r951-r954)
|
| |
|
|
| |
launches), inline bytes 256, per-VA typed slots (SESSION 153 r947-r950)
|
| |
|
|
| |
captured and replayed on 3D lane (engine reaches program header validation); guest-page blob delivery; two mdevs coexist (SESSION 153 r944-r946)
|
| |
|
|
| |
2D copies execute; client draw pushes with real C597 geometry now flow (SESSION 153 r943)
|
| |
|
|
| |
completion authored; xwd -root unblocked (SESSION 153 r942)
|
| |
|
|
| |
kick-family pubadv arm - true ring confirmed; no draw submissions exist (SESSION 153 r941)
|
| |
|
|
| |
(sema_serve_denied); no new GL content after init measured (SESSION 153 r939)
|
| |
|
|
| |
FPS; r938) (SESSION 153)
|
| |
|
|
| |
discovery of publish pages) - glxgears 120-148 FPS with no external pokes (SESSION 153 r936)
|
| |
|
|
| |
2D-notifier release decode, zero_nop bound (SESSION 153 r933/r934)
|
| |
|
|
| |
+ release tail; engine retires real 3D methods, no QMD) (SESSION 153 r932)
|
| |
|
|
| |
section-open + draw-synth path; push dumps (SESSION 153 r923-r926)
|
| |
|
|
| |
scan, PA ceiling to scan_top, release-group matching (SESSION 153: M-GL1.2 PASS r922)
|
| |
|
|
| |
unreadable-push demand regex (SESSION 153 WIP: liveness latch pending)
|
| |
|
|
| |
va1==va0; scan top param) + ring VA demand regex (SESSION 153)
|
| |
|
|
| |
graphics-execution plan (SESSION 153)
|
| |
|
|
| |
guests (SDL swap-hook capture; XSendEvent input - SDL ignores XTEST here; region capture, focus query, window resize)
|
| |
|
|
| |
video (Xvfb XGetImage capture, SDL present shim, window resize, XTEST input, QGA range fetch)
|
| |
|
|
| |
ONE 4 KB code page (SESSION 150)
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
SASS path (SESSION 149 r891)
- svc_gl_flush applies the section read upload list via svc_grce_inline_write;
walker pairs subch0 0x180->0x1b0 runs on eng==0 channels and applies on
sight (19/19 applied; once-only (push,hash,dst,bytes) dedupe).
- sema_gl_prog_hex param + source priority trusted VA read > prog-hex >
bounded LID fallback (12 B).
- Evidence (r891): code64 = real sm_75 SASS (nvcc-assembled EXIT;NOP cubin);
engine writes qmd_rel=0x600df00d ~500 ms after submit (executed + retired);
0 Illegal-Instruction lines (r890: 7). Completion still declared failed
(rc=-110; ch_rel witness unwritten) -> SYNTH-FAULT + SW release; bounded.
Feature gated by sema_gl_xlate (default off).
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
scheduling fields (SESSION 149 r889)
- svc_gl_field 0x1b0: skip LAUNCH_DMA cfg word; bound the inline blob by the
run's own word count (blob 64 -> 12 B, no over-read of following methods).
- svc_gl_flush QMD fields: CTA dims 1/1/1 (w12-14), w18=0x00010023,
w19=0x00010001, w20=0x00001a00 (REGISTER_COUNT from the stream's own
REGISTER_COUNT(1) method), barrier bit w29, SASS_VERSION 7.5 (w31), driver
cache-control block (w5).
- Evidence (r889): SKEDCHECK06/16 zero occurrences; 'GR LAUNCH submitted
shadow=1 words=239'; SM decodes; FAULT-CAP code_src=win0 ok=1; bounded
action=proceed + SW release (no stall). Next wall: Illegal Instruction
Encoding (program content not yet materialized). Gated by sema_gl_xlate.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
149 r888)
- M1.1a: preserve the bracketing release across the section-open reset; allow
hash-verified replay capture (exactly-once guard). First trusted pass now
captures the GL setup section (push=0x120010004, prog=0x121201b00,
rel=0x120001000, replay=0).
- M1.1b: per-channel ring scan 16->24 slices + put-triggered keep-alive.
- M2-S1: booter skips w48 Tier-1 when shadow_win0 is set; flush attaches the
observed LID payload as an inline record.
- Evidence (r888): 'qmd_word 48 page copied to window-0 shadow'; 'GR LAUNCH
submitted pages=5 shadow=1 qmdwin=0x108000'; FAULT-CAP code_src=win0,
code64 non-zero, FAULT_PDE count=0 (engine fetched the shadowed code).
- Remaining wall: SKEDCHECK06_REGISTER_COUNT + SKEDCHECK16_CTA_THREAD_DIM_ZERO
(synthesized QMD scheduling fields) -> bounded fail + SW release. Feature
gated by sema_gl_xlate (default off).
|
| |
|
|
| |
work on this mdev; offset-0 64 MB window fallback kept, pread beyond window) - SESSION 149
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
sysmem PDB probe (SESSION 149 r882)
- svc_pb GR namespace + svc_pb_gr_done: pair eng==0 (GL/X) channel ring
windows from the content-verified ring pair; entries consumed only by the
untrusted read source (src=3, last resort). CE/CUDA paths untouched.
- Bounded sysmem phase added to the X-VAS PDB discover probe (vidmem sweep
unchanged); accepted but inert on r882 (map cap; no candidate root).
- Evidence (r882): GL channel h=0x1000013 rc=-2 572 -> 0; ring window paired
va=0x120090000 -> pa=0x104ad7000; drain pb=2/48 (was 0/48); decoded bytes
byte-identical to the vidmem shadow; no CE/CUDA regressions; host clean.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
148 r873)
The unguarded 3 ms mirror loop kept writing the count law into its latched
page after the guest had reused it (r872 evidence: guest 'Bad page map ...
pmd:102656067' pointing at exactly the mirrored page's PA as another
process's PTE table). The loop now latches the progress word's base bits and
stops permanently when they change or are zeroed, and re-checks the counter
object's signature every 64th tick. New sema_xw_comp parameter + vgsp-xwcomp
kthread can clear a submit member's armed 0x8000 status (value 0 pattern
only); r874 proved an unverified clear into a false member kills Xorg within
seconds, so it stays uninjected until the member address is watched live.
|
| |
|
|
|
|
|
|
|
| |
r867 with member = counter + learned-delta: every check is a permanent
+0x70 mismatch (the mirror re-advances right after each counter change),
xorg.log shows '(2, ..., 0xa8c, 0xa1c)' timeouts and the GL client gets
nothing. Plain member = counter is the correct law; the driver's
re-probe cadence gives the mirror room to settle between the driver's
counter increment and its next probe.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
r866: the mirror tracked perfectly yet every wait still paid the driver's
~3 s re-check sleep (one '(0)' success print every 20-80 s; the GL client
hung minutes on its X socket). Cause: the driver increments its counter
and then enters the wait; a member that only tracks the counter always
loses that entry-check race (mirror wakes <=3 ms after the change; the
driver probes within microseconds), so the check fails and the driver
sleeps out its retry interval. Writing member = counter + last-observed-
delta (learned from each counter change, 0 until the first) makes the
driver's own increment land exactly on the pre-written member value, so
the first probe after submission succeeds and frames complete at the
driver's pace.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
r864 ground truth while wedged: both the RC-watchdog channel (0x31415900)
and the X/GL channel (0x1000013) sit with their class2d notification
ARMED (u16 status 0xFFFF at notifier_pa + 0x3E = slot-3 struct status)
and nothing ever clears them (X notified=0 after 459 submissions), so
the guest krcWatchdog fires 'GPU is probably locked' every ~8.2 s and
the whole X/GL stack wedges (glxgears poll() never returns; late XOOM
death). Under the mirrored flow the watchdog ring reads go unreadable
(rc=-2), so the decode-time ack and the notify2d_va path both miss.
svc_notify2d_keepalive(): every pass, every GR channel with a registered
notifier PA, read slots 0..3; for each slot armed exactly 0xFFFF write
the zeroed 16-byte NvNotification and post the channel event - the same
effects as svc_notify_complete without any ring read. Also bump the
demo harness guest RAM to 8GB (launch_qemu_rootport.sh) to survive the
observed emulation-path allocation growth during accelerated runs.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
r861 evidence: the X server's present path spins in a 10s-timeout wait
((EE) NVIDIA(GPU-0): WAIT (2, 8, 0x8000, <stuck 0xd4..>, <driver counter
+0x70/frame>)) comparing (progress_word & 0x3ffff) << 2 against its own
submitted-byte counter; the progress word (lone u32 0x140235 in an
otherwise-zero guest page) never advances because the emulation does not
execute the 2D method streams -> glxgears 0.09 FPS. A gdb write of the
word to 0x140000 | (counter >> 2) made the wait complete in 3 ms
(WAIT (0, ... <equal>, <equal>) immediately after the timeout print) and
silenced all further timeouts. This adds a 3 ms kthread that mirrors the
driver's counter word into the progress word; both guest PAs are injected
per boot via the sema_xw_mirror parameter (0,0 stops). Demo-path tuning
aid; no product logic depends on it.
|