On 4/11/25 04:42, 刘聪 wrote:
> 
> 
> 
>> -----Original Messages-----
>> From: "Dmitry Osipenko" <dmitry.osipe...@collabora.com>
>> Send time:Friday, 04/11/2025 05:59:11
>> To: "Cong Liu" <liucong2...@phytium.com.cn>
>> Cc: jiqian.c...@amd.com, akihiko.od...@daynix.com, alex.ben...@linaro.org, 
>> alexander.deuc...@amd.com, christian.koe...@amd.com, 
>> gert.wol...@collabora.com, gurchetansi...@chromium.org, h...@alyssa.is, 
>> honglei1.hu...@amd.com, julia.zh...@amd.com, kra...@redhat.com, 
>> marcandre.lur...@redhat.com, m...@redhat.com, pbonz...@redhat.com, 
>> phi...@linaro.org, pierre-eric.pelloux-pra...@amd.com, 
>> qemu-devel@nongnu.org, ray.hu...@amd.com, robdcl...@gmail.com, 
>> roger....@citrix.com, s...@redhat.com, stefano.stabell...@amd.com, 
>> xenia.ragiada...@amd.com, zzyi...@chromium.org
>> Subject: Re: [PATCH v11 04/10] virtio-gpu: Support asynchronous fencing
>>
>> 10.04.2025 12:54, Cong Liu пишет:
>>> I discovered that on an ARM64 environment, the 'virtio-gpu: Support 
>>> asynchronous fencing' patch causes the virtual machine GUI to fail to 
>>> display. Rolling back this patch and using virgl allows the virtual machine 
>>> to start normally. When the VM screen is black, I can see some errors in 
>>> QEMU. I used QEMU's -serial stdio to enter the virtual machine's command 
>>> line console but didn't see any errors inside the VM - the graphical 
>>> interface seems to be stuck. I would greatly appreciate any suggestions 
>>> regarding effective troubleshooting methods or specific areas I should 
>>> investigate to resolve this issue.
>>>
>>> Here's my software and hardware environment:
>>> - host and guest are ubuntu 24.04
>>> - QEMU: https://gitlab.freedesktop.org/digetx/qemu.git native-context-v11 
>>> branch
>>> - virglrender: latest main branch 08eb12d00711370002e8f8fa6d620df9b79f9e27
>>> - Mesa: Mesa 25.0~git2504031308.ff386e~oibaf~n (git-ff386eb 2025-04-03 
>>> noble-oibaf-ppa)
>>> - Kernel: Linux d3000 6.14.1-061401-generic #202504071048
>>> - GPU: Radeon RX 6600/6600 XT/6600M
>>> - CPU: phytium D3000 aarch64
>>>
>>> Here's the command I'm using to run the virtual machine, which displays a 
>>> black frame with "Display output is not active" and fails to start the 
>>> graphical interface normally:
>>>
>>>     phytium@d3000:~/working/qemu$ /usr/local/bin/qemu-system-aarch64 
>>> --machine virt,accel=kvm -cpu host -smp 4 -m 4G -drive 
>>> file=/home/phytium/working/ubuntu24.04-aarch64-native-context,format=raw,if=virtio
>>>  -bios /usr/share/AAVMF/AAVMF_CODE.ms.fd -netdev user,id=net0 -device 
>>> virtio-net-pci,netdev=net0 -device virtio-gpu-gl -display 
>>> gtk,gl=on,show-cursor=on -device usb-ehci,id=usb -device 
>>> usb-mouse,bus=usb.0 -device usb-kbd,bus=usb.0
>>>
>>>     (qemu:46029): Gdk-WARNING **: 16:43:53.715: eglMakeCurrent failed
>>>     (qemu:46029): Gdk-WARNING **: 16:43:53.715: eglMakeCurrent failed
>>>     (qemu:46029): Gdk-WARNING **: 16:43:53.715: eglMakeCurrent failed
>>>     (qemu:46029): Gdk-WARNING **: 16:43:53.715: eglMakeCurrent failed
>>>     (qemu:46029): Gdk-WARNING **: 16:43:53.716: eglMakeCurrent failed
>>>
>>> When using SDL, the error messages are slightly different:
>>>
>>>     phytium@d3000:~/working/qemu$ /usr/local/bin/qemu-system-aarch64 
>>> --machine virt,accel=kvm -cpu host -smp 4 -m 4G -drive 
>>> file=/home/phytium/working/ubuntu24.04-aarch64-native-context,format=raw,if=virtio
>>>  -bios /usr/share/AAVMF/AAVMF_CODE.ms.fd -netdev user,id=net0 -device 
>>> virtio-net-pci,netdev=net0 -device virtio-gpu-gl -display 
>>> sdl,gl=on,show-cursor=on -device usb-ehci,id=usb -device 
>>> usb-mouse,bus=usb.0 -device usb-kbd,bus=usb.0
>>>
>>>     vrend_renderer_fill_caps: Entering with stale GL error: 1286
>>>
>>
>> Hi,
>>
>> 1. Please make sure that you're not only building QEMU against your
>> virglrenderer version, but also setting LD_LIBRARY_PATH properly at
>> runtime. Best to remove system version of virglrenderer if unsure,
> 
> I built and installed virglrenderer with the --prefix=/usr option, so
>  it replaces the system version as expected.
> 
>>
>> 2. Can you reproduce this problem using tcg instead of kvm?
>>
> 
>  yes, change qemu command '--machine virt,accel=kvm -cpu host' to
> '--machine virt -cpu max' can reproduce this problem. 
>> -- 
>> Best regards,
>> Dmitry
> 
> diff --git a/src/vrend_renderer.c b/src/vrend_renderer.c
> index f6df9dcb..f6e06842 100644
> --- a/src/vrend_renderer.c
> +++ b/src/vrend_renderer.c
> @@ -12808,7 +12808,7 @@ void vrend_renderer_fill_caps(uint32_t set, uint32_t 
> version,
>                                union virgl_caps *caps)
>  {
>     int gl_ver, gles_ver;
> -   GLenum err;
> +   GLenum err = GL_NO_ERROR;
>     bool fill_capset2 = false;
>  
>     if (!caps)
> 
> phytium@d3000:~/working/qemu$ git log --oneline  -n 10
> e0286f56c8 (HEAD -> native-context-v11, origin/native-context-v11) Revert 
> "amd_iommu: Add support for pass though mode"
> d6e9eb0f0d docs/system: virtio-gpu: Document host/guest requirements
> 55db821ea5 docs/system: virtio-gpu: Update Venus link
> 003940db9a docs/system: virtio-gpu: Add link to Mesa VirGL doc
> 7674e82755 ui/gtk: Don't disable scanout when display is refreshed
> 712fd024e3 ui/sdl2: Don't disable scanout when display is refreshed
> 9003da356f virtio-gpu: Support DRM native context
> e2ff4f4a48 virtio-gpu: Support asynchronous fencing
> 25458c7625 virtio-gpu: Handle virgl fence creation errors
> 
> I tried initializing GLenum err = GL_NO_ERROR in vrend_renderer_fill_caps, 
> but it doesn’t seem to resolve the “Entering with stale GL error: 1286” 
> message. However, this error might not be directly related to the VM black 
> screen issue. I noticed that even when the VM was working 
> correctly—specifically when I reset to commit 25458c7625—the same GL error 
> still appeared.

Thanks for the report. I confirm that something is wrong with virgl when
async fencing is used. Don't have this GL 1286 error, but getting a
lockup on ARM VM and with one of my new x64 VM setups. Will investigate
further and report back here.

-- 
Best regards,
Dmitry

Reply via email to