Hi Daniel, Thank you for the patch. On Sunday 10 January 2016 23:26:06 Daniel Vetter wrote: > Again since the drm core takes care of event unlinking/disarming this > is now just needless code. > > v2: Fixup misplaced hunk. > > Cc: Laurent Pinchart <laurent.pinchart@xxxxxxxxxxxxxxxx> > Signed-off-by: Daniel Vetter <daniel.vetter@xxxxxxxxx> This looks good to me assuming that the mechanism works in the core, which looks like magic to me at the moment :-) After closing the "[PATCH] drm: Clean up pending events in the core" discussion (and assuming the conclusion is that is works), Reviewed-by: Laurent Pinchart <laurent.pinchart@xxxxxxxxxxxxxxxx> > --- > drivers/gpu/drm/shmobile/shmob_drm_crtc.c | 20 -------------------- > drivers/gpu/drm/shmobile/shmob_drm_crtc.h | 2 -- > drivers/gpu/drm/shmobile/shmob_drm_drv.c | 8 -------- > 3 files changed, 30 deletions(-) > > diff --git a/drivers/gpu/drm/shmobile/shmob_drm_crtc.c > b/drivers/gpu/drm/shmobile/shmob_drm_crtc.c index > b80802f55143..de7959a60774 100644 > --- a/drivers/gpu/drm/shmobile/shmob_drm_crtc.c > +++ b/drivers/gpu/drm/shmobile/shmob_drm_crtc.c > @@ -438,26 +438,6 @@ static const struct drm_crtc_helper_funcs > crtc_helper_funcs = { .mode_set_base = shmob_drm_crtc_mode_set_base, > }; > > -void shmob_drm_crtc_cancel_page_flip(struct shmob_drm_crtc *scrtc, > - struct drm_file *file) > -{ > - struct drm_pending_vblank_event *event; > - struct drm_device *dev = scrtc->crtc.dev; > - unsigned long flags; > - > - /* Destroy the pending vertical blanking event associated with the > - * pending page flip, if any, and disable vertical blanking interrupts. > - */ > - spin_lock_irqsave(&dev->event_lock, flags); > - event = scrtc->event; > - if (event && event->base.file_priv == file) { > - scrtc->event = NULL; > - event->base.destroy(&event->base); > - drm_vblank_put(dev, 0); > - } > - spin_unlock_irqrestore(&dev->event_lock, flags); > -} > - > void shmob_drm_crtc_finish_page_flip(struct shmob_drm_crtc *scrtc) > { > struct drm_pending_vblank_event *event; > diff --git a/drivers/gpu/drm/shmobile/shmob_drm_crtc.h > b/drivers/gpu/drm/shmobile/shmob_drm_crtc.h index > eddad6dcc88a..38ed4ff8aaf2 100644 > --- a/drivers/gpu/drm/shmobile/shmob_drm_crtc.h > +++ b/drivers/gpu/drm/shmobile/shmob_drm_crtc.h > @@ -47,8 +47,6 @@ struct shmob_drm_connector { > > int shmob_drm_crtc_create(struct shmob_drm_device *sdev); > void shmob_drm_crtc_enable_vblank(struct shmob_drm_device *sdev, bool > enable); -void shmob_drm_crtc_cancel_page_flip(struct shmob_drm_crtc > *scrtc, - struct drm_file *file); > void shmob_drm_crtc_finish_page_flip(struct shmob_drm_crtc *scrtc); > void shmob_drm_crtc_suspend(struct shmob_drm_crtc *scrtc); > void shmob_drm_crtc_resume(struct shmob_drm_crtc *scrtc); > diff --git a/drivers/gpu/drm/shmobile/shmob_drm_drv.c > b/drivers/gpu/drm/shmobile/shmob_drm_drv.c index 04e66e3751b4..7700ff172079 > 100644 > --- a/drivers/gpu/drm/shmobile/shmob_drm_drv.c > +++ b/drivers/gpu/drm/shmobile/shmob_drm_drv.c > @@ -200,13 +200,6 @@ done: > return ret; > } > > -static void shmob_drm_preclose(struct drm_device *dev, struct drm_file > *file) -{ > - struct shmob_drm_device *sdev = dev->dev_private; > - > - shmob_drm_crtc_cancel_page_flip(&sdev->crtc, file); > -} > - > static irqreturn_t shmob_drm_irq(int irq, void *arg) > { > struct drm_device *dev = arg; > @@ -266,7 +259,6 @@ static struct drm_driver shmob_drm_driver = { > > | DRIVER_PRIME, > > .load = shmob_drm_load, > .unload = shmob_drm_unload, > - .preclose = shmob_drm_preclose, > .set_busid = drm_platform_set_busid, > .irq_handler = shmob_drm_irq, > .get_vblank_counter = drm_vblank_no_hw_counter, -- Regards, Laurent Pinchart _______________________________________________ dri-devel mailing list dri-devel@xxxxxxxxxxxxxxxxxxxxx http://lists.freedesktop.org/mailman/listinfo/dri-devel