struct drm_i915_gem_request *rq,
                          const char *prefix)
 {
-       struct pid *pid = rq->ctx->pid;
-       struct task_struct *task;
-
-       rcu_read_lock();
-       task = pid ? pid_task(pid, PIDTYPE_PID) : NULL;
-       seq_printf(m, "%s%x [%x:%x] @ %d: %s [%d]\n", prefix,
+       seq_printf(m, "%s%x [%x:%x] @ %d: %s\n", prefix,
                   rq->global_seqno, rq->ctx->hw_id, rq->fence.seqno,
                   jiffies_to_msecs(jiffies - rq->emitted_jiffies),
-                  task ? task->comm : "<unknown>",
-                  task ? task->pid : -1);
-       rcu_read_unlock();
+                  rq->timeline->common->name);
 }
 
 static int i915_gem_request_info(struct seq_file *m, void *data)
 
                __i915_gem_object_release_unless_active(ce->state->obj);
        }
 
+       kfree(ctx->name);
        put_pid(ctx->pid);
        list_del(&ctx->link);
 
        }
 
        /* Default context will never have a file_priv */
-       if (file_priv != NULL) {
+       ret = DEFAULT_CONTEXT_HANDLE;
+       if (file_priv) {
                ret = idr_alloc(&file_priv->context_idr, ctx,
                                DEFAULT_CONTEXT_HANDLE, 0, GFP_KERNEL);
                if (ret < 0)
                        goto err_out;
-       } else
-               ret = DEFAULT_CONTEXT_HANDLE;
+       }
+       ctx->user_handle = ret;
 
        ctx->file_priv = file_priv;
-       if (file_priv)
+       if (file_priv) {
                ctx->pid = get_task_pid(current, PIDTYPE_PID);
+               ctx->name = kasprintf(GFP_KERNEL, "%s[%d]/%x",
+                                     current->comm,
+                                     pid_nr(ctx->pid),
+                                     ctx->user_handle);
+               if (!ctx->name) {
+                       ret = -ENOMEM;
+                       goto err_pid;
+               }
+       }
 
-       ctx->user_handle = ret;
        /* NB: Mark all slices as needing a remap so that when the context first
         * loads it will restore whatever remap state already exists. If there
         * is no remap info, it will be a NOP. */
 
        return ctx;
 
+err_pid:
+       put_pid(ctx->pid);
+       idr_remove(&file_priv->context_idr, ctx->user_handle);
 err_out:
        context_close(ctx);
        return ERR_PTR(ret);