qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [PATCH v4 0/5] Support virtio-gpu DRM native context


From: Alex Bennée
Subject: Re: [PATCH v4 0/5] Support virtio-gpu DRM native context
Date: Fri, 10 Jan 2025 13:38:22 +0000
User-agent: mu4e 1.12.8; emacs 29.4

Dmitry Osipenko <dmitry.osipenko@collabora.com> writes:

> This patchset adds DRM native context support to VirtIO-GPU on Qemu.
>
> Contarary to Virgl and Venus contexts which mediate high level GFX APIs,
> DRM native context [1] mediates lower level kernel driver UAPI, which
> reflects in a less CPU overhead and less/simpler code needed to support it.
> DRM context consists of a host and guest parts that have to be implemented
> for each GPU driver. On a guest side, DRM context presents a virtual GPU as
> a real/native host GPU device for GL/VK applications.
>
> [1] https://www.youtube.com/watch?v=9sFP_yddLLQ
>
> Today there are four known DRM native context drivers existing in a wild:
>
>   - Freedreno (Qualcomm SoC GPUs), completely upstreamed
>   - AMDGPU, mostly merged into upstreams
>   - Intel (i915), merge requests are opened
>   - Asahi (Apple SoC GPUs), WIP status
>
>
> # How to try out DRM context:
>
> 1. DRM context uses host blobs and requires latest developer version 
> of Linux kernel [2] that has necessary KVM fixes.
>
> [2] https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git/
>
> 2. Use latest libvirglrenderer from upstream git/main for Freedreno
> and AMDGPU native contexts. For Intel use patches [3].
>
> [3] https://gitlab.freedesktop.org/virgl/virglrenderer/-/merge_requests/1384
>
> 3. On guest, use latest Mesa version for Freedreno. For AMDGPU use
> Mesa patches [4], for Intel [5].
>
> [4] https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/21658
> [5] https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/29870
>
> 4. On guest, use latest Linux kernel v6.6+. Apply patch [6] if you're
>    running Xorg in guest.

Have you seen this failure before:

  ➜  ./qemu-system-x86_64 \
                    -machine type=q35,accel=kvm,kernel-irqchip=split \
                    -cpu host \
                    -smp 4 \
                    -device virtio-net-pci,netdev=unet \
                    -netdev user,id=unet,hostfwd=tcp::2222-:22 \
                    -drive driver=qcow2,file=trixie-x86_64.qcow2 \
                    -serial mon:stdio \
                    -m 24G \
                    -object memory-backend-memfd,id=mem,size=24G,share=on \
                    -device 
virtio-vga-gl,hostmem=4G,blob=on,drm_native_context=on \
                    -display gtk,gl=on,show-cursor=on \
                    -device virtio-tablet-pci -device virtio-keyboard-pci \
                    -d guest_errors,unimp,trace:virtio_gpu_cmd_get_display_info
  vmport: unknown command 56
  virtio_gpu_cmd_get_display_info 
  context 4 failed to dispatch CREATE_VIDEO_BUFFER: 22
  vrend_decode_ctx_submit_cmd: context error reported 4 "gst-plugin-scan" 
Illegal command buffer 327735
  context 4 failed to dispatch CREATE_VIDEO_BUFFER: 22
  vrend_decode_ctx_submit_cmd: context error reported 4 "gst-plugin-scan" 
Illegal command buffer 327735
  context 4 failed to dispatch CREATE_VIDEO_BUFFER: 22
  vrend_decode_ctx_submit_cmd: context error reported 4 "gst-plugin-scan" 
Illegal command buffer 327735
  error: kvm run failed Bad address
  RAX=00007fb1e8fbefa0 RBX=00005649f1f4fb34 RCX=00000000fffffffc 
RDX=0000000000000004
  RSI=0000000000000000 RDI=0000000000100000 RBP=00005649f2063710 
RSP=00007ffe221807d0
  R8 =0000000000000003 R9 =00007ffe22180808 R10=0000000000000302 
R11=0000000000000000
  R12=0000000000000001 R13=00007ffe22180800 R14=0000000000000002 
R15=0000000000000001
  RIP=00007fb20bfc3f7f RFL=00010202 [-------] CPL=3 II=0 A20=1 SMM=0 HLT=0
  ES =0000 0000000000000000 ffffffff 00c00000
  CS =0033 0000000000000000 ffffffff 00a0fb00 DPL=3 CS64 [-RA]
  SS =002b 0000000000000000 ffffffff 00c0f300 DPL=3 DS   [-WA]
  DS =0000 0000000000000000 ffffffff 00c00000
  FS =0000 00007fb203aace80 ffffffff 00c00000
  GS =0000 0000000000000000 ffffffff 00c00000
  LDT=0000 0000000000000000 ffffffff 00c00000
  TR =0040 fffffe67eec85000 00004087 00008b00 DPL=0 TSS64-busy
  GDT=     fffffe67eec83000 0000007f
  IDT=     fffffe0000000000 00000fff
  CR0=80050033 CR2=00005646b7f7d018 CR3=000000012852a000 CR4=00750ef0
  DR0=0000000000000000 DR1=0000000000000000 DR2=0000000000000000 
DR3=0000000000000000 
  DR6=00000000ffff0ff0 DR7=0000000000000400
  EFER=0000000000000d01
  Code=f3 0f 11 40 58 f3 0f 10 43 08 f3 0f 11 40 5c f3 0f 10 43 0c <f3> 0f 11 
78 64 f3 0f 11 50 68 f3 44 0f 11 40 6c f3 0f 11 48 70 f3 0f 11 60 74 f3 0f 11 40

-- 
Alex Bennée
Virtualisation Tech Lead @ Linaro



reply via email to

[Prev in Thread] Current Thread [Next in Thread]