(natty/intel) plymouth in initramfs, plymouth starts before /dev/dri/card0 exists

Bug #770371 reported by Mark Fraser on 2011-04-25
This bug affects 10 people
Affects Status Importance Assigned to Milestone
plymouth (Ubuntu)

Bug Description

Binary package hint: plymouth

Upgraded to Kubuntu 11.04 and noticed that the splash screen was in text mode where it was working with 10.10. The splash screen shown at shut down works. Using Intel mobile 945GME.
00:02.0 VGA compatible controller: Intel Corporation Mobile 945GME Express Integrated Graphics Controller (rev 03) (prog-if 00 [VGA controller])
        Subsystem: Acer Incorporated [ALI] Device 022f
        Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx-
        Status: Cap+ 66MHz- UDF- FastB2B+ ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx-
        Latency: 0
        Interrupt: pin A routed to IRQ 16
        Region 0: Memory at 98280000 (32-bit, non-prefetchable) [size=512K]
        Region 1: I/O ports at 60f0 [size=8]
        Region 2: Memory at 80000000 (32-bit, prefetchable) [size=256M]
        Region 3: Memory at 98300000 (32-bit, non-prefetchable) [size=256K]
        Expansion ROM at <unassigned> [disabled]
        Capabilities: [90] MSI: Enable- Count=1/1 Maskable- 64bit-
                Address: 00000000 Data: 0000
        Capabilities: [d0] Power Management version 2
                Flags: PMEClk- DSI+ D1- D2- AuxCurrent=0mA PME(D0-,D1-,D2-,D3hot-,D3cold-)
                Status: D0 NoSoftRst- PME-Enable- DSel=0 DScale=0 PME-
        Kernel driver in use: i915
        Kernel modules: intelfb, i915

ProblemType: Bug
DistroRelease: Ubuntu 11.04
Package: plymouth 0.8.2-2ubuntu22
ProcVersionSignature: Ubuntu 2.6.38-8.42-generic
Uname: Linux 2.6.38-8-generic i686
Architecture: i386
Date: Mon Apr 25 17:23:59 2011
DefaultPlymouth: /lib/plymouth/themes/kubuntu-logo/kubuntu-logo.plymouth
InstallationMedia: Kubuntu 10.10 "Maverick Meerkat" - Release i386 (20101007)
MachineType: Acer Aspire one
ProcFB: 0 inteldrmfb
ProcKernelCmdLine: BOOT_IMAGE=/boot/vmlinuz-2.6.38-8-generic root=UUID=e4864edf-7cd6-4c8a-b697-039216d05c63 ro quiet splash vt.handoff=7
SourcePackage: plymouth
TextPlymouth: /lib/plymouth/themes/kubuntu-text/kubuntu-text.plymouth
UpgradeStatus: Upgraded to natty on 2011-04-25 (0 days ago)
dmi.bios.date: 11/28/2009
dmi.bios.vendor: Acer
dmi.bios.version: V1.25
dmi.board.asset.tag: Base Board Asset Tag
dmi.board.name: Aspire one
dmi.board.vendor: Acer
dmi.board.version: V1.25
dmi.chassis.type: 10
dmi.chassis.vendor: Acer
dmi.chassis.version: V1.25
dmi.modalias: dmi:bvnAcer:bvrV1.25:bd11/28/2009:svnAcer:pnAspireone:pvrV1.25:rvnAcer:rnAspireone:rvrV1.25:cvnAcer:ct10:cvrV1.25:
dmi.product.name: Aspire one
dmi.product.version: V1.25
dmi.sys.vendor: Acer

Mark Fraser (launchpad-mfraz) wrote :
Mark Fraser (launchpad-mfraz) wrote :

I've now tried a live USB of Kubuntu 11.04 on 2 laptops, the one that is giving me a text splash screen is still showing a text splash screen. The one that was showing a proper graphic splash screen is still working. Both have Intel graphics cards.

Peter Wu (lekensteyn) wrote :
Download full text (3.5 KiB)

I've an intel i5-460M and a nvidia GT 425m card, with the latter not in use. I've the same issue: although the splash screen has a background color (blue for Kubuntu), the splash screen is a text-only splash.

On my previous installation, I upgraded from Maverick to Natty. In Maverick, the splash screen was working fine, after the upgrade the above problem began to occur.
When using the Maverick kernel (2.6.35-28) to boot into Natty, the splash screen works fine. I've looked at the differences between the initrd of maverick and natty, and the only differences were the kernel files (/lib/modules/*).

A fresh installation of Natty did not help, the problem still exists.

