Bug 107309 - libGL error: MESA-LOADER: failed to retrieve device information on virgl
Summary: libGL error: MESA-LOADER: failed to retrieve device information on virgl
Status: RESOLVED FIXED
Alias: None
Product: DRI
Classification: Unclassified
Component: libdrm (show other bugs)
Version: XOrg git
Hardware: Other All
: medium normal
Assignee: Default DRI bug account
QA Contact:
URL:
Whiteboard:
Keywords:
Depends on:
Blocks:
 
Reported: 2018-07-20 13:28 UTC by Vasilis LIaskovitis
Modified: 2018-07-24 17:26 UTC (History)
1 user (show)

See Also:
i915 platform:
i915 features:


Attachments
xf86drm: Correctly parse pci device information for virtio gpu (8.32 KB, patch)
2018-07-20 13:28 UTC, Vasilis LIaskovitis
no flags Details | Splinter Review

Description Vasilis LIaskovitis 2018-07-20 13:28:52 UTC
Created attachment 140732 [details] [review]
xf86drm: Correctly parse pci device information for virtio gpu

Mesa 18.1.3-201.1
kernel 4.17.5-1-default
libdrm 2.4.92-1.2
 
glxinfo | grep -i renderer
OpenGL renderer string: virgl
 
LIBGL_DEBUG=verbose glxgears
libGL error: MESA-LOADER: failed to retrieve device information
libGL: using driver virtio_gpu for 4
libGL: OpenDriver: trying /usr/lib64/dri/tls/virtio_gpu_dri.so
libGL: OpenDriver: trying /usr/lib64/dri/virtio_gpu_dri.so
 
Adding some debug drmMsg() prints, I found that the MESA-LOADER error message happens because drmGetDevice2() returns -ENODEV. And that happens because drmParseSubsystemType() returns -EINVAL.
 
drmParseSubsystemType() expects /sys/dev/char/DRM_MAJOR\:0/device/subsystem to be one of pci, usb, platform, hostix. But virtio-gpu has bus subsystem virtio:
 
ls -al /sys/dev/char/226\:0/device/subsystem
lrwxrwxrwx 1 root root 0 Jul 19 17:39 /sys/dev/char/226:0/device/subsystem -> ../../../../bus/virtio
 
ls -al /sys/dev/char/226\:128/device/subsystem
lrwxrwxrwx 1 root root 0 Jul 19 17:39 /sys/dev/char/226:128/device/subsystem -> ../../../../bus/virtio

I am not sure if this is a cosmetic error, or if it matters. I am attaching a proposed patch.

Since the virtio-gpu device is actually a pci device, we can still parse the correct information from the corresponding pci device:
 
ls -al /sys/dev/char/226\:0
lrwxrwxrwx 1 root root 0 Jul 20 13:30 /sys/dev/char/226:0 -> ../../devices/pci0000:00/0000:00:02.0/virtio0/drm/card0

i.e. use /sys/dev/char/226\:128/../../../ instead of /sys/dev/char/226\:128/ for virtio devices.

to parse subsystem, and subsequently pci bus and pci device information.

(Let me know if bugzilla is still the place to report bugs, or if  https://gitlab.freedesktop.org/mesa/drm is now the preferred location)
Comment 1 Emil Velikov 2018-07-24 15:35:57 UTC
The message is harmless since Mesa falls back to use the DRM driver name.

That said, a slightly better (I'm obviously biased) solution has been on the list for ~month [1]. Just double-checked and pushed it to master.

[1] https://lists.freedesktop.org/archives/dri-devel/2018-June/181067.html
Comment 2 Vasilis LIaskovitis 2018-07-24 17:26:14 UTC
Cool, thanks!


Use of freedesktop.org services, including Bugzilla, is subject to our Code of Conduct. How we collect and use information is described in our Privacy Policy.