On Sat, Apr 12, 2025 at 09:00:47AM +0200, Thierry Reding wrote: > From: Thierry Reding <tred...@nvidia.com> > > 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. > > One solution would have been to conditionally call drm_client_setup() > only if modesetting is supported. This seems a bit redundant, however, > and could further complicate things if ever any DRM clients are added > that do not rely on modesetting. > > Instead, simply add an extra check to ignore this expected error and > skip the fbdev client registration. > > Reported-by: Jonathan Hunter <jonath...@nvidia.com> > Signed-off-by: Thierry Reding <tred...@nvidia.com> > --- > drivers/gpu/drm/clients/drm_fbdev_client.c | 6 +++++- > 1 file changed, 5 insertions(+), 1 deletion(-) > > diff --git a/drivers/gpu/drm/clients/drm_fbdev_client.c > b/drivers/gpu/drm/clients/drm_fbdev_client.c > index f894ba52bdb5..8c8552ed912e 100644 > --- a/drivers/gpu/drm/clients/drm_fbdev_client.c > +++ b/drivers/gpu/drm/clients/drm_fbdev_client.c > @@ -152,7 +152,11 @@ int drm_fbdev_client_setup(struct drm_device *dev, const > struct drm_format_info > > ret = drm_client_init(dev, &fb_helper->client, "fbdev", > &drm_fbdev_client_funcs); > if (ret) { > - drm_err(dev, "Failed to register client: %d\n", ret); > + if (ret != -EOPNOTSUPP) > + drm_err(dev, "Failed to register client: %d\n", ret); > + else > + ret = 0; > +
Wouldn't it be better to explicitly return 0 in the beginning of the function if !drm_core_check_feature(dev, DRIVER_MODESET) ? > goto err_drm_client_init; > } > > -- > 2.49.0 > -- With best wishes Dmitry