On Wed, 21 Aug 2024, Gustavo Sousa <gustavo.sousa@xxxxxxxxx> 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@xxxxxxx> >>--- >> 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? See what i915 does in i915_module.c. 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 >> -- Jani Nikula, Intel