From: Thomas Zimmermann <tzimmermann@suse.de>
To: Helge Deller <deller@gmx.de>, daniel@ffwll.ch, javierm@redhat.com
Cc: linux-fbdev@vger.kernel.org, dri-devel@lists.freedesktop.org
Subject: Re: [PATCH 2/2] fbdev: Add support for the nomodeset kernel parameter
Date: Tue, 8 Nov 2022 09:16:21 +0100 [thread overview]
Message-ID: <dfa83c75-4062-93ee-380c-3e0e4f41c448@suse.de> (raw)
In-Reply-To: <d21a0a0d-22fb-99bf-0d29-75b1fe1db677@gmx.de>
[-- Attachment #1.1: Type: text/plain, Size: 5213 bytes --]
Hi
Am 07.11.22 um 21:46 schrieb Helge Deller:
> On 11/7/22 16:30, Thomas Zimmermann wrote:
>> Hi
>>
>> Am 07.11.22 um 14:57 schrieb Helge Deller:
>>> On 11/7/22 11:49, Thomas Zimmermann wrote:
>>>> 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.
>>>
>>> Nah... it's probably not broken, but you want it disabled in order
>>> to use the DRM driver instead?
>>
>> No, it's really for broken native drivers or any kind of problematic
>> modesetting. Most DRM drivers already respect the nomodeset option
>> and won't load when given. All you'd get are the generic drivers,
>> such as simpledrm, efifb or simplefb.
>>
>> There are better options of configuring video output on the kernel
>> command line. But as graphics output is such a fundamental feature
>> to using a computer, we found that a simple and easy option to
>> workaround erroneous systems would benefit DRM users; hence the
>> nomodeset parameter.
>>
>> As fbdev drivers also do modesetting, supporting the parameter simply
>> unifies the behavior.
>
> Ok.
>
>>>> 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.
>>>
>>> Ok.
>>>
>>>> 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.
>>>
>>>> diff --git a/drivers/video/fbdev/aty/aty128fb.c
>>>> b/drivers/video/fbdev/aty/aty128fb.c
>>>> index 57e398fe7a81c..1a26ac2865d65 100644
>>>> --- a/drivers/video/fbdev/aty/aty128fb.c
>>>> +++ b/drivers/video/fbdev/aty/aty128fb.c
>>>> @@ -2503,7 +2504,12 @@ static int aty128fb_init(void)
>>>> {
>>>> #ifndef MODULE
>>>> char *option = NULL;
>>>> +#endif
>>>> +
>>>> + if (video_firmware_drivers_only())
>>>> + return -ENODEV;
>>>
>>> I think it makes sense to give at least some info, why a specific
>>> driver wasn't loaded, e.g. something like this kernel message:
>>> aty128fb: Driver disabled due to "nomodeset" kernel parameter.
>>>
>>> If you e.g. change the function video_firmware_drivers_only()
>>> to become video_firmware_drivers_only(const char *drivername)
>>> then you could print such a message in video_firmware_drivers_only()
>>
>> Well, we do have such a message in disable_modeset() already. [1]
>> [1]
>> https://elixir.bootlin.com/linux/latest/source/drivers/gpu/drm/drm_nomodeset.c#L18
>
> Yes, I saw it, but that message quite generic.
> If for example my atyfb doesn't show up, I would grep dmesg for "aty" and
> not "nomodeset"...
I'd like to add this to fbdev or the drivers instead of the video
helper. On the DRM side, it works a a bit different and I think I have a
use case for the function that does not directly involve disabling
drivers. See below for a proposal.
>
>
>>> And I don't like very much the name of function
>>> video_firmware_drivers_only(),
>>> but don't have any other better idea right now either...
>>
>> It's part of the 'video' module, hence the prefix. The 'nomodeset'
>> option used to be implemented in several DRM drivers. It's an awful
>> name, but we didn't want to remove it or introduce a new one for the
>> same feature. So we kept nomodeset for all of DRM. Then we started
>> bikeshedding the function name that returns the setting. And
>> firmware-drivers-only is the best description of what is happening
>> here. So that's how the name happend.
>
> video_modesetting_disabled() ?
> (Just an idea)
The term modesetting is misleading and we had this problem with
'nomodeset' already. There are still plenty of drivers with mode
setting, such as the USB-based ones. It's also not so easy on the DRM
side, where a modesetting operation is one of many effects of loading an
atomic state. Maybe let's leave the name is for now? If we ever find
the perfect name, it's a simple rename with sed.
My proposal would be to add a little helper to fbdev that includes your
suggestions:
bool fb_modesetting_disabled(const char *drvname)
{
fwonly = video_firmware_drivers_only()
if (fbonly && drvname)
pr_warn("")
return fbonly;
}
Drivers can use that for the test.
Best regards
Thomas
>
> Helge
--
Thomas Zimmermann
Graphics Driver Developer
SUSE Software Solutions Germany GmbH
Maxfeldstr. 5, 90409 Nürnberg, Germany
(HRB 36809, AG Nürnberg)
Geschäftsführer: Ivo Totev
[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 840 bytes --]
next prev parent reply other threads:[~2022-11-08 8:16 UTC|newest]
Thread overview: 15+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-11-07 10:49 [PATCH 0/2] video/fbdev: Support 'nomodeset' in PCI drivers Thomas Zimmermann
2022-11-07 10:49 ` [PATCH 1/2] drm: Move nomodeset kernel parameter to drivers/video Thomas Zimmermann
2022-11-11 9:28 ` Javier Martinez Canillas
2022-11-11 12:37 ` Thomas Zimmermann
2022-11-11 13:06 ` Thomas Zimmermann
2022-11-07 10:49 ` [PATCH 2/2] fbdev: Add support for the nomodeset kernel parameter Thomas Zimmermann
2022-11-07 13:57 ` Helge Deller
2022-11-07 15:30 ` Thomas Zimmermann
2022-11-07 20:46 ` Helge Deller
2022-11-08 8:16 ` Thomas Zimmermann [this message]
2022-11-11 9:49 ` Javier Martinez Canillas
2022-11-11 10:49 ` Helge Deller
2022-11-11 11:42 ` Thomas Zimmermann
2022-11-11 13:27 ` Helge Deller
2022-11-11 9:42 ` Javier Martinez Canillas
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=dfa83c75-4062-93ee-380c-3e0e4f41c448@suse.de \
--to=tzimmermann@suse.de \
--cc=daniel@ffwll.ch \
--cc=deller@gmx.de \
--cc=dri-devel@lists.freedesktop.org \
--cc=javierm@redhat.com \
--cc=linux-fbdev@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).