Skip to content

Fix ARM64 virtio-gpu multi-window command buffer corruption#382

Merged
ryanbreen merged 1 commit into
mainfrom
fix/cpu0-bwm-multiwindow-marshalling
May 30, 2026
Merged

Fix ARM64 virtio-gpu multi-window command buffer corruption#382
ryanbreen merged 1 commit into
mainfrom
fix/cpu0-bwm-multiwindow-marshalling

Conversation

@ryanbreen
Copy link
Copy Markdown
Owner

@ryanbreen ryanbreen commented May 30, 2026

Summary

  • Mirrors Linux's per-command virtio-gpu vbuffer model for active present-path commands so command, payload, and response storage stay alive through used-ring completion.
  • Constructs TRANSFER_TO_HOST_3D directly in owned DMA storage instead of copying from a stack command object; Turn 47 four-point capture showed the first failing 72-byte transfer command source was already corrupted before copy (00000500 000003c0...).
  • Keeps the prior payload-shape fixes from the red candidate: correct DRAW_VBO max index and window texture upload pitch/stride.

Validation

  • Clean ARM64 build, zero warning/error lines: cargo build --release --target aarch64-breenix.json -Z build-std=core,alloc -Z build-std-features=compiler-builtins-mem -p kernel --bin kernel-aarch64.
  • Parallels multi-window gate with temporary bterm/btop preload + Bounce: Terminal and Bounce discovered, no VIRTGPU_FAIL, no lockup/panic scan hits, FPS roughly 100-240, BWM not top CPU.
  • Default Parallels boot with no bterm/btop preload: Bounce discovered, no VIRTGPU_FAIL, no lockup/panic scan hits, FPS roughly 180-220.

Artifacts

  • /Users/wrb/Downloads/Ralph/breenix-interrupt-io-roadmap-1780056222/turn47-artifacts/four-point-probe-serial.log
  • /Users/wrb/Downloads/Ralph/breenix-interrupt-io-roadmap-1780056222/turn47-artifacts/direct-transfer-candidate-serial.log
  • /Users/wrb/Downloads/Ralph/breenix-interrupt-io-roadmap-1780056222/turn47-artifacts/default-candidate-serial.log
  • /Users/wrb/Downloads/Ralph/breenix-interrupt-io-roadmap-1780056222/turn47-artifacts/direct-transfer-final.diff

Mirror Linux's per-command virtio-gpu vbuffer lifetime for active present-path commands and construct TRANSFER_TO_HOST_3D directly in owned DMA storage so stack source corruption cannot turn display dimensions or vertex data into control headers.

Validation: cargo build --release --target aarch64-breenix.json -Z build-std=core,alloc -Z build-std-features=compiler-builtins-mem -p kernel --bin kernel-aarch64; Parallels default boot clean; Parallels bterm/btop+Bounce multi-window gate clean with no VIRTGPU_FAIL.

Co-authored-by: Claude Code <noreply@anthropic.com>
@ryanbreen ryanbreen merged commit 50c9aa1 into main May 30, 2026
@ryanbreen ryanbreen deleted the fix/cpu0-bwm-multiwindow-marshalling branch May 30, 2026 18:55
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant