[Intel-gfx] [PATCH] drm: Add frame CRC debugfs files only for drivers that have CRTC

Jani Nikula jani.nikula at linux.intel.com
Thu Sep 29 07:54:06 UTC 2016


On Thu, 29 Sep 2016, Dhinakaran Pandiyan <dhinakaran.pandiyan at intel.com> 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 at intel.com>
> Cc: Tomeu Vizoso <tomeu.vizoso at collabora.com>
> Cc: Daniel Vetter <daniel.vetter at ffwll.ch>
> Cc: Emil Velikov <emil.velikov at collabora.com>

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


More information about the dri-devel mailing list