[Devel] [PATCH vz10 v2] drm: decline the device with -ENODEV when modesetting is off
Konstantin Khorenko
khorenko at virtuozzo.com
Mon Aug 24 20:03:29 MSK 2026
From: Eva Kurchatova <eva.kurchatova at virtuozzo.com>
Our kernels disable modesetting by default, see commit 7932a11226c8
("drm: Disable modeset by default"), so on a machine that was not booted
with "modeset" every KMS driver declines the device it was offered.
Almost all of them report -ENODEV in such case, which really_probe()
reports as "rejects match" at debug level. virtio_gpu and amdgpu return
-EINVAL instead, which the same function reports as
virtio_gpu virtio0: probe with driver virtio_gpu failed with error -22
at error level, for a device the driver was never going to drive. It is
the only device error in the log of an otherwise healthy machine, and
the devices/error_logs selftest reports it, correctly.
Return -ENODEV, as the other drivers do. Nothing else changes: the probe
still does not happen and no drm device appears.
Fixes: 7932a11226c8 ("drm: Disable modeset by default")
https://virtuozzo.atlassian.net/browse/VSTOR-139680
Feature: fix drivers
Signed-off-by: Eva Kurchatova <eva.kurchatova at virtuozzo.com>
Signed-off-by: Konstantin Khorenko <khorenko at virtuozzo.com>
---
Changes in v2:
- fix amdgpu as well. It has the same -EINVAL after the same
drm_firmware_drivers_only() check, so on a machine with an AMD card it
produces the same error level message. virtio_gpu was not the only
driver out of line.
- drop the driver counts from the commit message. The exact numbers
depend on how one counts, since some drivers call the helper without a
return next to it, and they go stale with every new driver.
- subject: drm/virtio -> drm, the patch is no longer about one driver.
- add a Fixes: tag, and the "commit" before the referenced sha1 that
checkpatch asks for.
drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c | 2 +-
drivers/gpu/drm/virtio/virtgpu_drv.c | 4 ++--
2 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c
index 7333e19291cf..2e1e77380f50 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c
@@ -2325,7 +2325,7 @@ static int amdgpu_pci_probe(struct pci_dev *pdev,
if ((pdev->class >> 8) == PCI_CLASS_DISPLAY_VGA ||
(pdev->class >> 8) == PCI_CLASS_DISPLAY_OTHER) {
if (drm_firmware_drivers_only() && amdgpu_modeset == -1)
- return -EINVAL;
+ return -ENODEV;
}
/* skip devices which are owned by radeon */
diff --git a/drivers/gpu/drm/virtio/virtgpu_drv.c b/drivers/gpu/drm/virtio/virtgpu_drv.c
index 71c6ccad4b99..c9deef9f8af0 100644
--- a/drivers/gpu/drm/virtio/virtgpu_drv.c
+++ b/drivers/gpu/drm/virtio/virtgpu_drv.c
@@ -76,10 +76,10 @@ static int virtio_gpu_probe(struct virtio_device *vdev)
int ret;
if (drm_firmware_drivers_only() && virtio_gpu_modeset == -1)
- return -EINVAL;
+ return -ENODEV;
if (virtio_gpu_modeset == 0)
- return -EINVAL;
+ return -ENODEV;
/*
* The virtio-gpu device is a virtual device that doesn't have DMA
--
2.47.1
More information about the Devel
mailing list