fbdev: Add support for the nomodeset kernel parameter
authorThomas Zimmermann <tzimmermann@suse.de>
Fri, 11 Nov 2022 13:30:24 +0000 (14:30 +0100)
committerThomas Zimmermann <tzimmermann@suse.de>
Wed, 16 Nov 2022 12:26:25 +0000 (13:26 +0100)
commit0ba2fa8cbd29278a180ac90bd66b2c0bbdeacc89
tree048750c67099f42c7ae500ddbc22cdf51ba433d9
parent9a758d8756daab5b8fda006e131c066336b16a32
fbdev: Add support for the nomodeset kernel parameter

Support the kernel's nomodeset parameter for all PCI-based fbdev
drivers that use aperture helpers to remove other, hardware-agnostic
graphics drivers.

The parameter is a simple way of using the firmware-provided scanout
buffer if the hardware's native driver is broken. The same effect
could be achieved with per-driver options, but the importance of the
graphics output for many users makes a single, unified approach
worthwhile.

With nomodeset specified, the fbdev driver module will not load. This
unifies behavior with similar DRM drivers. In DRM helpers, modules
first check the nomodeset parameter before registering the PCI
driver. As fbdev has no such module helpers, we have to modify each
driver individually.

The name 'nomodeset' is slightly misleading, but has been chosen for
historical reasons. Several drivers implemented it before it became a
general option for DRM. So keeping the existing name was preferred over
introducing a new one.

v2:
* print a warning if a driver does not init (Helge)
* wrap video_firmware_drivers_only() in helper

Signed-off-by: Thomas Zimmermann <tzimmermann@suse.de>
Reviewed-by: Javier Martinez Canillas <javierm@redhat.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20221111133024.9897-3-tzimmermann@suse.de
47 files changed:
drivers/staging/sm750fb/Kconfig
drivers/staging/sm750fb/sm750.c
drivers/video/fbdev/Kconfig
drivers/video/fbdev/arkfb.c
drivers/video/fbdev/asiliantfb.c
drivers/video/fbdev/aty/aty128fb.c
drivers/video/fbdev/aty/atyfb_base.c
drivers/video/fbdev/aty/radeon_base.c
drivers/video/fbdev/carminefb.c
drivers/video/fbdev/chipsfb.c
drivers/video/fbdev/cirrusfb.c
drivers/video/fbdev/core/fbmem.c
drivers/video/fbdev/cyber2000fb.c
drivers/video/fbdev/geode/Kconfig
drivers/video/fbdev/geode/gx1fb_core.c
drivers/video/fbdev/geode/gxfb_core.c
drivers/video/fbdev/geode/lxfb_core.c
drivers/video/fbdev/gxt4500.c
drivers/video/fbdev/hyperv_fb.c
drivers/video/fbdev/i740fb.c
drivers/video/fbdev/i810/i810_main.c
drivers/video/fbdev/imsttfb.c
drivers/video/fbdev/intelfb/intelfbdrv.c
drivers/video/fbdev/kyro/fbdev.c
drivers/video/fbdev/matrox/matroxfb_base.c
drivers/video/fbdev/mb862xx/mb862xxfbdrv.c
drivers/video/fbdev/neofb.c
drivers/video/fbdev/nvidia/nvidia.c
drivers/video/fbdev/pm2fb.c
drivers/video/fbdev/pm3fb.c
drivers/video/fbdev/pvr2fb.c
drivers/video/fbdev/riva/fbdev.c
drivers/video/fbdev/s3fb.c
drivers/video/fbdev/savage/savagefb_driver.c
drivers/video/fbdev/sis/sis_main.c
drivers/video/fbdev/skeletonfb.c
drivers/video/fbdev/sm712fb.c
drivers/video/fbdev/sstfb.c
drivers/video/fbdev/sunxvr2500.c
drivers/video/fbdev/sunxvr500.c
drivers/video/fbdev/tdfxfb.c
drivers/video/fbdev/tgafb.c
drivers/video/fbdev/tridentfb.c
drivers/video/fbdev/vermilion/vermilion.c
drivers/video/fbdev/via/via-core.c
drivers/video/fbdev/vt8623fb.c
include/linux/fb.h