On Wed, Jun 08, 2016 at 02:19:13PM +0200, Daniel Vetter wrote: > This is now handled by the core, drivers can totally ignore lifetime > issues of drm events. > > Cc: Tomeu Vizoso <tomeu.vizoso@xxxxxxxxxxxxx> > Cc: Mark yao <mark.yao@xxxxxxxxxxxxxx> > Tested-by: Tomeu Vizoso <tomeu.vizoso@xxxxxxxxxxxxx> > Reviewed-by: Tomeu Vizoso <tomeu.vizoso@xxxxxxxxxxxxx> > Signed-off-by: Daniel Vetter <daniel.vetter@xxxxxxxxx> Ok, I merged up to this one, excluding i915 code (that needs a tiny bit of polish, plus close inspection by CI). Thanks to everyone who helped testing and provided feedback on this work. -Daniel > --- > drivers/gpu/drm/rockchip/rockchip_drm_drv.c | 22 ---------------------- > drivers/gpu/drm/rockchip/rockchip_drm_drv.h | 1 - > drivers/gpu/drm/rockchip/rockchip_drm_vop.c | 20 -------------------- > 3 files changed, 43 deletions(-) > > diff --git a/drivers/gpu/drm/rockchip/rockchip_drm_drv.c b/drivers/gpu/drm/rockchip/rockchip_drm_drv.c > index 2fac6799ceb2..2251121343e6 100644 > --- a/drivers/gpu/drm/rockchip/rockchip_drm_drv.c > +++ b/drivers/gpu/drm/rockchip/rockchip_drm_drv.c > @@ -257,27 +257,6 @@ static int rockchip_drm_unload(struct drm_device *drm_dev) > return 0; > } > > -static void rockchip_drm_crtc_cancel_pending_vblank(struct drm_crtc *crtc, > - struct drm_file *file_priv) > -{ > - struct rockchip_drm_private *priv = crtc->dev->dev_private; > - int pipe = drm_crtc_index(crtc); > - > - if (pipe < ROCKCHIP_MAX_CRTC && > - priv->crtc_funcs[pipe] && > - priv->crtc_funcs[pipe]->cancel_pending_vblank) > - priv->crtc_funcs[pipe]->cancel_pending_vblank(crtc, file_priv); > -} > - > -static void rockchip_drm_preclose(struct drm_device *dev, > - struct drm_file *file_priv) > -{ > - struct drm_crtc *crtc; > - > - list_for_each_entry(crtc, &dev->mode_config.crtc_list, head) > - rockchip_drm_crtc_cancel_pending_vblank(crtc, file_priv); > -} > - > void rockchip_drm_lastclose(struct drm_device *dev) > { > struct rockchip_drm_private *priv = dev->dev_private; > @@ -303,7 +282,6 @@ static struct drm_driver rockchip_drm_driver = { > DRIVER_PRIME | DRIVER_ATOMIC, > .load = rockchip_drm_load, > .unload = rockchip_drm_unload, > - .preclose = rockchip_drm_preclose, > .lastclose = rockchip_drm_lastclose, > .get_vblank_counter = drm_vblank_no_hw_counter, > .enable_vblank = rockchip_drm_crtc_enable_vblank, > diff --git a/drivers/gpu/drm/rockchip/rockchip_drm_drv.h b/drivers/gpu/drm/rockchip/rockchip_drm_drv.h > index 7684503ff765..005634484441 100644 > --- a/drivers/gpu/drm/rockchip/rockchip_drm_drv.h > +++ b/drivers/gpu/drm/rockchip/rockchip_drm_drv.h > @@ -40,7 +40,6 @@ struct rockchip_crtc_funcs { > int (*enable_vblank)(struct drm_crtc *crtc); > void (*disable_vblank)(struct drm_crtc *crtc); > void (*wait_for_update)(struct drm_crtc *crtc); > - void (*cancel_pending_vblank)(struct drm_crtc *crtc, struct drm_file *file_priv); > }; > > struct rockchip_crtc_state { > diff --git a/drivers/gpu/drm/rockchip/rockchip_drm_vop.c b/drivers/gpu/drm/rockchip/rockchip_drm_vop.c > index d2932478ff59..8cd840f602b7 100644 > --- a/drivers/gpu/drm/rockchip/rockchip_drm_vop.c > +++ b/drivers/gpu/drm/rockchip/rockchip_drm_vop.c > @@ -894,30 +894,10 @@ static void vop_crtc_wait_for_update(struct drm_crtc *crtc) > WARN_ON(!wait_for_completion_timeout(&vop->wait_update_complete, 100)); > } > > -static void vop_crtc_cancel_pending_vblank(struct drm_crtc *crtc, > - struct drm_file *file_priv) > -{ > - struct drm_device *drm = crtc->dev; > - struct vop *vop = to_vop(crtc); > - struct drm_pending_vblank_event *e; > - unsigned long flags; > - > - spin_lock_irqsave(&drm->event_lock, flags); > - e = vop->event; > - if (e && e->base.file_priv == file_priv) { > - vop->event = NULL; > - > - kfree(&e->base); > - file_priv->event_space += sizeof(e->event); > - } > - spin_unlock_irqrestore(&drm->event_lock, flags); > -} > - > static const struct rockchip_crtc_funcs private_crtc_funcs = { > .enable_vblank = vop_crtc_enable_vblank, > .disable_vblank = vop_crtc_disable_vblank, > .wait_for_update = vop_crtc_wait_for_update, > - .cancel_pending_vblank = vop_crtc_cancel_pending_vblank, > }; > > static bool vop_crtc_mode_fixup(struct drm_crtc *crtc, > -- > 2.8.1 > -- Daniel Vetter Software Engineer, Intel Corporation http://blog.ffwll.ch _______________________________________________ dri-devel mailing list dri-devel@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/dri-devel