2023-09-12 20:30:09

by Arnd Bergmann

[permalink] [raw]
Subject: [PATCH] drm: fix up fbdev Kconfig defaults

From: Arnd Bergmann <[email protected]>

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 <[email protected]>
Signed-off-by: Arnd Bergmann <[email protected]>
---
drivers/gpu/drm/Kconfig | 2 +-
drivers/video/console/Kconfig | 1 +
drivers/video/fbdev/core/Kconfig | 2 +-
3 files changed, 3 insertions(+), 2 deletions(-)

diff --git a/drivers/gpu/drm/Kconfig b/drivers/gpu/drm/Kconfig
index 7df8b6875b121..144a9a1d31cea 100644
--- 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
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
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
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
--
2.39.2


2023-09-18 14:57:00

by Thomas Zimmermann

[permalink] [raw]
Subject: Re: [PATCH] drm: fix up fbdev Kconfig defaults

Hi

Am 11.09.23 um 22:52 schrieb Arnd Bergmann:
> From: Arnd Bergmann <[email protected]>
>
> 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 <[email protected]>
> Signed-off-by: Arnd Bergmann <[email protected]>

Acked-by: Thomas Zimmermann <[email protected]>

> ---
> drivers/gpu/drm/Kconfig | 2 +-
> drivers/video/console/Kconfig | 1 +
> drivers/video/fbdev/core/Kconfig | 2 +-
> 3 files changed, 3 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/gpu/drm/Kconfig b/drivers/gpu/drm/Kconfig
> index 7df8b6875b121..144a9a1d31cea 100644
> --- 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
> 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
> 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
> 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

--
Thomas Zimmermann
Graphics Driver Developer
SUSE Software Solutions Germany GmbH
Frankenstrasse 146, 90461 Nuernberg, Germany
GF: Ivo Totev, Andrew Myers, Andrew McDonald, Boudien Moerman
HRB 36809 (AG Nuernberg)


Attachments:
OpenPGP_signature.asc (855.00 B)
OpenPGP digital signature

2023-09-18 17:32:05

by Javier Martinez Canillas

[permalink] [raw]
Subject: Re: [PATCH] drm: fix up fbdev Kconfig defaults

Thomas Zimmermann <[email protected]> writes:

> Hi
>
> Am 11.09.23 um 22:52 schrieb Arnd Bergmann:
>> From: Arnd Bergmann <[email protected]>
>>
>> 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 <[email protected]>
>> Signed-off-by: Arnd Bergmann <[email protected]>
>
> Acked-by: Thomas Zimmermann <[email protected]>
>

Pushed to drm-misc (drm-misc-fixes). Thanks!

--
Best regards,

Javier Martinez Canillas
Core Platforms
Red Hat