drm: Remove drm_pending_event->pid
authorDaniel Vetter <daniel.vetter@ffwll.ch>
Wed, 8 Mar 2017 14:12:43 +0000 (15:12 +0100)
committerDaniel Vetter <daniel.vetter@ffwll.ch>
Tue, 14 Mar 2017 13:38:33 +0000 (14:38 +0100)
We might as well dump the drm_file pointer, that's about as useful
a cookie as the pid. Noticed while typing docs for drm_file and friends.

Since the only consumer of this is the tracepoints I think we can safely
change this - those tracepoints should not be uapi relevant at all. It
all goes back to

commit b9c2c9ae882f058084e13e339925dbf8d2d20271
Author: Jesse Barnes <jbarnes@virtuousgeek.org>
Date:   Thu Jul 1 16:48:09 2010 -0700

    drm: add per-event vblank event trace points

which doesn't give a special justification for using pid over a pointer.

Also note that the nouveau code setting it is entirely pointless:
Since this isn't a vblank event, it will never hit the vblank
tracepoints.

Cc: Ben Skeggs <bskeggs@redhat.com>
Reviewed-by: Sean Paul <seanpaul@chromium.org>
Reviewed-by: Liviu Dudau <Liviu.Dudau@arm.com>
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
Link: http://patchwork.freedesktop.org/patch/msgid/20170308141257.12119-11-daniel.vetter@ffwll.ch
drivers/gpu/drm/drm_irq.c
drivers/gpu/drm/drm_trace.h
drivers/gpu/drm/nouveau/nouveau_usif.c
include/drm/drm_file.h

index 1906723..9bdca69 100644 (file)
@@ -978,7 +978,7 @@ static void send_vblank_event(struct drm_device *dev,
        e->event.tv_sec = now->tv_sec;
        e->event.tv_usec = now->tv_usec;
 
-       trace_drm_vblank_event_delivered(e->base.pid, e->pipe,
+       trace_drm_vblank_event_delivered(e->base.file_priv, e->pipe,
                                         e->event.sequence);
 
        drm_send_event_locked(dev, &e->base);
@@ -1505,7 +1505,6 @@ static int drm_queue_vblank_event(struct drm_device *dev, unsigned int pipe,
        }
 
        e->pipe = pipe;
-       e->base.pid = current->pid;
        e->event.base.type = DRM_EVENT_VBLANK;
        e->event.base.length = sizeof(e->event);
        e->event.user_data = vblwait->request.signal;
@@ -1534,7 +1533,7 @@ static int drm_queue_vblank_event(struct drm_device *dev, unsigned int pipe,
        DRM_DEBUG("event on vblank count %u, current %u, crtc %u\n",
                  vblwait->request.sequence, seq, pipe);
 
-       trace_drm_vblank_event_queued(current->pid, pipe,
+       trace_drm_vblank_event_queued(file_priv, pipe,
                                      vblwait->request.sequence);
 
        e->event.sequence = vblwait->request.sequence;
index ce3c428..14c5a77 100644 (file)
@@ -24,36 +24,36 @@ TRACE_EVENT(drm_vblank_event,
 );
 
 TRACE_EVENT(drm_vblank_event_queued,
-           TP_PROTO(pid_t pid, int crtc, unsigned int seq),
-           TP_ARGS(pid, crtc, seq),
+           TP_PROTO(struct drm_file *file, int crtc, unsigned int seq),
+           TP_ARGS(file, crtc, seq),
            TP_STRUCT__entry(
-                   __field(pid_t, pid)
+                   __field(struct drm_file *, file)
                    __field(int, crtc)
                    __field(unsigned int, seq)
                    ),
            TP_fast_assign(
-                   __entry->pid = pid;
+                   __entry->file = file;
                    __entry->crtc = crtc;
                    __entry->seq = seq;
                    ),
-           TP_printk("pid=%d, crtc=%d, seq=%u", __entry->pid, __entry->crtc, \
+           TP_printk("file=%p, crtc=%d, seq=%u", __entry->file, __entry->crtc, \
                      __entry->seq)
 );
 
 TRACE_EVENT(drm_vblank_event_delivered,
-           TP_PROTO(pid_t pid, int crtc, unsigned int seq),
-           TP_ARGS(pid, crtc, seq),
+           TP_PROTO(struct drm_file *file, int crtc, unsigned int seq),
+           TP_ARGS(file, crtc, seq),
            TP_STRUCT__entry(
-                   __field(pid_t, pid)
+                   __field(struct drm_file *, file)
                    __field(int, crtc)
                    __field(unsigned int, seq)
                    ),
            TP_fast_assign(
-                   __entry->pid = pid;
+                   __entry->file = file;
                    __entry->crtc = crtc;
                    __entry->seq = seq;
                    ),
-           TP_printk("pid=%d, crtc=%d, seq=%u", __entry->pid, __entry->crtc, \
+           TP_printk("file=%p, crtc=%d, seq=%u", __entry->file, __entry->crtc, \
                      __entry->seq)
 );
 
index afbdbed..9dc10b1 100644 (file)
@@ -211,7 +211,6 @@ usif_notify_get(struct drm_file *f, void *data, u32 size, void *argv, u32 argc)
                goto done;
        ntfy->p->base.event = &ntfy->p->e.base;
        ntfy->p->base.file_priv = f;
-       ntfy->p->base.pid = current->pid;
        ntfy->p->e.base.type = DRM_NOUVEAU_EVENT_NVIF;
        ntfy->p->e.base.length = sizeof(ntfy->p->e.base) + ntfy->reply;
 
index d1a25cc..4e34739 100644 (file)
@@ -75,8 +75,6 @@ struct drm_pending_event {
        struct list_head link;
        struct list_head pending_link;
        struct drm_file *file_priv;
-       pid_t pid; /* pid of requester, no guarantee it's valid by the time
-                     we deliver the event, for tracing only */
 };
 
 /** File private data */