Skip to content

asahi drm module initilised in the dracut initrd too late (falling back to simpledrm) for plymouth splash #68

@reviczky

Description

@reviczky

Using Debian bananas (kernel from Salsa) with initramfs-tools and plymouth, the initrd image is loading the asahi drm module and displays a plymouth splash (within 2 sec).

00:00:01.987 ../src/libply-splash-core/ply-device-manager.c:478:create_devi: creating objects for drm devices
00:00:01.988 ../src/libply-splash-core/ply-device-manager.c:498:create_devi: found device /sys/devices/platform/soc/206400000.gpu/drm/card0
00:00:01.989 ../src/libply-splash-core/ply-device-manager.c:505:create_devi: device is initialized
00:00:01.990 ../src/libply-splash-core/ply-device-manager.c:509:create_devi: found node /dev/dri/card0
00:00:01.990 ../src/libply-splash-core/ply-device-manager.c:396:create_devi: device subsystem is drm
00:00:01.991 ../src/libply-splash-core/ply-device-manager.c:403:create_devi: found DRM device /dev/dri/card0
00:00:01.991 ../src/libply-splash-core/ply-device-manager.c:1097:create_dev: creating devices for /dev/dri/card0 (renderer type: 1) (terminal: /dev/tty1)
00:00:01.992 ../src/libply-splash-core/ply-renderer.c:235:ply_renderer_open: trying to open renderer plugin /usr/lib/aarch64-linux-gnu/plymouth/renderers/drm.so
00:00:01.993 ../src/plugins/renderers/drm/plugin.c:894:create_backend      : creating renderer backend for device /dev/dri/card0
00:00:01.993 ../src/plugins/renderers/drm/plugin.c:977:load_driver         : Opening '/dev/dri/card0'
00:00:01.994 ../src/plugins/renderers/drm/plugin.c:987:load_driver         : drm driver: asahi
[...]
00:00:02.004 ../src/plugins/renderers/drm/plugin.c:977:load_driver         : Opening '/dev/dri/renderD128'
00:00:02.005 ../src/plugins/renderers/drm/plugin.c:987:load_driver         : drm driver: asahi
[...]
00:00:02.040 ../src/ply-boot-server.c:395:print_connection_process_identity: connection is from pid 426 (/usr/bin/plymouth --show-splash) with parent pid 421 (/bin/sh /scripts/init-premount/plymouth)
00:00:02.041 ../src/ply-boot-server.c:494:ply_boot_connection_on_request   : got show splash request
[...]
00:00:02.042 ../src/main.c:456:show_default_splash                         : Showing splash screen

With the same kernel, but using dracut to generate the initrd, the asahi drm module is loaded too late (after 9.5 sec) for plymouth to display a splash, and it falls back to text mode.

