Skip to content

Commit cce91f2

Browse files
thierryredinglumag
authored andcommitted
drm/fbdev-client: Skip DRM clients if modesetting is absent
Recent generations of Tegra have moved the display components outside of host1x, leading to a device that has no CRTCs attached and hence doesn't support any of the modesetting functionality. When this is detected, the driver clears the DRIVER_MODESET and DRIVER_ATOMIC flags for the device. Unfortunately, this causes the following errors during boot: [ 15.418958] ERR KERN drm drm: [drm] *ERROR* Failed to register client: -95 [ 15.425311] WARNING KERN drm drm: [drm] Failed to set up DRM client; error -95 These originate from the fbdev client checking for the presence of the DRIVER_MODESET flag and returning -EOPNOTSUPP. However, if a driver does not support DRIVER_MODESET this is entirely expected and the error isn't helpful. Prevent this misleading error message by setting up the DRM clients only if modesetting is enabled. Changes in v2: - use DRIVER_MODESET check to avoid registering any clients Reported-by: Jonathan Hunter <jonathanh@nvidia.com> Signed-off-by: Thierry Reding <treding@nvidia.com> Acked-by: Jon Hunter <jonathanh@nvidia.com> Tested-by: Jon Hunter <jonathanh@nvidia.com> Reviewed-by: Thomas Zimmermann <tzimmermann@suse.de> Link: https://lore.kernel.org/r/20250613122838.2082334-1-thierry.reding@gmail.com Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@oss.qualcomm.com>
1 parent 4081868 commit cce91f2

1 file changed

Lines changed: 5 additions & 0 deletions

File tree

drivers/gpu/drm/clients/drm_client_setup.c

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44

55
#include <drm/clients/drm_client_setup.h>
66
#include <drm/drm_device.h>
7+
#include <drm/drm_drv.h>
78
#include <drm/drm_fourcc.h>
89
#include <drm/drm_print.h>
910

@@ -33,6 +34,10 @@ MODULE_PARM_DESC(active,
3334
*/
3435
void drm_client_setup(struct drm_device *dev, const struct drm_format_info *format)
3536
{
37+
if (!drm_core_check_feature(dev, DRIVER_MODESET)) {
38+
drm_dbg(dev, "driver does not support mode-setting, skipping DRM clients\n");
39+
return;
40+
}
3641

3742
#ifdef CONFIG_DRM_FBDEV_EMULATION
3843
if (!strcmp(drm_client_default, "fbdev")) {

0 commit comments

Comments
 (0)