I've compared debug logs (add plymouth:debug as boot option, it will generate a log at /var/log/plymouth-debug.log) of two identical systems running maverick and natty, and the problem is that the intel driver is not loaded or something:

The relevant output on maverick is:
[./plugin.c] create_backend:creating renderer backend for device /dev/dri/card0
[./plugin.c] load_driver:Attempting to load driver 'i915'

Natty shows:
[./plugin.c] create_backend:creating renderer backend for device /dev/dri/card0
[./plugin.c] load_driver:Attempting to load driver '(null)'
[./plugin.c] load_driver:drmOpen failed
[ply-renderer.c] ply_renderer_open:could not open rendering device for plugin /lib/plymouth/renderers/drm.so
[./plugin.c] create_backend:creating renderer backend for device /dev/fb0
[./plugin.c] open_device:could not open '/dev/fb0': No such file or directory
[ply-renderer.c] ply_renderer_open:could not open rendering device for plugin /lib/plymouth/renderers/frame-buffer.so
[./plugin.c] open_device:could not open '/dev/fb0': No such file or directory
[ply-renderer.c] ply_renderer_open:could not open rendering device for plugin /lib/plymouth/renderers/vga16fb.so
[ply-renderer.c] ply_renderer_open:could not find suitable rendering plugin
[main.c] add_default_displays_and_keyboard:could not open renderer /dev/fb
[main.c] add_display_and_keyboard_for_terminal:adding display and keyboard for /dev/tty7

Looking in the source code (apt-get source plymouth), the message comes from plymouth-0.8.2/src/plugins/renderers/drm/plugin.c:473.
`null` refers to the driver name, and is defined in the line above (472) by calling find_driver_for_device("/dev/dri/card0").
Reasons why that function may return NULL:
- /dev/dri/card0 does not exist
- /dev/dri/card0 is not a character device (unlikely)
- /sys/dev/char/XX:YY/device/driver does not exist (run `stat -c'%t.%T' /dev/dri/card0` to get XX:YY)
- The previous link in /sys/... did not point to a valid driver (i915)

When booting with the options `quiet splash` options removed, and `nosplash break=top` added (drops to a shell before running local-top scripts like...


Peter Wu (lekensteyn) wrote :

Aha, I've found a work-around for the problem described in my previous post (#3). The goal is to load the `i915` driver before loading plymouth.

Create file in `/etc/initramfs-tools/scripts/init-top` named "load-intel". (any name would suffice, just make sure that the name comes before "plymouth". "paaa" would be ok, "pzzz" not.)

Next, set the permissions to 755 and update the ramdisk by running `sudo update-initramfs -u`.

This has to be done once. If it did not work, remove the file and run `sudo update-initramfs -u` again.

A single command that does the above:

printf '#!/bin/sh\n# Workaround bug #770371\nmodprobe i915\n' |\
sudo tee /etc/initramfs-tools/scripts/init-top/load-intel >/dev/null\
&& sudo chmod 755 /etc/initramfs-tools/scripts/init-top/load-intel\
&& sudo update-initramfs -u

Changed in plymouth (Ubuntu):
status: New → Confirmed
Mark Fraser (launchpad-mfraz) wrote :

Thanks Lekensteyn, that work-around works for me.
So, why isn't the driver loading in 11.04 when it was working OK in 10.10?

Steve Langasek (vorlon) wrote :

> When booting with the options `quiet splash` options removed,
> and `nosplash break=top` added (drops to a shell before
> running local-top scripts like plymouth), I checked some stuff:
> - cat /proc/modules: no modules seems to be loaded
> - ls -l /dev/dri/card0: missing AHA! PROBLEM FOUND!

Except that when you boot with 'break=top', you're interrupting the boot before udev runs, and it's udev that loads the modules and creates /dev/dri/card0; so that doesn't really tell us what's happening.

Could you instead try adding a 'udevadm settle' command to /usr/share/initramfs-tools/scripts/init-top/plymouth before the call to plymouthd, and see if that's enough to do the job without adding a manual 'modprobe'? The 'framebuffer' script should be enough to ensure this on its own, but maybe it isn't for some reason.

Changed in plymouth (Ubuntu):
status: Confirmed → Incomplete
summary: - Splash screen in text mode at boot up
+ (natty/intel) plymouth in initramfs, plymouth starts before
+ /dev/dri/card0 exists
Launchpad Janitor (janitor) wrote :

[Expired for plymouth (Ubuntu) because there has been no activity for 60 days.]

Changed in plymouth (Ubuntu):
status: Incomplete → Expired
To post a comment you must log in.
This report contains Public information  Edit
Everyone can see this information.

Other bug subscribers