Index: plymouth-0.9.0/src/libply-splash-core/ply-device-manager.c =================================================================== --- plymouth-0.9.0.orig/src/libply-splash-core/ply-device-manager.c +++ plymouth-0.9.0/src/libply-splash-core/ply-device-manager.c @@ -123,6 +123,9 @@ fb_device_has_drm_device (ply_device_man const char *id_path; bool has_drm_device = false; + const char *card_name = udev_device_get_sysattr_value (fb_device, "name"); + ply_trace("First method gives us: %s", card_name); + /* We want to see if the framebuffer is associated with a DRM-capable * graphics card, if it is, we'll use the DRM device */ card_matches = udev_enumerate_new (manager->udev_context); @@ -149,8 +152,15 @@ fb_device_has_drm_device (ply_device_man card_path = udev_list_entry_get_name (card_entry); card_device = udev_device_new_from_syspath (manager->udev_context, card_path); card_node = udev_device_get_devnode (card_device); - if (card_node != NULL) - has_drm_device = true; + if (card_node != NULL) { + /* don't consider drm driver for cirrus usable */ + const char *card_name = udev_device_get_sysattr_value (card_device, "name"); + ply_trace("Second method gives us: %s", card_name); + if (card_name && strcmp ("cirrusdrmfb", card_name) == 0) + has_drm_device = false; + else + has_drm_device = true; + } else ply_trace ("no card node!");