Module Name: src Committed By: riastradh Date: Sun Dec 19 01:23:52 UTC 2021
Modified Files: src/sys/external/bsd/drm2/include: i915_trace.h Log Message: Update i915 trace points. To generate a diff of this commit: cvs rdiff -u -r1.14 -r1.15 src/sys/external/bsd/drm2/include/i915_trace.h Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/sys/external/bsd/drm2/include/i915_trace.h diff -u src/sys/external/bsd/drm2/include/i915_trace.h:1.14 src/sys/external/bsd/drm2/include/i915_trace.h:1.15 --- src/sys/external/bsd/drm2/include/i915_trace.h:1.14 Mon Aug 27 15:25:28 2018 +++ src/sys/external/bsd/drm2/include/i915_trace.h Sun Dec 19 01:23:52 2021 @@ -1,7 +1,7 @@ -/* $NetBSD: i915_trace.h,v 1.14 2018/08/27 15:25:28 riastradh Exp $ */ +/* $NetBSD: i915_trace.h,v 1.15 2021/12/19 01:23:52 riastradh Exp $ */ /*- - * Copyright (c) 2013 The NetBSD Foundation, Inc. + * Copyright (c) 2013, 2018 The NetBSD Foundation, Inc. * All rights reserved. * * This code is derived from software contributed to The NetBSD Foundation @@ -35,58 +35,78 @@ #include <sys/types.h> #include <sys/sdt.h> +#include "i915_request.h" #include "intel_drv.h" /* Must come last. */ #include <drm/drm_trace_netbsd.h> -DEFINE_TRACE2(i915,, flip__request, - "enum plane"/*plane*/, "struct drm_i915_gem_object *"/*obj*/); +DEFINE_TRACE3(i915,, cpu__fifo__underrun, + "enum i915_pipe"/*pipe*/, + "uint32_t"/*frame*/, + "uint32_t"/*scanline*/); static inline void -trace_i915_flip_request(enum plane plane, struct drm_i915_gem_object *obj) +trace_intel_cpu_fifo_underrun(struct drm_i915_private *dev_priv, + enum i915_pipe pipe) { - TRACE2(i915,, flip__request, plane, obj); + TRACE3(i915,, cpu__fifo__underrun, + pipe, + dev_priv->drm.driver->get_vblank_counter(&dev_priv->drm, pipe), + intel_get_crtc_scanline(intel_get_crtc_for_pipe(dev_priv, pipe))); } -DEFINE_TRACE2(i915,, flip__complete, - "enum plane"/*plane*/, "struct drm_i915_gem_object *"/*obj*/); +DEFINE_TRACE3(i915,, pch__fifo__underrun, + "enum i915_pipe"/*pipe*/, + "uint32_t"/*frame*/, + "uint32_t"/*scanline*/); static inline void -trace_i915_flip_complete(enum plane plane, struct drm_i915_gem_object *obj) +trace_intel_pch_fifo_underrun(struct drm_i915_private *dev_priv, + enum i915_pipe pipe) { - TRACE2(i915,, flip__complete, plane, obj); + TRACE3(i915,, pch__fifo__underrun, + pipe, + dev_priv->drm.driver->get_vblank_counter(&dev_priv->drm, pipe), + intel_get_crtc_scanline(intel_get_crtc_for_pipe(dev_priv, pipe))); } -DEFINE_TRACE4(i915,, gem__evict, +DEFINE_TRACE5(i915,, gem__evict, "int"/*devno*/, - "int"/*min_size*/, "unsigned"/*alignment*/, "unsigned"/*flags*/); + "struct i915_address_space *"/*vm*/, + "uint64_t"/*size*/, + "uint64_t"/*align*/, + "unsigned"/*flags*/); static inline void -trace_i915_gem_evict(struct drm_device *dev, int min_size, unsigned alignment, - unsigned flags) +trace_i915_gem_evict(struct i915_address_space *vm, + uint64_t size, uint64_t align, unsigned flags) { - TRACE4(i915,, gem__evict, - dev->primary->index, min_size, alignment, flags); + TRACE5(i915,, gem__evict, + vm->i915->drm.primary->index, vm, size, align, flags); } -DEFINE_TRACE2(i915,, gem__evict__vm, - "int"/*devno*/, "struct i915_address_space *"/*vm*/); +DEFINE_TRACE6(i915,, gem__evict__node, + "int"/*devno*/, + "struct i915_address_space *"/*vm*/, + "uint64_t"/*start*/, + "uint64_t"/*size*/, + "unsigned long"/*color*/, + "unsigned"/*flags*/); static inline void -trace_i915_gem_evict_vm(struct i915_address_space *vm) +trace_i915_gem_evict_node(struct i915_address_space *vm, + struct drm_mm_node *node, unsigned flags) { - TRACE2(i915,, gem__evict__vm, vm->dev->primary->index, vm); + TRACE6(i915,, gem__evict__node, + vm->i915->drm.primary->index, vm, + node->start, node->size, node->color, + flags); } -DEFINE_TRACE3(i915,, gem__object__change__domain, - "struct drm_i915_gem_object *"/*obj*/, - "uint32_t"/*read_domains*/, - "uint32_t"/*write_domain*/); +DEFINE_TRACE2(i915,, gem__evict__vm, + "int"/*devno*/, + "struct i915_address_space *"/*vm*/); static inline void -trace_i915_gem_object_change_domain(struct drm_i915_gem_object *obj, - uint32_t old_read_domains, uint32_t old_write_domain) +trace_i915_gem_evict_vm(struct i915_address_space *vm) { - TRACE3(i915,, gem__object__change__domain, - obj, - obj->base.read_domains | (old_read_domains << 16), - obj->base.write_domain | (old_write_domain << 16)); + TRACE2(i915,, gem__evict__vm, vm->i915->drm.primary->index, vm); } DEFINE_TRACE1(i915,, gem__object__clflush, @@ -149,104 +169,126 @@ trace_i915_gem_object_pwrite(struct drm_ TRACE3(i915,, gem__object__write, obj, offset, size); } -DEFINE_TRACE3(i915,, gem__request__add, - "int"/*devno*/, "int"/*ringid*/, "uint32_t"/*seqno*/); +#define I915_DEFINE_TRACE_REQ(M, F, N) \ + DEFINE_TRACE7(M, F, N, \ + "int"/*devno*/, \ + "unsigned"/*hw_id*/, \ + "uint8_t"/*uabi_class*/, \ + "uint8_t"/*instance*/, \ + "unsigned"/*context*/, \ + "unsigned"/*seqno*/, \ + "unsigned"/*global*/) + +#define I915_TRACE_REQ(M, F, N, R) \ + TRACE7(M, F, N, \ + (R)->i915->drm.primary->index, \ + (R)->gem_context->hw_id, \ + (R)->engine->uabi_class, \ + (R)->engine->instance, \ + (R)->fence.context, \ + (R)->fence.seqno, \ + (R)->global_seqno) + +I915_DEFINE_TRACE_REQ(i915,, request__queue); +static inline void +trace_i915_request_queue(struct i915_request *request, uint32_t flags) +{ + __USE(flags); /* XXX too many trace operands */ + I915_TRACE_REQ(i915,, request__queue, request); +} + +I915_DEFINE_TRACE_REQ(i915,, request__add); static inline void -trace_i915_gem_request_add(struct drm_i915_gem_request *request) +trace_i915_request_add(struct i915_request *request) { - TRACE3(i915,, gem__request__add, - request->ring->dev->primary->index, - request->ring->id, - request->seqno); + I915_TRACE_REQ(i915,, request__add, request); } -DEFINE_TRACE3(i915,, gem__request__retire, - "int"/*devno*/, "int"/*ringid*/, "uint32_t"/*seqno*/); +I915_DEFINE_TRACE_REQ(i915,, request__submit); static inline void -trace_i915_gem_request_retire(struct drm_i915_gem_request *request) +trace_i915_request_submit(struct i915_request *request) { - TRACE3(i915,, gem__request__retire, - request->ring->dev->primary->index, - request->ring->id, - request->seqno); + I915_TRACE_REQ(i915,, request__submit, request); } -DEFINE_TRACE3(i915,, gem__request__wait__begin, - "int"/*devno*/, "int"/*ringid*/, "uint32_t"/*seqno*/); +I915_DEFINE_TRACE_REQ(i915,, request__execute); static inline void -trace_i915_gem_request_wait_begin(struct drm_i915_gem_request *request) +trace_i915_request_execute(struct i915_request *request) { - TRACE3(i915,, gem__request__wait__begin, - request->ring->dev->primary->index, - request->ring->id, - request->seqno); + I915_TRACE_REQ(i915,, request__execute, request); } -DEFINE_TRACE3(i915,, gem__request__wait__end, - "int"/*devno*/, "int"/*ringid*/, "uint32_t"/*seqno*/); +I915_DEFINE_TRACE_REQ(i915,, request__in); static inline void -trace_i915_gem_request_wait_end(struct drm_i915_gem_request *request) +trace_i915_request_in(struct i915_request *request, unsigned port) { - TRACE3(i915,, gem__request__wait__end, - request->ring->dev->primary->index, - request->ring->id, - request->seqno); + __USE(port); /* XXX too many trace operands */ + I915_TRACE_REQ(i915,, request__in, request); } -DEFINE_TRACE3(i915,, gem__request__notify, - "int"/*devno*/, "int"/*ringid*/, "uint32_t"/*seqno*/); +I915_DEFINE_TRACE_REQ(i915,, request__out); static inline void -trace_i915_gem_request_notify(struct intel_engine_cs *ring) +trace_i915_request_out(struct i915_request *request) { - TRACE3(i915,, gem__request__notify, - ring->dev->primary->index, ring->id, ring->get_seqno(ring, false)); + /* XXX i915_request_completed(request) */ + I915_TRACE_REQ(i915,, request__out, request); } -/* XXX Why no request in the trace upstream? */ -DEFINE_TRACE4(i915,, gem__ring__dispatch, - "int"/*devno*/, "int"/*ringid*/, "uint32_t"/*seqno*/, "uint32_t"/*flags*/); +I915_DEFINE_TRACE_REQ(i915,, request__retire); static inline void -trace_i915_gem_ring_dispatch(struct drm_i915_gem_request *request, - uint32_t flags) +trace_i915_request_retire(struct i915_request *request) { - TRACE4(i915,, gem__ring__dispatch, - request->ring->dev->primary->index, - request->ring->id, - request->seqno, - flags); - /* XXX i915_trace_irq_get? Doesn't seem to be used. */ + I915_TRACE_REQ(i915,, request__retire, request); +} + +I915_DEFINE_TRACE_REQ(i915,, request__wait__begin); +static inline void +trace_i915_request_wait_begin(struct i915_request *request) +{ + I915_TRACE_REQ(i915,, request__wait__begin, request); +} + +I915_DEFINE_TRACE_REQ(i915,, request__wait__end); +static inline void +trace_i915_request_wait_end(struct i915_request *request) +{ + I915_TRACE_REQ(i915,, request__wait__end, request); } -DEFINE_TRACE4(i915,, gem__ring__flush, +DEFINE_TRACE5(i915,, engine__notify, "int"/*devno*/, - "int"/*ringid*/, - "uint32_t"/*invalidate*/, - "uint32_t"/*flags*/); -static inline void -trace_i915_gem_ring_flush(struct drm_i915_gem_request *request, - uint32_t invalidate, uint32_t flags) -{ - TRACE4(i915,, gem__ring__flush, - request->ring->dev->primary->index, - request->ring->id, - invalidate, - flags); + "uint8_t"/*uabi_class*/, + "uint8_t"/*instance*/, + "unsigned"/*seqno*/, + "bool"/*waiters*/); +static inline void +trace_intel_engine_notify(struct intel_engine_cs *engine, bool waiters) +{ + TRACE5(i915,, engine__notify, + engine->i915->drm.primary->index, + engine->uabi_class, + engine->instance, + intel_engine_get_seqno(engine), + waiters); } -DEFINE_TRACE4(i915,, gem__ring__sync__to, +DEFINE_TRACE6(i915,, gem__ring__sync__to, "int"/*devno*/, - "int"/*from_ringid*/, - "int"/*to_ringid*/, - "uint32_t"/*seqno*/); -static inline void -trace_i915_gem_ring_sync_to(struct drm_i915_gem_request *to_req, - struct intel_engine_cs *from, struct drm_i915_gem_request *from_req) -{ - TRACE4(i915,, gem__ring__sync__to, - from->dev->primary->index, - from->id, - to_req->ring->id, - i915_gem_request_get_seqno(from_req)); + "uint8_t"/*from_class*/, + "uint8_t"/*from_instance*/, + "uint8_t"/*to_class*/, + "uint8_t"/*to_instance*/, + "unsigned"/*seqno*/); +static inline void +trace_i915_gem_ring_sync_to(struct i915_request *to, struct i915_request *from) +{ + TRACE6(i915,, gem__ring__sync__to, + from->i915->drm.primary->index, + from->engine->uabi_class, + from->engine->instance, + to->engine->uabi_class, + to->engine->instance, + from->global_seqno); } DEFINE_TRACE3(i915,, register__read, @@ -254,15 +296,17 @@ DEFINE_TRACE3(i915,, register__read, DEFINE_TRACE3(i915,, register__write, "uint32_t"/*reg*/, "uint64_t"/*value*/, "size_t"/*len*/); static inline void -trace_i915_reg_rw(bool write, uint32_t reg, uint64_t value, size_t len, +trace_i915_reg_rw(bool write, i915_reg_t reg, uint64_t value, size_t len, bool trace) { + uint32_t regoff = i915_mmio_reg_offset(reg); + if (!trace) return; if (write) { - TRACE3(i915,, register__read, reg, value, len); + TRACE3(i915,, register__read, regoff, value, len); } else { - TRACE3(i915,, register__write, reg, value, len); + TRACE3(i915,, register__write, regoff, value, len); } } @@ -299,30 +343,34 @@ trace_intel_gpu_freq_change(int freq) TRACE1(i915,, gpu__freq__change, freq); } -DEFINE_TRACE3(i915,, context__create, +DEFINE_TRACE4(i915,, context__create, "int"/*devno*/, - "struct intel_context *"/*ctx*/, + "struct i915_gem_context *"/*ctx*/, + "unsigned"/*hw_id*/, "struct i915_address_space *"/*vm*/); static inline void -trace_i915_context_create(struct intel_context *ctx) +trace_i915_context_create(struct i915_gem_context *ctx) { - TRACE3(i915,, context__create, - ctx->i915->dev->primary->index, + TRACE4(i915,, context__create, + ctx->i915->drm.primary->index, ctx, - (ctx->ppgtt ? &ctx->ppgtt->base : NULL)); + ctx->hw_id, + (ctx->ppgtt ? &ctx->ppgtt->vm : NULL)); } -DEFINE_TRACE3(i915,, context__free, +DEFINE_TRACE4(i915,, context__free, "int"/*devno*/, - "struct intel_context *"/*ctx*/, + "struct i915_gem_context *"/*ctx*/, + "unsigned"/*hw_id*/, "struct i915_address_space *"/*vm*/); static inline void -trace_i915_context_free(struct intel_context *ctx) +trace_i915_context_free(struct i915_gem_context *ctx) { - TRACE3(i915,, context__free, - ctx->i915->dev->primary->index, + TRACE4(i915,, context__free, + ctx->i915->drm.primary->index, ctx, - (ctx->ppgtt ? &ctx->ppgtt->base : NULL)); + ctx->hw_id, + (ctx->ppgtt ? &ctx->ppgtt->vm : NULL)); } DEFINE_TRACE4(i915,, page_directory_entry_alloc, @@ -382,7 +430,7 @@ DEFINE_TRACE2(i915,, ppgtt__create, static inline void trace_i915_ppgtt_create(struct i915_address_space *vm) { - TRACE2(i915,, ppgtt__create, vm->dev->primary->index, vm); + TRACE2(i915,, ppgtt__create, vm->i915->drm.primary->index, vm); } DEFINE_TRACE2(i915,, ppgtt__release, @@ -391,7 +439,7 @@ DEFINE_TRACE2(i915,, ppgtt__release, static inline void trace_i915_ppgtt_release(struct i915_address_space *vm) { - TRACE2(i915,, ppgtt__release, vm->dev->primary->index, vm); + TRACE2(i915,, ppgtt__release, vm->i915->drm.primary->index, vm); } #define VM_TO_TRACE_NAME(vm) (i915_is_ggtt(vm) ? "G" : "P") @@ -418,7 +466,7 @@ trace_i915_gem_shrink(struct drm_i915_pr unsigned flags) { TRACE3(i915,, gem__shrink, - dev_priv->dev->primary->index, target, flags); + dev_priv->drm.primary->index, target, flags); } DEFINE_TRACE5(i915,, pipe__update__start, @@ -467,19 +515,4 @@ trace_i915_pipe_update_end(struct intel_ TRACE3(i915,, pipe__update__end, crtc->pipe, frame, scanline); } -DEFINE_TRACE4(i915,, switch__mm, - "int"/*devno*/, - "int"/*ringid*/, - "struct intel_context *"/*to*/, - "struct i915_address_space *"/*vm*/); -static inline void -trace_switch_mm(struct intel_engine_cs *ring, struct intel_context *to) -{ - TRACE4(i915,, switch__mm, - ring->dev->primary->index, - ring->id, - to, - to->ppgtt ? &to->ppgtt->base : NULL); -} - #endif /* _I915_TRACE_H_ */