Message ID | 20230911205338.2385278-1-arnd@kernel.org |
---|---|
State | New |
Headers |
Return-Path: <linux-kernel-owner@vger.kernel.org> Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:9ecd:0:b0:3f2:4152:657d with SMTP id t13csp377221vqx; Tue, 12 Sep 2023 05:43:00 -0700 (PDT) X-Google-Smtp-Source: AGHT+IFzQUjbNuarWcPfeH8x2fsou6s5ToPe0kWMeetx7Dk2cD610OKLCRwjZu2KCAczapxaG3t3 X-Received: by 2002:a17:902:e743:b0:1b9:e9b2:124b with SMTP id p3-20020a170902e74300b001b9e9b2124bmr11887564plf.64.1694522580244; Tue, 12 Sep 2023 05:43:00 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1694522580; cv=none; d=google.com; s=arc-20160816; b=Q8CY3/VpwX4Yj/mW01B+Gl6R7hPB8tsBvZa6eOL5MzrouK4+qF8HFaXS5lP3zmwf7P cjmIRYvahXfJvKqxmpdyvu4tbjFIBIYOItEyl9cATzkXeU3sbwK5Rpl5rs70eaZlsd2Z EJbII45/2Q+rXqN4uFNYPy3FAl7QhUYPFInqumxXHziFpZY6feMbIZbDHpSrDYIA9FFs hBvXHIraJh3jGb4XJ6SaNzq9n/krW7i4QC3PCoLl9WFVY3tZl5RzKX3ASeXYNVuu+Jf6 RvjbHInB4YX5oJZbTTi2MfCWTkAsv8+aU1BX2xNsrmP99zleKGqmFUTKDPwjJtdJk8WT t11A== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :message-id:date:subject:cc:to:from:dkim-signature; bh=Q59wmuGaoFQh+bu/j422PtMqezfNKGLhR1b9cPt01UE=; fh=eF7p+4mO2V+KUrtKMvgU1yDuSQeTkZ8jpJTeli9CPmc=; b=RftPcc6OOIHsPi8K+ej953mGyvLdTqetAhZRaRIaisloCfKaWG1du/js4PaQunFmBH uzh1ASJpUtXhbVVrawu1Zoryl+ygDEADRwqtT+Nl2sBSIzzxmaacV7WLMi8HnkRPnZVN JHtyF825AcaEN0OM1Yq0sYTo9u/C44y2WREJ5wB0Wu71jcLeKWQCo4DqwjpK8pVzdKnK FiogHkrHSWgXVBuheQZfBEOOA5TJAlEe0xMnXgEPrcJs/FHkRkOin9hMeuHHOrlwsOFW KgOYHuWm8CPvGq+SB/RvTUTp8iwlQyOz/scMaCQEPNDiGmHGM6zwzpAR3JaC/YlA8qdt 8SLQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=Or7LRukE; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:7 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: from snail.vger.email (snail.vger.email. [2620:137:e000::3:7]) by mx.google.com with ESMTPS id b21-20020a170902ed1500b001b55070e154si7970703pld.96.2023.09.12.05.42.59 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 12 Sep 2023 05:43:00 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:7 as permitted sender) client-ip=2620:137:e000::3:7; Authentication-Results: mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=Or7LRukE; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::3:7 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: from out1.vger.email (depot.vger.email [IPv6:2620:137:e000::3:0]) by snail.vger.email (Postfix) with ESMTP id F073F816693E; Mon, 11 Sep 2023 21:31:50 -0700 (PDT) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.8 at snail.vger.email Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S235958AbjILDUL (ORCPT <rfc822;ruipengqi7@gmail.com> + 40 others); Mon, 11 Sep 2023 23:20:11 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:54432 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S242326AbjILDLX (ORCPT <rfc822;linux-kernel@vger.kernel.org>); Mon, 11 Sep 2023 23:11:23 -0400 Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 47E0EF5CCA; Mon, 11 Sep 2023 19:07:26 -0700 (PDT) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 9003EC433CC; Mon, 11 Sep 2023 20:53:44 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1694465628; bh=neueOhMV9geEct4AV1YpL7ChkhrLTiaS+cLVbXk27xY=; h=From:To:Cc:Subject:Date:From; b=Or7LRukEPtbnopW5zQv8hlRjYC08mBils0KkbrC1Wiu3cMfNw5WfzMHLeIx0r9isQ bFqKpb00XrMn0mvt6uSch0ybqDEPGn954VMwYdUJ0I67iwf1OBOaY9BUXmffdlEi3H Qhr2h+6b8a833sz5dyqv2+A3AjyQMZgP/J2V/nVbjDEU7kZ9AdTUQ6JLysXEx2RhNf fIiD9sfKQnaq8pptwKw+NBkjz6ZwZHC1IDUvbWG7O7aSToWuC+p0F8Zhe2tiGyqGIB SqjP0qD4c04vUbWVHX1yZFB9FUJHWEWeJuZLNksYwDAYcTeCVtqopqzsU2/4yUlFK6 tSd7lOl0WPilw== From: Arnd Bergmann <arnd@kernel.org> To: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>, Maxime Ripard <mripard@kernel.org>, Thomas Zimmermann <tzimmermann@suse.de>, David Airlie <airlied@gmail.com>, Daniel Vetter <daniel@ffwll.ch>, Greg Kroah-Hartman <gregkh@linuxfoundation.org>, Helge Deller <deller@gmx.de> Cc: Arnd Bergmann <arnd@arndb.de>, Geert Uytterhoeven <geert@linux-m68k.org>, =?utf-8?q?Christian_K=C3=B6nig?= <christian.koenig@amd.com>, Dave Airlie <airlied@redhat.com>, Javier Martinez Canillas <javierm@redhat.com>, Jim Cromie <jim.cromie@gmail.com>, Sam Ravnborg <sam@ravnborg.org>, Arthur Grillo <arthurgrillo@riseup.net>, dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, linux-fbdev@vger.kernel.org Subject: [PATCH] drm: fix up fbdev Kconfig defaults Date: Mon, 11 Sep 2023 22:52:53 +0200 Message-Id: <20230911205338.2385278-1-arnd@kernel.org> X-Mailer: git-send-email 2.39.2 MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Precedence: bulk List-ID: <linux-kernel.vger.kernel.org> X-Mailing-List: linux-kernel@vger.kernel.org X-Greylist: Sender passed SPF test, not delayed by milter-greylist-4.6.4 (snail.vger.email [0.0.0.0]); Mon, 11 Sep 2023 21:31:51 -0700 (PDT) X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1776815515924291332 X-GMAIL-MSGID: 1776835709215893459 |
Series |
drm: fix up fbdev Kconfig defaults
|
|
Commit Message
Arnd Bergmann
Sept. 11, 2023, 8:52 p.m. UTC
From: Arnd Bergmann <arnd@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@linux-m68k.org> Signed-off-by: Arnd Bergmann <arnd@arndb.de> --- drivers/gpu/drm/Kconfig | 2 +- drivers/video/console/Kconfig | 1 + drivers/video/fbdev/core/Kconfig | 2 +- 3 files changed, 3 insertions(+), 2 deletions(-)
Comments
On Tue, Sep 12, 2023, at 09:14, Geert Uytterhoeven wrote: > On Mon, Sep 11, 2023 at 10:53 PM Arnd Bergmann <arnd@kernel.org> wrote: >> --- 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. I think it still makes some sense though, as configs that have both DRM and FB enabled almost certainly want this enabled. >> 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"). Correct, this should restore the console on configs that accidentally lost it. The real problem here is much older, the assymetry between framebuffer-only configs (with console default off) and DRM configs (with console selected unconditionally) started back in 2009 with commit 6fcefd56f5060 ("drm/kms: fix kms helper license + Kconfig"). I think that was a mistake, but there is little we can do to fix that now without breaking users. The only alternative I can think of would be to default-enable or force-enable FRAMEBUFFER_CONSOLE for any config that includes both VT_CONSOLE and FB_CORE. This would increase defconfig builds for systems that currently only want CONFIG_FB for either FB_DEVICE or LOGO but don't care about FRAMEBUFFER_CONSOLE. I have no idea who uses such a config, but I think Javier previously said this was an important use case. >> 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. How? FB_DEVICE is a new config that was just split out from CONFIG_FB in 6.6-rc1, so nobody should have any defconfig that disables CONFIG_FB but relies on the FB_DEVICE default yet. Arnd
Geert Uytterhoeven <geert@linux-m68k.org> writes: Hello Geert, > Hi Arnd, > > On Mon, Sep 11, 2023 at 10:53 PM Arnd Bergmann <arnd@kernel.org> wrote: [...] >> --- 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. > Maybe default y if (FB_DEVICE || FRAMEBUFFER_CONSOLE) ? >> 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?). And there Maybe default y if (FB || DRM_FBDEV_EMULATION) ? > 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. > Right, specially if using DRM fbdev emulation since then the default will be different between v6.5 and v6.6 (that's what this patch tries to avoid). So probably we could keept that default as 'y'.
"Arnd Bergmann" <arnd@arndb.de> writes: > On Tue, Sep 12, 2023, at 09:14, Geert Uytterhoeven wrote: >> On Mon, Sep 11, 2023 at 10:53 PM Arnd Bergmann <arnd@kernel.org> wrote: [...] > > The only alternative I can think of would be to default-enable > or force-enable FRAMEBUFFER_CONSOLE for any config that includes > both VT_CONSOLE and FB_CORE. This would increase defconfig > builds for systems that currently only want CONFIG_FB for > either FB_DEVICE or LOGO but don't care about > FRAMEBUFFER_CONSOLE. I have no idea who uses such a config, > but I think Javier previously said this was an important > use case. > Yes, IMO that should be a possible combination. >>> 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. > > How? FB_DEVICE is a new config that was just split out from > CONFIG_FB in 6.6-rc1, so nobody should have any defconfig > that disables CONFIG_FB but relies on the FB_DEVICE default yet. > Ah, scratch my previous comment about making this default 'y' then. For some reasons I thought that FB_DEVICE was added in v6.5 but see now that commit 701d2054fa31 ("fbdev: Make support for userspace interfaces configurable") landed in v6.6-rc1: $ git tag --contains 701d2054fa31 | tail -1 v6.6-rc1
On Tue, Sep 12, 2023, at 09:48, Javier Martinez Canillas wrote: > Geert Uytterhoeven <geert@linux-m68k.org> writes: >> On Mon, Sep 11, 2023 at 10:53 PM Arnd Bergmann <arnd@kernel.org> wrote: >>> --- 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. >> > > Maybe default y if (FB_DEVICE || FRAMEBUFFER_CONSOLE) ? That wouldn't work unless we swap around the 'select DRM_CORE', which currently gets selected when DRM_FBDEV_EMULATION is turned on. >>> 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?). > > And there Maybe default y if (FB || DRM_FBDEV_EMULATION) ? That would be the same as a plain 'default y' based on the dependencies. We can definitely do that, but it does change the behavior for FB-only users. At the moment, we have 21 defconfig files in the kernel that enable CONFIG_FB but not CONFIG_FRAMEBUFFER_CONSOLE: $ git grep -l CONFIG_FB=y arch/*configs/ | xargs grep -L "FRAMEBUFFER_CONSOLE=\|DRM=" arch/arm/configs/am200epdkit_defconfig arch/arm/configs/assabet_defconfig arch/arm/configs/clps711x_defconfig arch/arm/configs/ep93xx_defconfig arch/arm/configs/footbridge_defconfig arch/arm/configs/h3600_defconfig arch/arm/configs/multi_v4t_defconfig arch/arm/configs/mvebu_v5_defconfig arch/arm/configs/pxa910_defconfig arch/arm/configs/s3c6400_defconfig arch/arm/configs/wpcm450_defconfig arch/microblaze/configs/mmu_defconfig arch/mips/configs/cobalt_defconfig arch/mips/configs/generic/board-ranchu.config arch/mips/configs/malta_qemu_32r6_defconfig arch/mips/configs/maltaaprp_defconfig arch/mips/configs/maltasmvp_defconfig arch/mips/configs/maltasmvp_eva_defconfig arch/mips/configs/maltaup_defconfig arch/sh/configs/r7785rp_defconfig arch/sh/configs/se7343_defconfig >> 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. >> > > Right, specially if using DRM fbdev emulation since then the default will > be different between v6.5 and v6.6 (that's what this patch tries to avoid). > > So probably we could keept that default as 'y'. I really don't want to start enabling this for configs that didn't have it in the past. Arnd
Hi Am 12.09.23 um 09:14 schrieb Geert Uytterhoeven: [...] >> --- 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. Would it make sense to make FRAMEBUFFER_CONSOLE an independent option and have FBDEV_EMULATION depend on it? Something like this: FRAMEBUFFER_CONSOLE depends on DRM || FB select FB_CORE FBDEV_EMULATION depends on DRM depends on FRAMEBUFFER_CONSOLE default y So if any graphics subsystems are enabled, FRAMEBUFFER_CONSOLE is select-able. But for DRM, FBDEV_EMULATION disables the console. That option remains more for historical reasons than actual usefulness. Best regards Thomas > >> 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 > -- 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)
On Tue, Sep 12, 2023, at 04:18, Geert Uytterhoeven wrote: > On Tue, Sep 12, 2023 at 10:11 AM Thomas Zimmermann <tzimmermann@suse.de> wrote: >> Am 12.09.23 um 09:14 schrieb Geert Uytterhoeven: >> [...] >> >> --- 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. >> >> Would it make sense to make FRAMEBUFFER_CONSOLE an independent option >> and have FBDEV_EMULATION depend on it? Something like this: >> >> FRAMEBUFFER_CONSOLE >> depends on DRM || FB >> select FB_CORE >> >> FBDEV_EMULATION >> depends on DRM >> depends on FRAMEBUFFER_CONSOLE >> default y > > Oops, now you can no longer have FBDEV_EMULATION without > FRAMEBUFFER_CONSOLE, which is useful to be able to enable > FB_DEVICE... > > And what's the point (if DRM is enabled) of having FB_CORE with > FBDEV_EMULATION disabled? I think we technically have the choice between selecting FB_CORE from all the providers (FB and DRM_FBDEV_EMULATION) or from all the consumers (FRAMEBUFFER_CONSOLE, FB_DEVICE and LOGO). We chose to have it the former way at the moment, and I think what Thomas suggests here is to change it to the latter. The downside of the current approach is that you can have pointless configuration with CONFIG_FB=y CONFIG_DRM=y CONFIG_DRM_FBDEV_EMULATION=y CONFIG_FRAMEBUFFER_CONSOLE=n CONFIG_FB_DEVICE=n CONFIG_LOGO=n where the fb_core module gets initialized but it is impossible for anything to draw on it. Another option we have would be to try to separate the Kconfig options for DRM and FB a little further, in anticipation of reducing the amount of shared code in the long run (a lot of FB code is built but never used when enabling console on DRM). So adding a new config DRM_CONSOLE bool "enable console on DRM devices" depends on DRM depends on VT_CONSOLE depends on !UML select FB_CORE select FRAMEBUFFER_CONSOLE_CORE # new helper sym select FRAMEBUFFER_CONSOLE_DETECT_PRIMARY default y would give us a path to minimize the shared code further, allowing the console code to be reused as before, but without having to pull in the code that is now only needed for FB_DEVICE. In this scenario, we'd still have CONFIG_DRM_FBDEV_EMULATION like config DRM_FBDEV_EMULATION bool "full emulation of fbdev layer for DRM" select FB_CORE select FB_DEVICE default FB # if enabled already, use it but only use that if we actually want FB_DEVICE. Arnd
Hi Am 11.09.23 um 22:52 schrieb Arnd Bergmann: > From: Arnd Bergmann <arnd@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@linux-m68k.org> > Signed-off-by: Arnd Bergmann <arnd@arndb.de> Acked-by: Thomas Zimmermann <tzimmermann@suse.de> > --- > 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)
Thomas Zimmermann <tzimmermann@suse.de> writes: > Hi > > Am 11.09.23 um 22:52 schrieb Arnd Bergmann: >> From: Arnd Bergmann <arnd@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@linux-m68k.org> >> Signed-off-by: Arnd Bergmann <arnd@arndb.de> > > Acked-by: Thomas Zimmermann <tzimmermann@suse.de> > Pushed to drm-misc (drm-misc-fixes). Thanks!
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