From 6c59c5bb51691ff0bd02ff2dac4ed6878b2aff82 Mon Sep 17 00:00:00 2001 From: Maarten Lankhorst Date: Wed, 10 Aug 2016 12:46:23 +0200 Subject: [PATCH 1/1] FROMLIST: drm/core: Reuse the reserved member in drm_event_vblank for crtc_id. When doing a atomic commit affecting multiple crtc's, multiple events are generated. The user_data member does not allow you to distinguish, because they all have the same pointer. I've chosen to use crtc_id, because using pipe would create ambiguity when pipe = 0. A test for != 0 is easier to implement, and crtc_id will never be 0. Change-Id: Ie2daba50f711f298872f15498b8d46dedb38c0ff Signed-off-by: Maarten Lankhorst Cc: David Airlie Cc: Daniel Stone Signed-off-by: Mark Yao (am from https://patchwork.kernel.org/patch/9272895/) --- drivers/gpu/drm/drm_irq.c | 2 ++ include/uapi/drm/drm.h | 2 +- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/drivers/gpu/drm/drm_irq.c b/drivers/gpu/drm/drm_irq.c index 1fe14579e8c9..c8006fb47c7a 100644 --- a/drivers/gpu/drm/drm_irq.c +++ b/drivers/gpu/drm/drm_irq.c @@ -1101,6 +1101,7 @@ EXPORT_SYMBOL(drm_arm_vblank_event); void drm_crtc_arm_vblank_event(struct drm_crtc *crtc, struct drm_pending_vblank_event *e) { + e->event.crtc_id = crtc->base.id; drm_arm_vblank_event(crtc->dev, drm_crtc_index(crtc), e); } EXPORT_SYMBOL(drm_crtc_arm_vblank_event); @@ -1147,6 +1148,7 @@ EXPORT_SYMBOL(drm_send_vblank_event); void drm_crtc_send_vblank_event(struct drm_crtc *crtc, struct drm_pending_vblank_event *e) { + e->event.crtc_id = crtc->base.id; drm_send_vblank_event(crtc->dev, drm_crtc_index(crtc), e); } EXPORT_SYMBOL(drm_crtc_send_vblank_event); diff --git a/include/uapi/drm/drm.h b/include/uapi/drm/drm.h index 3b01fb86ca8e..84a9d348a4b6 100644 --- a/include/uapi/drm/drm.h +++ b/include/uapi/drm/drm.h @@ -834,7 +834,7 @@ struct drm_event_vblank { __u32 tv_sec; __u32 tv_usec; __u32 sequence; - __u32 reserved; + __u32 crtc_id; /* 0 on older kernels that do not support this */ }; /* typedef area */ -- 2.34.1