[PATCH] drm: fix up fbdev Kconfig defaults

Geert Uytterhoeven geert at linux-m68k.org
Tue Sep 12 07:14:54 UTC 2023


Hi Arnd,

On Mon, Sep 11, 2023 at 10:53 PM Arnd Bergmann <arnd at kernel.org> wrote:
> From: Arnd Bergmann <arnd at arndb.de>
>
> As a result of the recent Kconfig reworks, the default settings for the
> framebuffer interfaces changed in unexpected ways:
>
> Configurations that leave CONFIG_FB disabled but use DRM now get
> DRM_FBDEV_EMULATION by default. This also turns on the deprecated /dev/fb
> device nodes for machines that don't actually want it.
>
> In turn, configurations that previously had DRM_FBDEV_EMULATION enabled
> now only get the /dev/fb front-end but not the more useful framebuffer
> console, which is not selected any more.
>
> We had previously decided that any combination of the three frontends
> (FB_DEVICE, FRAMEBUFFER_CONSOLE and LOGO) should be selectable, but the
> new default settings mean that a lot of defconfig files would have to
> get adapted.
>
> Change the defaults back to what they were in Linux 6.5:
>
>  - Leave DRM_FBDEV_EMULATION turned off unless CONFIG_FB
>    is enabled. Previously this was a hard dependency but now the two are
>    independent. However, configurations that enable CONFIG_FB probably
>    also want to keep the emulation for DRM, while those without FB
>    presumably did that intentionally in the past.
>
>  - Leave FB_DEVICE turned off for FB=n. Following the same
>    logic, the deprecated option should not automatically get enabled
>    here, most users that had FB turned off in the past do not want it,
>    even if they want the console
>
>  - Turn the FRAMEBUFFER_CONSOLE option on if
>    DRM_FBDEV_EMULATION is set to avoid having to change defconfig
>    files that relied on it being selected unconditionally in the past.
>    This also makes sense since both LOGO and FB_DEVICE are now disabled
>    by default for builds without CONFIG_FB, but DRM_FBDEV_EMULATION
>    would make no sense if all three are disabled.
>
> Fixes: a5ae331edb02b ("drm: Drop select FRAMEBUFFER_CONSOLE for DRM_FBDEV_EMULATION")
> Fixes: 701d2054fa317 ("fbdev: Make support for userspace interfaces configurable")
> Reported-by: Geert Uytterhoeven <geert at linux-m68k.org>
> Signed-off-by: Arnd Bergmann <arnd at arndb.de>

Thanks for your patch!

> --- a/drivers/gpu/drm/Kconfig
> +++ b/drivers/gpu/drm/Kconfig
> @@ -135,7 +135,7 @@ config DRM_FBDEV_EMULATION
>         bool "Enable legacy fbdev support for your modesetting driver"
>         depends on DRM
>         select FRAMEBUFFER_CONSOLE_DETECT_PRIMARY if FRAMEBUFFER_CONSOLE
> -       default y
> +       default FB

While this is true for existing configs, it is no longer true in general,
as DRM_FBDEV_EMULATION is no longer related to FB.

>         help
>           Choose this option if you have a need for the legacy fbdev
>           support. Note that this support also provides the linux console
> diff --git a/drivers/video/console/Kconfig b/drivers/video/console/Kconfig
> index b575cf54174af..83c2d7329ca58 100644
> --- a/drivers/video/console/Kconfig
> +++ b/drivers/video/console/Kconfig
> @@ -74,6 +74,7 @@ config DUMMY_CONSOLE_ROWS
>  config FRAMEBUFFER_CONSOLE
>         bool "Framebuffer Console support"
>         depends on FB_CORE && !UML
> +       default DRM_FBDEV_EMULATION

Sounds good to me, although it looks a bit strange at first sight
(FRAMEBUFFER_CONSOLE defaults to n on a system with real fbdev, but
y on emulated fbdev?).
So this is the fix for commit a5ae331edb02b ("drm: Drop select
FRAMEBUFFER_CONSOLE for DRM_FBDEV_EMULATION").

>         select VT_HW_CONSOLE_BINDING
>         select CRC32
>         select FONT_SUPPORT
> diff --git a/drivers/video/fbdev/core/Kconfig b/drivers/video/fbdev/core/Kconfig
> index 114cb8aa6c8fd..804c2bec9b43c 100644
> --- a/drivers/video/fbdev/core/Kconfig
> +++ b/drivers/video/fbdev/core/Kconfig
> @@ -28,7 +28,7 @@ config FIRMWARE_EDID
>  config FB_DEVICE
>         bool "Provide legacy /dev/fb* device"
>         depends on FB_CORE
> -       default y
> +       default FB

Changing this means possibly causing regressions on systems running
an fbdev userspace.

>         help
>           Say Y here if you want the legacy /dev/fb* device file and
>           interfaces within sysfs anc procfs. It is only required if you

Gr{oetje,eeting}s,

                        Geert

-- 
Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert at linux-m68k.org

In personal conversations with technical people, I call myself a hacker. But
when I'm talking to journalists I just say "programmer" or something like that.
                                -- Linus Torvalds


More information about the dri-devel mailing list