Hi
Am 21.08.24 um 16:16 schrieb Gustavo Sousa:
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 semantics of 'nomodeset' is a bit vague in this case. The option is
supposed to disable all of the driver in case there's a significant
problem with booting up. Other drivers do that. And users should be able
to specify 'nomodeset' and reliably get some display output; whether the
problem is in KMS or rendering.
I suggest to stick with that behavior, even if that disables other
functionality as well. Up to you.
Best regards
Thomas
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)