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

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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




[Index of Archives]     [Linux DRI Users]     [Linux Intel Graphics]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [XFree86]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [XFree86]
  Powered by Linux