Re: [PATCH] drm: fix up fbdev Kconfig defaults

From: Geert Uytterhoeven
Date: Tue Sep 12 2023 - 03:15:11 EST


Hi Arnd,

On Mon, Sep 11, 2023 at 10:53 PM Arnd Bergmann <arnd@xxxxxxxxxx> wrote:
> From: Arnd Bergmann <arnd@xxxxxxxx>
>
> 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@xxxxxxxxxxxxxx>
> Signed-off-by: Arnd Bergmann <arnd@xxxxxxxx>

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@xxxxxxxxxxxxxx

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