This will produce a more useful hint for those setting
up or testing virgl headless:

runqemu - ERROR - No render nodes found in /dev/dri: ['by-path', 'card0']. If 
/dev/dri/renderD* is absent due to lack of suitable GPU, 'modprobe vgem' will 
create one suitable for mesa llvmpipe software renderer.

as qemu itself isn't helpful:

alex@Zen2:/srv/storage/alex/yocto/build-64-alt$ qemu-system-x86_64 -display 
egl-headless
qemu-system-x86_64: egl: no drm render node available
qemu-system-x86_64: egl: render node init failed

Signed-off-by: Alexander Kanavin <[email protected]>
---
 meta/lib/oeqa/selftest/cases/runtime_test.py |  7 -------
 scripts/runqemu                              | 10 ++++++++++
 2 files changed, 10 insertions(+), 7 deletions(-)

diff --git a/meta/lib/oeqa/selftest/cases/runtime_test.py 
b/meta/lib/oeqa/selftest/cases/runtime_test.py
index 13e8760a16..e32c4aff85 100644
--- a/meta/lib/oeqa/selftest/cases/runtime_test.py
+++ b/meta/lib/oeqa/selftest/cases/runtime_test.py
@@ -260,13 +260,6 @@ class TestImage(OESelftestTestCase):
         if distro and (distro in ['debian-9', 'debian-10', 'centos-7', 
'centos-8', 'ubuntu-16.04', 'ubuntu-18.04'] or distro.startswith('almalinux')):
             self.skipTest('virgl headless cannot be tested with %s' %(distro))
 
-        render_hint = """If /dev/dri/renderD* is absent due to lack of 
suitable GPU, 'modprobe vgem' will create one suitable for mesa llvmpipe 
software renderer."""
-        try:
-            content = os.listdir("/dev/dri")
-            if len([i for i in content if i.startswith('render')]) == 0:
-                self.fail("No render nodes found in /dev/dri: %s. %s" 
%(content, render_hint))
-        except FileNotFoundError:
-            self.fail("/dev/dri directory does not exist; no render nodes 
available on this machine. %s" %(render_hint))
         qemu_distrofeatures = get_bb_var('DISTRO_FEATURES', 
'qemu-system-native')
         features = 'IMAGE_CLASSES += "testimage"\n'
         if 'opengl' not in qemu_distrofeatures:
diff --git a/scripts/runqemu b/scripts/runqemu
index cedf4f62ad..58b0c191e1 100755
--- a/scripts/runqemu
+++ b/scripts/runqemu
@@ -1366,6 +1366,15 @@ class BaseConfig(object):
             raise RunQemuError("Failed to boot, QB_SYSTEM_NAME is NULL!")
         self.qemu_system = qemu_system
 
+    def check_render_nodes(self):
+        render_hint = """If /dev/dri/renderD* is absent due to lack of 
suitable GPU, 'modprobe vgem' will create one suitable for mesa llvmpipe 
software renderer."""
+        try:
+            content = os.listdir("/dev/dri")
+            if len([i for i in content if i.startswith('render')]) == 0:
+                raise RunQemuError("No render nodes found in /dev/dri: %s. %s" 
%(content, render_hint))
+        except FileNotFoundError:
+            raise RunQemuError("/dev/dri directory does not exist; no render 
nodes available on this machine. %s" %(render_hint))
+
     def setup_vga(self):
         if self.nographic == True:
             if self.sdl == True:
@@ -1403,6 +1412,7 @@ class BaseConfig(object):
 
             self.qemu_opt += ' -display '
             if self.egl_headless == True:
+                self.check_render_nodes()
                 self.set_dri_path()
                 self.qemu_opt += 'egl-headless,'
             else:
-- 
2.30.2

-=-=-=-=-=-=-=-=-=-=-=-
Links: You receive all messages sent to this group.
View/Reply Online (#177791): 
https://lists.openembedded.org/g/openembedded-core/message/177791
Mute This Topic: https://lists.openembedded.org/mt/97263969/21656
Group Owner: [email protected]
Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub 
[[email protected]]
-=-=-=-=-=-=-=-=-=-=-=-

Reply via email to