00:00:01.569 ../src/libply-splash-core/ply-device-manager.c:478:create_devi: creating objects for drm devices
00:00:01.570 ../src/main.c:2564:main                                       : entering event loop
00:00:01.571 ../src/libply/ply-utils.c:1098:ply_get_kmsg_log_levels        : opening /proc/sys/kernel/printk
00:00:01.571 ../src/libply/ply-utils.c:1106:ply_get_kmsg_log_levels        : reading kmsg log levels
00:00:01.576 ../src/ply-boot-server.c:395:print_connection_process_identity: connection is from pid 526 (/usr/bin/plymouth show-splash) with parent pid 1 (/init splash)
00:00:01.578 ../src/ply-boot-server.c:494:ply_boot_connection_on_request   : got show splash request
00:00:01.579 ../src/main.c:858:plymouth_should_ignore_show_splash_calls    : checking if plymouth should be running
00:00:01.579 ../src/main.c:1757:tell_systemd_to_print_details              : telling systemd to start printing details
00:00:01.579 ../src/main.c:1015:on_show_splash                             : no displays available to show splash on, waiting...
00:00:01.579 ../src/libply/ply-event-loop.c:1142:ply_event_loop_free_destin: freeing destination (1, 0x555585397140, 0x555585396580) of fd 12
00:00:01.581 ../src/ply-boot-server.c:391:print_connection_process_identity: connection is from toplevel init process (/init splash)
00:00:01.581 ../src/ply-boot-server.c:446:ply_boot_connection_on_request   : got update request
[...]
00:00:01.791 ../src/libply-splash-core/ply-device-manager.c:1070:create_tex: adding text display for terminal /dev/tty1
[...]
00:00:01.792 ../src/libply-splash-core/ply-boot-splash.c:547:ply_boot_splas: showing splash screen
00:00:01.792 ../src/plugins/splash/script/plugin.c:423:show_splash_screen  : no pixel displays
00:00:01.792 ../src/libply-splash-core/ply-boot-splash.c:553:ply_boot_splas: can't show splash: Success
[...]
00:00:09.571 ../src/libply-splash-core/ply-device-manager.c:403:create_devi: found DRM device /dev/dri/card0
00:00:09.572 ../src/libply-splash-core/ply-device-manager.c:1097:create_dev: creating devices for /dev/dri/card0 (renderer type: 1) (terminal: none)
00:00:09.572 ../src/libply-splash-core/ply-renderer.c:235:ply_renderer_open: trying to open renderer plugin /usr/lib/aarch64-linux-gnu/plymouth/renderers/drm.so
00:00:09.572 ../src/plugins/renderers/drm/plugin.c:894:create_backend      : creating renderer backend for device /dev/dri/card0
00:00:09.572 ../src/plugins/renderers/drm/plugin.c:977:load_driver         : Opening '/dev/dri/card0'
00:00:09.572 ../src/plugins/renderers/drm/plugin.c:987:load_driver         : drm driver: asahi
[...]
00:00:09.575 ../src/libply-splash-core/ply-device-manager.c:498:create_devi: found device /sys/devices/platform/soc/206400000.gpu/drm/renderD128
00:00:09.576 ../src/libply-splash-core/ply-device-manager.c:505:create_devi: device is initialized
00:00:09.577 ../src/libply-splash-core/ply-device-manager.c:509:create_devi: found node /dev/dri/renderD128
00:00:09.577 ../src/libply-splash-core/ply-device-manager.c:396:create_devi: device subsystem is drm
00:00:09.578 ../src/libply-splash-core/ply-device-manager.c:403:create_devi: found DRM device /dev/dri/renderD128
00:00:09.579 ../src/libply-splash-core/ply-device-manager.c:1097:create_dev: creating devices for /dev/dri/renderD128 (renderer type: 1) (terminal: none)
00:00:09.579 ../src/libply-splash-core/ply-renderer.c:235:ply_renderer_open: trying to open renderer plugin /usr/lib/aarch64-linux-gnu/plymouth/renderers/drm.so
00:00:09.580 ../src/plugins/renderers/drm/plugin.c:894:create_backend      : creating renderer backend for device /dev/dri/renderD128
00:00:09.581 ../src/plugins/renderers/drm/plugin.c:977:load_driver         : Opening '/dev/dri/renderD128'
00:00:09.582 ../src/plugins/renderers/drm/plugin.c:987:load_driver         : drm driver: asahi

On Ubuntu Asahi, which includes the simpledrm module, the dracut initrd loads the asahi drm too late as well (9 sec) and falls back to the simpledrm driver.

00:00:01.232 ../src/plugins/renderers/drm/plugin.c:990:load_driver         : drm driver: simpledrm
[...]
00:00:01.825 ../src/main.c:456:show_default_splash                         : Showing splash screen
[...]
00:00:09.228 ../src/libply-splash-core/ply-device-manager.c:391:create_devi: found DRM device /dev/dri/card1
00:00:09.228 ../src/libply-splash-core/ply-device-manager.c:1111:create_dev: creating devices for /dev/dri/card1 (renderer type: 1) (terminal: none)
00:00:09.228 ../src/libply-splash-core/ply-renderer.c:247:ply_renderer_open: trying to open renderer plugin /usr/lib/aarch64-linux-gnu/plymouth/renderers/drm.so
00:00:09.228 ../src/plugins/renderers/drm/plugin.c:896:create_backend      : creating renderer backend for device /dev/dri/card1
00:00:09.228 ../src/plugins/renderers/drm/plugin.c:980:load_driver         : Opening '/dev/dri/card1'
00:00:09.228 ../src/plugins/renderers/drm/plugin.c:990:load_driver         : drm driver: asahi
[...]
00:00:09.228 ../src/libply-splash-core/ply-device-manager.c:482:create_devi: found device /sys/devices/platform/soc/406400000.gpu/drm/renderD128
00:00:09.228 ../src/libply-splash-core/ply-device-manager.c:490:create_devi: device is initialized 1
00:00:09.228 ../src/libply-splash-core/ply-device-manager.c:494:create_devi: found node /dev/dri/renderD128
00:00:09.228 ../src/libply-splash-core/ply-device-manager.c:379:create_devi: device subsystem is drm

I have tried to force the asahi module to be loaded early by adding it to the force_drivers entry (in 10-asahi.conf):

force_drivers+=" asahi xhci-plat-hcd "

Although the asahi driver is probed early (entries within 2 sec, but only fully loaded after 9 sec), it still isn't able to be used by plymouth to display a splash and falls back to text mode/simpledrm.

