diff options
author | Eric Anholt <eric@anholt.net> | 2015-06-29 20:09:08 -0700 |
---|---|---|
committer | Eric Anholt <eric@anholt.net> | 2015-06-30 11:16:06 -0700 |
commit | 07009cab090ade3dd180e8a55d590b1a00072eed (patch) | |
tree | 0a73a6815980b8b051cadf19ef1a005db14187f6 | |
parent | ba13f38c76b9cc5f16bd02cf310abe7a6ae91df4 (diff) | |
download | linux-07009cab090ade3dd180e8a55d590b1a00072eed.tar.gz |
drm/vc4: Add tracepoints for seqno waits.
They proved valuable on i915, and I expect them to do so on vc4 as
well.
Signed-off-by: Eric Anholt <eric@anholt.net>
-rw-r--r-- | drivers/gpu/drm/vc4/Makefile | 3 | ||||
-rw-r--r-- | drivers/gpu/drm/vc4/vc4_gem.c | 3 | ||||
-rw-r--r-- | drivers/gpu/drm/vc4/vc4_trace.h | 63 | ||||
-rw-r--r-- | drivers/gpu/drm/vc4/vc4_trace_points.c | 14 |
4 files changed, 83 insertions, 0 deletions
diff --git a/drivers/gpu/drm/vc4/Makefile b/drivers/gpu/drm/vc4/Makefile index cf3898da60f5..ad3baec1c467 100644 --- a/drivers/gpu/drm/vc4/Makefile +++ b/drivers/gpu/drm/vc4/Makefile @@ -14,6 +14,7 @@ vc4-y := \ vc4_irq.o \ vc4_plane.o \ vc4_render_cl.o \ + vc4_trace_points.o \ vc4_v3d.o \ vc4_validate.o \ vc4_validate_shaders.o \ @@ -22,3 +23,5 @@ vc4-y := \ vc4-$(CONFIG_DEBUG_FS) += vc4_debugfs.o obj-$(CONFIG_DRM_VC4) += vc4.o + +CFLAGS_vc4_trace_points.o := -I$(src) diff --git a/drivers/gpu/drm/vc4/vc4_gem.c b/drivers/gpu/drm/vc4/vc4_gem.c index 33779de7f2e0..577cc6d3840f 100644 --- a/drivers/gpu/drm/vc4/vc4_gem.c +++ b/drivers/gpu/drm/vc4/vc4_gem.c @@ -29,6 +29,7 @@ #include "uapi/drm/vc4_drm.h" #include "vc4_drv.h" #include "vc4_regs.h" +#include "vc4_trace.h" static void vc4_queue_hangcheck(struct drm_device *dev) @@ -134,6 +135,7 @@ vc4_wait_for_seqno(struct drm_device *dev, uint64_t seqno, uint64_t timeout_ns, timeout_expire = jiffies + nsecs_to_jiffies(timeout_ns); + trace_vc4_wait_for_seqno_begin(dev, seqno, timeout_ns); for (;;) { prepare_to_wait(&vc4->job_wait_queue, &wait, interruptible ? TASK_INTERRUPTIBLE : @@ -159,6 +161,7 @@ vc4_wait_for_seqno(struct drm_device *dev, uint64_t seqno, uint64_t timeout_ns, } finish_wait(&vc4->job_wait_queue, &wait); + trace_vc4_wait_for_seqno_end(dev, seqno); if (ret && ret != -ERESTARTSYS) { DRM_ERROR("timeout waiting for render thread idle\n"); diff --git a/drivers/gpu/drm/vc4/vc4_trace.h b/drivers/gpu/drm/vc4/vc4_trace.h new file mode 100644 index 000000000000..ad7b1ea720c2 --- /dev/null +++ b/drivers/gpu/drm/vc4/vc4_trace.h @@ -0,0 +1,63 @@ +/* + * Copyright (C) 2015 Broadcom + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2 as + * published by the Free Software Foundation. + */ + +#if !defined(_VC4_TRACE_H_) || defined(TRACE_HEADER_MULTI_READ) +#define _VC4_TRACE_H_ + +#include <linux/stringify.h> +#include <linux/types.h> +#include <linux/tracepoint.h> + +#undef TRACE_SYSTEM +#define TRACE_SYSTEM vc4 +#define TRACE_INCLUDE_FILE vc4_trace + +TRACE_EVENT(vc4_wait_for_seqno_begin, + TP_PROTO(struct drm_device *dev, uint64_t seqno, uint64_t timeout), + TP_ARGS(dev, seqno, timeout), + + TP_STRUCT__entry( + __field(u32, dev) + __field(u64, seqno) + __field(u64, timeout) + ), + + TP_fast_assign( + __entry->dev = dev->primary->index; + __entry->seqno = seqno; + __entry->timeout = timeout; + ), + + TP_printk("dev=%u, seqno=%llu, timeout=%llu", + __entry->dev, __entry->seqno, __entry->timeout) +); + +TRACE_EVENT(vc4_wait_for_seqno_end, + TP_PROTO(struct drm_device *dev, uint64_t seqno), + TP_ARGS(dev, seqno), + + TP_STRUCT__entry( + __field(u32, dev) + __field(u64, seqno) + ), + + TP_fast_assign( + __entry->dev = dev->primary->index; + __entry->seqno = seqno; + ), + + TP_printk("dev=%u, seqno=%llu", + __entry->dev, __entry->seqno) +); + +#endif /* _VC4_TRACE_H_ */ + +/* This part must be outside protection */ +#undef TRACE_INCLUDE_PATH +#define TRACE_INCLUDE_PATH . +#include <trace/define_trace.h> diff --git a/drivers/gpu/drm/vc4/vc4_trace_points.c b/drivers/gpu/drm/vc4/vc4_trace_points.c new file mode 100644 index 000000000000..e6278f25716b --- /dev/null +++ b/drivers/gpu/drm/vc4/vc4_trace_points.c @@ -0,0 +1,14 @@ +/* + * Copyright (C) 2015 Broadcom + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2 as + * published by the Free Software Foundation. + */ + +#include "vc4_drv.h" + +#ifndef __CHECKER__ +#define CREATE_TRACE_POINTS +#include "vc4_trace.h" +#endif |