On Thu, 29 Sep 2016, Dhinakaran Pandiyan <dhinakaran.pandiyan@xxxxxxxxx> wrote: > vgem does not do modeset, looping through non-existent CRTC's while > registering drm_minor in > > 'commit 48c787899882 ("drm: Add API for capturing frame CRCs")' > > caused kernel oops. So, let's add CRC debugfs files > only for those drivers that do modeset. > > Signed-off-by: Dhinakaran Pandiyan <dhinakaran.pandiyan@xxxxxxxxx> > Cc: Tomeu Vizoso <tomeu.vizoso@xxxxxxxxxxxxx> > Cc: Daniel Vetter <daniel.vetter@xxxxxxxx> > Cc: Emil Velikov <emil.velikov@xxxxxxxxxxxxx> Fixes: 48c787899882 ("drm: Add API for capturing frame CRCs") Dhinakaran, for future reference, please add the kernel oops to the commit messages. It'll help reviewing the patch and matching other bug reports to the fix. Tomeu, Emil, please review ASAP. This started oopsing all over the place in our CI... we'll need to start running pre-merge testing on patches on dri-devel too, like we do on intel-gfx. (Hint, for now, Cc'ing intel-gfx on drm patches will run our CI on it.) Thanks, Jani. > --- > drivers/gpu/drm/drm_drv.c | 8 ++++++-- > 1 file changed, 6 insertions(+), 2 deletions(-) > > diff --git a/drivers/gpu/drm/drm_drv.c b/drivers/gpu/drm/drm_drv.c > index 70d2543..294404f 100644 > --- a/drivers/gpu/drm/drm_drv.c > +++ b/drivers/gpu/drm/drm_drv.c > @@ -208,6 +208,7 @@ static int drm_minor_register(struct drm_device *dev, unsigned int type) > struct drm_crtc *crtc; > unsigned long flags; > int ret; > + bool is_modeset; > > DRM_DEBUG("\n"); > > @@ -221,7 +222,8 @@ static int drm_minor_register(struct drm_device *dev, unsigned int type) > return ret; > } > > - if (type == DRM_MINOR_PRIMARY) { > + is_modeset = drm_core_check_feature(dev, DRIVER_MODESET); > + if (type == DRM_MINOR_PRIMARY && is_modeset) { > drm_for_each_crtc(crtc, dev) { > ret = drm_debugfs_crtc_add(crtc); > if (ret) > @@ -255,12 +257,14 @@ static void drm_minor_unregister(struct drm_device *dev, unsigned int type) > struct drm_minor *minor; > struct drm_crtc *crtc; > unsigned long flags; > + bool is_modeset; > > minor = *drm_minor_get_slot(dev, type); > if (!minor || !device_is_registered(minor->kdev)) > return; > > - if (type == DRM_MINOR_PRIMARY) { > + is_modeset = drm_core_check_feature(dev, DRIVER_MODESET); > + if (type == DRM_MINOR_PRIMARY && is_modeset) { > drm_for_each_crtc(crtc, dev) > drm_debugfs_crtc_remove(crtc); > } -- Jani Nikula, Intel Open Source Technology Center _______________________________________________ dri-devel mailing list dri-devel@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/dri-devel