00:00:01.652 ../src/libply-splash-core/ply-device-manager.c:478:create_devi: creating objects for drm devices
00:00:01.653 ../src/libply-splash-core/ply-device-manager.c:498:create_devi: found device /sys/devices/platform/soc/206400000.gpu/drm/card0
00:00:01.654 ../src/libply-splash-core/ply-device-manager.c:505:create_devi: device is initialized
00:00:01.655 ../src/libply-splash-core/ply-device-manager.c:509:create_devi: found node /dev/dri/card0
00:00:01.656 ../src/libply-splash-core/ply-device-manager.c:396:create_devi: device subsystem is drm
00:00:01.657 ../src/libply-splash-core/ply-device-manager.c:403:create_devi: found DRM device /dev/dri/card0
00:00:01.658 ../src/libply-splash-core/ply-device-manager.c:1097:create_dev: creating devices for /dev/dri/card0 (renderer type: 1) (terminal: /dev/tty1)
00:00:01.659 ../src/libply-splash-core/ply-renderer.c:235:ply_renderer_open: trying to open renderer plugin /usr/lib/aarch64-linux-gnu/plymouth/renderers/drm.so
00:00:01.660 ../src/plugins/renderers/drm/plugin.c:894:create_backend      : creating renderer backend for device /dev/dri/card0
00:00:01.661 ../src/plugins/renderers/drm/plugin.c:977:load_driver         : Opening '/dev/dri/card0'
00:00:01.662 ../src/plugins/renderers/drm/plugin.c:987:load_driver         : drm driver: asahi
[...]
00:00:01.825 ../src/libply-splash-core/ply-device-manager.c:1070:create_tex: adding text display for terminal /dev/tty1
00:00:01.825 ../src/main.c:1144:on_text_display_added                      : text display added before splash loaded, so loading splash now
00:00:01.825 ../src/main.c:890:plymouth_should_show_default_splash         : checking if plymouth should show default splash
00:00:01.825 ../src/main.c:918:plymouth_should_show_default_splash         : using default splash because kernel command line has option "splash"
00:00:01.825 ../src/main.c:456:show_default_splash                         : Showing splash screen
[...]
00:00:09.690 ../src/libply-splash-core/ply-device-manager.c:509:create_devi: found node /dev/dri/renderD128
00:00:09.691 ../src/libply-splash-core/ply-device-manager.c:396:create_devi: device subsystem is drm
00:00:09.691 ../src/libply-splash-core/ply-device-manager.c:403:create_devi: found DRM device /dev/dri/renderD128
00:00:09.692 ../src/libply-splash-core/ply-device-manager.c:1097:create_dev: creating devices for /dev/dri/renderD128 (renderer type: 1) (terminal: none)
00:00:09.692 ../src/libply-splash-core/ply-renderer.c:235:ply_renderer_open: trying to open renderer plugin /usr/lib/aarch64-linux-gnu/plymouth/renderers/drm.so
00:00:09.693 ../src/plugins/renderers/drm/plugin.c:894:create_backend      : creating renderer backend for device /dev/dri/renderD128
00:00:09.693 ../src/plugins/renderers/drm/plugin.c:977:load_driver         : Opening '/dev/dri/renderD128'
00:00:09.694 ../src/plugins/renderers/drm/plugin.c:987:load_driver         : drm driver: asahi
[...]
00:00:09.700 ../src/libply-splash-core/ply-device-manager.c:396:create_devi: device subsystem is drm
00:00:09.701 ../src/libply-splash-core/ply-device-manager.c:403:create_devi: found DRM device /dev/dri/card1
00:00:09.701 ../src/libply-splash-core/ply-device-manager.c:1097:create_dev: creating devices for /dev/dri/card1 (renderer type: 1) (terminal: none)
00:00:09.702 ../src/libply-splash-core/ply-renderer.c:235:ply_renderer_open: trying to open renderer plugin /usr/lib/aarch64-linux-gnu/plymouth/renderers/drm.so
00:00:09.702 ../src/plugins/renderers/drm/plugin.c:894:create_backend      : creating renderer backend for device /dev/dri/card1
00:00:09.703 ../src/plugins/renderers/drm/plugin.c:977:load_driver         : Opening '/dev/dri/card1'
00:00:09.704 ../src/plugins/renderers/drm/plugin.c:987:load_driver         : drm driver: apple

Does the Fedora Asahi Remix's dracut initrd load and display the splash with the asahi drm driver or does it also fall back to simpledrm (can someone confirm)?

If it helps, I have put the full plymouth logs at: reviczky/asahi#8 (comment)

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions