[PATCH] drm/xe: Support 'nomodeset' kernel command-line option

Lucas De Marchi lucas.demarchi at intel.com
Tue Aug 27 03:59:51 UTC 2024


On Wed, Aug 21, 2024 at 04:48:23PM GMT, Thomas Zimmermann wrote:
>Hi
>
>Am 21.08.24 um 16:29 schrieb Jani Nikula:
>>On Wed, 21 Aug 2024, Gustavo Sousa <gustavo.sousa at intel.com> wrote:
>>>Quoting Thomas Zimmermann (2024-08-21 10:56:59-03:00)
>>>>Setting 'nomodeset' on the kernel command line disables all graphics
>>>>drivers with modesetting capabilities; leaving only firmware drivers,
>>>>such as simpledrm or efifb.
>>>>
>>>>Most DRM drivers automatically support 'nomodeset' via DRM's module
>>>>helper macros. In xe, which uses regular module_init(), manually call
>>>>drm_firmware_drivers_only() to test for 'nomodeset'. Do not register
>>>>the driver if set.
>>>>
>>>>Signed-off-by: Thomas Zimmermann <tzimmermann at suse.de>
>>>>---
>>>>drivers/gpu/drm/xe/xe_module.c | 5 +++++
>>>>1 file changed, 5 insertions(+)
>>>>
>>>>diff --git a/drivers/gpu/drm/xe/xe_module.c b/drivers/gpu/drm/xe/xe_module.c
>>>>index 923460119cec..60fb7dd26903 100644
>>>>--- a/drivers/gpu/drm/xe/xe_module.c
>>>>+++ b/drivers/gpu/drm/xe/xe_module.c
>>>>@@ -8,6 +8,8 @@
>>>>#include <linux/init.h>
>>>>#include <linux/module.h>
>>>>
>>>>+#include <drm/drm_module.h>
>>>>+
>>>>#include "xe_drv.h"
>>>>#include "xe_hw_fence.h"
>>>>#include "xe_pci.h"
>>>>@@ -92,6 +94,9 @@ static int __init xe_init(void)
>>>>{
>>>>         int err, i;
>>>>
>>>>+        if (drm_firmware_drivers_only())
>>>>+                return -ENODEV;
>>>>+
>>>Hm... But what if xe is to be used only for compute or render? Shouldn't
>>>we handle this somewhere else?
>>The question becomes, what does "nomodeset" really mean here?
>
>That function's name 'firmware drivers only' says it better than the 
>option's name. We used 'nomodeset', because it was there already and 
>had the correct semantics.

agreed this should be on a module-level to maintain the behavior already
used. If we were not maintaining that behavior, then we should probably
not use "nomodeset" and choose something else :).

Also we already have the other 2 as module params:  probe_display and
disable_display, with driver still registering as a drm driver, but
leaving the display part out.

Thomas, are you going to send a v2 to use the init table?

thanks
Lucas De Marchi

>
>>
>>See what i915 does in i915_module.c.
>
>i915 and the other drivers for PCI-based hardware don't load at all. 
>Drivers for external displays (e.g., SPI, USB) ignore nomodeset, as 
>these displays are not initialized by firmware.
>
>Best regards
>Thomas
>
>>
>>Cc: Sima.
>>
>>BR,
>>Jani.
>>
>>
>>
>>>Taking a quick look, xe_display_probe() might be a good candidate?
>>>
>>>--
>>>Gustavo Sousa
>>>
>>>>         for (i = 0; i < ARRAY_SIZE(init_funcs); i++) {
>>>>                 err = init_funcs[i].init();
>>>>                 if (err) {
>>>>-- 
>>>>2.46.0
>>>>
>
>-- 
>--
>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)
>


More information about the dri-devel mailing list