On Sat, Apr 26, 2025 at 08:52:40AM +0300, Dmitry Baryshkov wrote: > 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) ?
It'd return a bit earlier in that case, so there's that. On the other hand I think it becomes a little less clear what's going on. In the above, we already have the appropriate check in a central location and we reuse that here. I don't feel very strongly either way, though. Thierry > > > goto err_drm_client_init; > > } > > > > -- > > 2.49.0 > > > > -- > With best wishes > Dmitry
signature.asc
Description: PGP signature