Message ID | 1452548477-15905-15-git-send-email-daniel.vetter@ffwll.ch (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Am Montag, den 11.01.2016, 22:41 +0100 schrieb Daniel Vetter: > So this one is special, since it tries to prevent races when userspace > crashes simply by disabling the vblank machinery. Well except that imx > always has vblanks enabled, and the disable_vblank hook actually just > tries to cancel a pending pageflip. Without any locking whatsoever. Of > course this is wrong, since it'll result in the hw not actually > displaying what drm thinks is the current frontbuffer. > > Well since the core takes care of the disappearing DRM fd now. So we > can nuke all this confused code without ill side-effects. > > Someone else needs to audit the locking for ->newfb and > ->page_flip_event and fix it up. Common approach is to reuse > dev->event_lock for this. > > Cc: Sascha Hauer <s.hauer@pengutronix.de> > Cc: Philipp Zabel <p.zabel@pengutronix.de> > Acked-by: Daniel Stone <daniels@collabora.com> > Reviewed-by: Alex Deucher <alexander.deucher@amd.com> > Signed-off-by: Daniel Vetter <daniel.vetter@intel.com> Acked-by: Philipp Zabel <p.zabel@pengutronix.de> regards Philipp
diff --git a/drivers/gpu/drm/imx/imx-drm-core.c b/drivers/gpu/drm/imx/imx-drm-core.c index 7be7ac808304..ff94ca4a2c1e 100644 --- a/drivers/gpu/drm/imx/imx-drm-core.c +++ b/drivers/gpu/drm/imx/imx-drm-core.c @@ -171,18 +171,6 @@ static void imx_drm_disable_vblank(struct drm_device *drm, unsigned int pipe) imx_drm_crtc->imx_drm_helper_funcs.disable_vblank(imx_drm_crtc->crtc); } -static void imx_drm_driver_preclose(struct drm_device *drm, - struct drm_file *file) -{ - int i; - - if (!file->is_master) - return; - - for (i = 0; i < MAX_CRTC; i++) - imx_drm_disable_vblank(drm, i); -} - static const struct file_operations imx_drm_driver_fops = { .owner = THIS_MODULE, .open = drm_open, @@ -462,7 +450,6 @@ static struct drm_driver imx_drm_driver = { .load = imx_drm_driver_load, .unload = imx_drm_driver_unload, .lastclose = imx_drm_driver_lastclose, - .preclose = imx_drm_driver_preclose, .set_busid = drm_platform_set_busid, .gem_free_object = drm_gem_cma_free_object, .gem_vm_ops = &drm_gem_cma_vm_ops, diff --git a/drivers/gpu/drm/imx/ipuv3-crtc.c b/drivers/gpu/drm/imx/ipuv3-crtc.c index 30a57185bdb4..846b5f558897 100644 --- a/drivers/gpu/drm/imx/ipuv3-crtc.c +++ b/drivers/gpu/drm/imx/ipuv3-crtc.c @@ -285,10 +285,6 @@ static int ipu_enable_vblank(struct drm_crtc *crtc) static void ipu_disable_vblank(struct drm_crtc *crtc) { - struct ipu_crtc *ipu_crtc = to_ipu_crtc(crtc); - - ipu_crtc->page_flip_event = NULL; - ipu_crtc->newfb = NULL; } static int ipu_set_interface_pix_fmt(struct drm_crtc *crtc,