Path: blob/master/drivers/gpu/drm/i915/i915_trace.h
15113 views
#if !defined(_I915_TRACE_H_) || defined(TRACE_HEADER_MULTI_READ)1#define _I915_TRACE_H_23#include <linux/stringify.h>4#include <linux/types.h>5#include <linux/tracepoint.h>67#include <drm/drmP.h>8#include "i915_drv.h"9#include "intel_ringbuffer.h"1011#undef TRACE_SYSTEM12#define TRACE_SYSTEM i91513#define TRACE_SYSTEM_STRING __stringify(TRACE_SYSTEM)14#define TRACE_INCLUDE_FILE i915_trace1516/* object tracking */1718TRACE_EVENT(i915_gem_object_create,19TP_PROTO(struct drm_i915_gem_object *obj),20TP_ARGS(obj),2122TP_STRUCT__entry(23__field(struct drm_i915_gem_object *, obj)24__field(u32, size)25),2627TP_fast_assign(28__entry->obj = obj;29__entry->size = obj->base.size;30),3132TP_printk("obj=%p, size=%u", __entry->obj, __entry->size)33);3435TRACE_EVENT(i915_gem_object_bind,36TP_PROTO(struct drm_i915_gem_object *obj, bool mappable),37TP_ARGS(obj, mappable),3839TP_STRUCT__entry(40__field(struct drm_i915_gem_object *, obj)41__field(u32, offset)42__field(u32, size)43__field(bool, mappable)44),4546TP_fast_assign(47__entry->obj = obj;48__entry->offset = obj->gtt_space->start;49__entry->size = obj->gtt_space->size;50__entry->mappable = mappable;51),5253TP_printk("obj=%p, offset=%08x size=%x%s",54__entry->obj, __entry->offset, __entry->size,55__entry->mappable ? ", mappable" : "")56);5758TRACE_EVENT(i915_gem_object_unbind,59TP_PROTO(struct drm_i915_gem_object *obj),60TP_ARGS(obj),6162TP_STRUCT__entry(63__field(struct drm_i915_gem_object *, obj)64__field(u32, offset)65__field(u32, size)66),6768TP_fast_assign(69__entry->obj = obj;70__entry->offset = obj->gtt_space->start;71__entry->size = obj->gtt_space->size;72),7374TP_printk("obj=%p, offset=%08x size=%x",75__entry->obj, __entry->offset, __entry->size)76);7778TRACE_EVENT(i915_gem_object_change_domain,79TP_PROTO(struct drm_i915_gem_object *obj, u32 old_read, u32 old_write),80TP_ARGS(obj, old_read, old_write),8182TP_STRUCT__entry(83__field(struct drm_i915_gem_object *, obj)84__field(u32, read_domains)85__field(u32, write_domain)86),8788TP_fast_assign(89__entry->obj = obj;90__entry->read_domains = obj->base.read_domains | (old_read << 16);91__entry->write_domain = obj->base.write_domain | (old_write << 16);92),9394TP_printk("obj=%p, read=%02x=>%02x, write=%02x=>%02x",95__entry->obj,96__entry->read_domains >> 16,97__entry->read_domains & 0xffff,98__entry->write_domain >> 16,99__entry->write_domain & 0xffff)100);101102TRACE_EVENT(i915_gem_object_pwrite,103TP_PROTO(struct drm_i915_gem_object *obj, u32 offset, u32 len),104TP_ARGS(obj, offset, len),105106TP_STRUCT__entry(107__field(struct drm_i915_gem_object *, obj)108__field(u32, offset)109__field(u32, len)110),111112TP_fast_assign(113__entry->obj = obj;114__entry->offset = offset;115__entry->len = len;116),117118TP_printk("obj=%p, offset=%u, len=%u",119__entry->obj, __entry->offset, __entry->len)120);121122TRACE_EVENT(i915_gem_object_pread,123TP_PROTO(struct drm_i915_gem_object *obj, u32 offset, u32 len),124TP_ARGS(obj, offset, len),125126TP_STRUCT__entry(127__field(struct drm_i915_gem_object *, obj)128__field(u32, offset)129__field(u32, len)130),131132TP_fast_assign(133__entry->obj = obj;134__entry->offset = offset;135__entry->len = len;136),137138TP_printk("obj=%p, offset=%u, len=%u",139__entry->obj, __entry->offset, __entry->len)140);141142TRACE_EVENT(i915_gem_object_fault,143TP_PROTO(struct drm_i915_gem_object *obj, u32 index, bool gtt, bool write),144TP_ARGS(obj, index, gtt, write),145146TP_STRUCT__entry(147__field(struct drm_i915_gem_object *, obj)148__field(u32, index)149__field(bool, gtt)150__field(bool, write)151),152153TP_fast_assign(154__entry->obj = obj;155__entry->index = index;156__entry->gtt = gtt;157__entry->write = write;158),159160TP_printk("obj=%p, %s index=%u %s",161__entry->obj,162__entry->gtt ? "GTT" : "CPU",163__entry->index,164__entry->write ? ", writable" : "")165);166167DECLARE_EVENT_CLASS(i915_gem_object,168TP_PROTO(struct drm_i915_gem_object *obj),169TP_ARGS(obj),170171TP_STRUCT__entry(172__field(struct drm_i915_gem_object *, obj)173),174175TP_fast_assign(176__entry->obj = obj;177),178179TP_printk("obj=%p", __entry->obj)180);181182DEFINE_EVENT(i915_gem_object, i915_gem_object_clflush,183TP_PROTO(struct drm_i915_gem_object *obj),184TP_ARGS(obj)185);186187DEFINE_EVENT(i915_gem_object, i915_gem_object_destroy,188TP_PROTO(struct drm_i915_gem_object *obj),189TP_ARGS(obj)190);191192TRACE_EVENT(i915_gem_evict,193TP_PROTO(struct drm_device *dev, u32 size, u32 align, bool mappable),194TP_ARGS(dev, size, align, mappable),195196TP_STRUCT__entry(197__field(u32, dev)198__field(u32, size)199__field(u32, align)200__field(bool, mappable)201),202203TP_fast_assign(204__entry->dev = dev->primary->index;205__entry->size = size;206__entry->align = align;207__entry->mappable = mappable;208),209210TP_printk("dev=%d, size=%d, align=%d %s",211__entry->dev, __entry->size, __entry->align,212__entry->mappable ? ", mappable" : "")213);214215TRACE_EVENT(i915_gem_evict_everything,216TP_PROTO(struct drm_device *dev, bool purgeable),217TP_ARGS(dev, purgeable),218219TP_STRUCT__entry(220__field(u32, dev)221__field(bool, purgeable)222),223224TP_fast_assign(225__entry->dev = dev->primary->index;226__entry->purgeable = purgeable;227),228229TP_printk("dev=%d%s",230__entry->dev,231__entry->purgeable ? ", purgeable only" : "")232);233234TRACE_EVENT(i915_gem_ring_dispatch,235TP_PROTO(struct intel_ring_buffer *ring, u32 seqno),236TP_ARGS(ring, seqno),237238TP_STRUCT__entry(239__field(u32, dev)240__field(u32, ring)241__field(u32, seqno)242),243244TP_fast_assign(245__entry->dev = ring->dev->primary->index;246__entry->ring = ring->id;247__entry->seqno = seqno;248i915_trace_irq_get(ring, seqno);249),250251TP_printk("dev=%u, ring=%u, seqno=%u",252__entry->dev, __entry->ring, __entry->seqno)253);254255TRACE_EVENT(i915_gem_ring_flush,256TP_PROTO(struct intel_ring_buffer *ring, u32 invalidate, u32 flush),257TP_ARGS(ring, invalidate, flush),258259TP_STRUCT__entry(260__field(u32, dev)261__field(u32, ring)262__field(u32, invalidate)263__field(u32, flush)264),265266TP_fast_assign(267__entry->dev = ring->dev->primary->index;268__entry->ring = ring->id;269__entry->invalidate = invalidate;270__entry->flush = flush;271),272273TP_printk("dev=%u, ring=%x, invalidate=%04x, flush=%04x",274__entry->dev, __entry->ring,275__entry->invalidate, __entry->flush)276);277278DECLARE_EVENT_CLASS(i915_gem_request,279TP_PROTO(struct intel_ring_buffer *ring, u32 seqno),280TP_ARGS(ring, seqno),281282TP_STRUCT__entry(283__field(u32, dev)284__field(u32, ring)285__field(u32, seqno)286),287288TP_fast_assign(289__entry->dev = ring->dev->primary->index;290__entry->ring = ring->id;291__entry->seqno = seqno;292),293294TP_printk("dev=%u, ring=%u, seqno=%u",295__entry->dev, __entry->ring, __entry->seqno)296);297298DEFINE_EVENT(i915_gem_request, i915_gem_request_add,299TP_PROTO(struct intel_ring_buffer *ring, u32 seqno),300TP_ARGS(ring, seqno)301);302303DEFINE_EVENT(i915_gem_request, i915_gem_request_complete,304TP_PROTO(struct intel_ring_buffer *ring, u32 seqno),305TP_ARGS(ring, seqno)306);307308DEFINE_EVENT(i915_gem_request, i915_gem_request_retire,309TP_PROTO(struct intel_ring_buffer *ring, u32 seqno),310TP_ARGS(ring, seqno)311);312313DEFINE_EVENT(i915_gem_request, i915_gem_request_wait_begin,314TP_PROTO(struct intel_ring_buffer *ring, u32 seqno),315TP_ARGS(ring, seqno)316);317318DEFINE_EVENT(i915_gem_request, i915_gem_request_wait_end,319TP_PROTO(struct intel_ring_buffer *ring, u32 seqno),320TP_ARGS(ring, seqno)321);322323DECLARE_EVENT_CLASS(i915_ring,324TP_PROTO(struct intel_ring_buffer *ring),325TP_ARGS(ring),326327TP_STRUCT__entry(328__field(u32, dev)329__field(u32, ring)330),331332TP_fast_assign(333__entry->dev = ring->dev->primary->index;334__entry->ring = ring->id;335),336337TP_printk("dev=%u, ring=%u", __entry->dev, __entry->ring)338);339340DEFINE_EVENT(i915_ring, i915_ring_wait_begin,341TP_PROTO(struct intel_ring_buffer *ring),342TP_ARGS(ring)343);344345DEFINE_EVENT(i915_ring, i915_ring_wait_end,346TP_PROTO(struct intel_ring_buffer *ring),347TP_ARGS(ring)348);349350TRACE_EVENT(i915_flip_request,351TP_PROTO(int plane, struct drm_i915_gem_object *obj),352353TP_ARGS(plane, obj),354355TP_STRUCT__entry(356__field(int, plane)357__field(struct drm_i915_gem_object *, obj)358),359360TP_fast_assign(361__entry->plane = plane;362__entry->obj = obj;363),364365TP_printk("plane=%d, obj=%p", __entry->plane, __entry->obj)366);367368TRACE_EVENT(i915_flip_complete,369TP_PROTO(int plane, struct drm_i915_gem_object *obj),370371TP_ARGS(plane, obj),372373TP_STRUCT__entry(374__field(int, plane)375__field(struct drm_i915_gem_object *, obj)376),377378TP_fast_assign(379__entry->plane = plane;380__entry->obj = obj;381),382383TP_printk("plane=%d, obj=%p", __entry->plane, __entry->obj)384);385386TRACE_EVENT(i915_reg_rw,387TP_PROTO(bool write, u32 reg, u64 val, int len),388389TP_ARGS(write, reg, val, len),390391TP_STRUCT__entry(392__field(u64, val)393__field(u32, reg)394__field(u16, write)395__field(u16, len)396),397398TP_fast_assign(399__entry->val = (u64)val;400__entry->reg = reg;401__entry->write = write;402__entry->len = len;403),404405TP_printk("%s reg=0x%x, len=%d, val=(0x%x, 0x%x)",406__entry->write ? "write" : "read",407__entry->reg, __entry->len,408(u32)(__entry->val & 0xffffffff),409(u32)(__entry->val >> 32))410);411412#endif /* _I915_TRACE_H_ */413414/* This part must be outside protection */415#undef TRACE_INCLUDE_PATH416#define TRACE_INCLUDE_PATH .417#include <trace/define_trace.h>418419420