Fedora 36: A brave new (DRM/KMS only) world

The upcoming Fedora release includes a change proposed by Peter Robinson and yours truly, that disables all the Frame Buffer Device (fbdev) drivers in the Linux kernel package.

This means that starting from Fedora 36, only Direct Rendering Manager (DRM) / Kernel Mode Settings (KMS) drivers will be used. No more legacy stuff.

Many Linux developers have been arguing for over a decade now that fbdev is deprecated and it has been almost 7 years since the previous fbdev maintainer said that no new fbdev drivers would be added to the kernel. So this feels like a change long overdue.

This was possible thanks to the work of Thomas Zimmermann @ SUSE, who added the simpledrm driver, that exposes the system framebuffer set-up by the firmware as a DRM device.

Using the simpledrm driver, a framebuffer would be available even if the platform does not have a DRM driver or the user disables it using the nomodeset kernel command-line parameter.

Before this change, the video drivers used when DRM drivers were disabled with the nomodeset parameter, where either efifb (for systems booted with EFI) or vesafb (for systems booted with legacy BIOS and a VESA video mode selected on boot using the vga kernel command line parameter).

The need to rely on the system framebuffer initialized by the firmware was the primary reason why these fbdev drivers were still enabled in the Fedora kernel.

But the simpledrm replaces both, since is able to expose any system framebuffer, as long as platform code pass it as a proper I/O memory region for the driver to use it.

That includes not only the EFI system framebuffer provided through the Graphics Output Protocol (GOP) and the VESA framebuffer configured with the vga parameter, but also framebuffers whose information is passed to the kernel through other hardware description mechanisms. For example, as a "simple-framebuffer" Device Tree node, which is common on aarch64 devices.

Even when no fbdev drivers are used anymore, the fbdev subsystem is still enabled. This is needed because the The Framebuffer Console (fbcon) needs an fbdev device to bind. But fortunately the DRM subsystem provides a generic fbdev emulation layer, so DRM drivers can also provide a fbdev interface for fbcon (or even to user-space that still expects an fbdev device to work).

While working on this, we found that a lot of assumptions made all over the stack were no longer true once simpledrm was used instead of {efi,vesa}fb. So changes were needed in the Linux kernel, Plymouth, GDM, Xorg, etc.

But that will be a topic for another post since this one got too long already!

6 thoughts on “Fedora 36: A brave new (DRM/KMS only) world

  1. Does this require bootloader changes?
    To make SimpleDRM to work, I’ve had to switch from syslinux to grub in my ISOs because I couldn’t figure out how to get it’s equivalent of gfxpayload=keep to work

  2. hmmm… would be nice if the TV over HDMI also really well supported, like the 42″/43″ ones who can use as Computer Monitor, i have one and the problem on it is the connectivity and shutting down of the Picture if the wrong Resolution used and then is no Picture anymore.. i be since a couple Years behind MDK and OpenMandriva now a clean Fedorauser and i have every troubles if i want install my UHD-TV over a GTX 660 TI using with Fedora, maybe could be more found attention the HDMI in the near time, because, it comes ever ore, also the possibility over looking TV over the net with the Linux Desktop and
    supporting therewith also more Older Peoples, with a more huge Resolution for Grandpa and Granny ;), just as Example.. Would in any case more better if a higher consideration would be given to HDMI 🙂
    Best regards
    (btw, wtf, the price of the more new Graficards with 3D is dammed high, therewith should also supported older Graka’s who be more cheap and give in anyway 3D for the users who want not overpriced Graficards, the price gouging/driving is not pretty well imho :\ )

  3. Just one question: how to get fullhd resolution at virtual consoles with this «wonderful» simpledrm piece of code. nvidia (driver too), csm, display port. «Outdated» fbdev works fine with video=vesa:off vga=0x034d. Oh, on more thing. Simpledrm unmasks bug from 2011 with temporary freezing console output after exit from mc and some other action. fbdev could mask and simpledrm can’t.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s