1

I am trying to reduce boot time in a Raspberry Pi 4 using Yocto Linux. The system uses SysV init. There is psplash that uses framebuffer, and Qt application that uses DRM/eglfs, displayed respectively.

I decided to launch udev after my application starts in order to save 1+ seconds. This does not affect my Qt application, since it uses DRM/eglfs. However, it affects psplash since udev somehow creates /dev/fb0. Here is an excerpt from dmesg regarding drm / fb:

[    8.825197] [drm] Initialized v3d 1.0.0 20180419 for fec00000.v3d on minor 0     
[    8.849067] initcall v3d_drm_register+0x0/0x1000 [v3d] returned 0 after 45382 use
cs                                                                                  
[    9.093550] calling  vc4_drm_register+0x0/0x1000 [vc4] @ 295                     
[    9.118718] vc4-drm soc:gpu: bound fe600000.firmwarekms (ops vc4_fkms_ops [vc4]) 
[    9.134170] [drm] Initialized vc4 0.0.0 20140616 for soc:gpu on minor 1          
[    9.146065] [drm] Supports vblank timestamp caching Rev 2 (21.10.2013).          
[    9.159925] [drm] No driver support for vblank timestamp query.                  
[    9.171742] [drm] Setting vblank_disable_immediate to false because get_vblank_ti
mestamp == NULL                                                                     
[    9.337974] vc4-drm soc:gpu: fb0: DRM emulated frame buffer device 

I could not find a udev rule that handles framebuffer:

    root@raspberrypi4-64:/lib/udev/rules.d# grep -nir "drm"                             
    60-drm.rules:3:ACTION!="remove", SUBSYSTEM=="drm", SUBSYSTEMS=="pci|usb|platform", I
    MPORT{builtin}="path_id"                                                            
    50-udev-default.rules:34:SUBSYSTEM=="drm", KERNEL!="renderD*", GROUP="video"        
    50-udev-default.rules:39:SUBSYSTEM=="drm", KERNEL=="renderD*", GROUP="video", MODE="
    0666" 
    root@raspberrypi4-64:/lib/udev/rules.d# grep -nir "fb" 

In fact, grep -nir "fb" gives nothing.

I would like to identify how udev initializes framebuffer devices, and initialize it before psplash (by using stuff like tmpfs, mknod), without udev. I already tried doing mknod /dev/fb0 c 29 0, /dev/fb0 is created but nothing on the display. Is this possible? Any help is appreciated.

NOTE: If anything is missing in the description, please let me know.

0

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Browse other questions tagged or ask your own question.