[PATCH] drm/amd/doc: add rough outline of tracepoint documentation
StDenis, Tom
Tom.StDenis at amd.com
Thu May 30 14:56:11 UTC 2019
Signed-off-by: Tom St Denis <tom.stdenis at amd.com>
---
Documentation/gpu/amdgpu.rst | 10 +
drivers/gpu/drm/amd/amdgpu/amdgpu_trace.h | 221 ++++++++++++++++++++++
2 files changed, 231 insertions(+)
diff --git a/Documentation/gpu/amdgpu.rst b/Documentation/gpu/amdgpu.rst
index 86138798128f..3564765110e5 100644
--- a/Documentation/gpu/amdgpu.rst
+++ b/Documentation/gpu/amdgpu.rst
@@ -89,6 +89,16 @@ AMDGPU RAS debugfs control interface
.. kernel-doc:: drivers/gpu/drm/amd/amdgpu/amdgpu_ras.c
:internal:
+AMDGPU Tracing Support
+======================
+
+.. kernel-doc:: drivers/gpu/drm/amd/amdgpu/amdgpu_trace.h
+ :doc: AMDGPU Tracing Support
+
+
+.. kernel-doc:: drivers/gpu/drm/amd/amdgpu/amdgpu_trace.h
+ :internal:
+
GPU Power/Thermal Controls and Monitoring
=========================================
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_trace.h b/drivers/gpu/drm/amd/amdgpu/amdgpu_trace.h
index d3ca2424b5fe..71febb90d3e3 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_trace.h
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_trace.h
@@ -37,6 +37,227 @@
#define AMDGPU_JOB_GET_TIMELINE_NAME(job) \
job->base.s_fence->finished.ops->get_timeline_name(&job->base.s_fence->finished)
+/**
+ * DOC: AMDGPU Tracing Support
+ *
+ * The AMDGPU driver provides numerous trace points that can aid
+ * in debugging. They are globally enabled by the file:
+ *
+ * /sys/kernel/debug/tracing/events/amdgpu/enable
+ *
+ * or individually by the enable files in the sub-directories
+ * of that directory.
+ *
+ * amdgpu_mm_rreg, amdgpu_mm_wreg
+ * ------------------------------
+ *
+ * These trace points track reads and writes to MMIO registers by
+ * the kernel driver (activity inside ring/indirect buffers are not
+ * traced) which can be used to diagnose IP block activity and
+ * responses.
+ *
+ * The trace captures the following information:
+ *
+ * - DID of the device being used
+ * - Register address
+ * - Value being read or written
+ *
+ * It does not differentiate between multiple instances of the same
+ * ASIC. The register address is the DWORD address of the register
+ * being used.
+ *
+ * amdgpu_iv
+ * ---------
+ *
+ * This tracepoint captures data from an IRQ event before dispatching
+ * control to the respective IP block IRQ handler. The trace
+ * captures the following information:
+ *
+ * - client ID
+ * - source ID
+ * - ring ID
+ * - VM ID
+ * - VM ID source
+ * - Timestamp
+ * - Timestamp source
+ * - PAS ID
+ * - 4 SRC data words
+ *
+ * amdgpu_bo_create
+ * ----------------
+ *
+ * This tracepoint captures the state of a successfully created
+ * buffer object (BO). The trace captures the following information:
+ *
+ * - kernel address of the BO
+ * - Number of (GPU) pages
+ * - Memory type
+ * - Preferred domain
+ * - Allowed domains
+ * - Buffer Object Flags
+ *
+ * amdgpu_cs
+ * ---------
+ *
+ * This tracepoint captures data about a command submission prior
+ * to being submitted to a ring (or queue). The trace captures all
+ * indirect buffers (ibs) at once before issuing any commands. The
+ * trace captures the following information:
+ *
+ * - kernel address of the buffer object (BO) list
+ * - The ring (index) being submitted to
+ * - The number of words
+ * - The number of fences emitted
+ *
+ * amdgpu_cs_ioctl
+ * ---------------
+ *
+ * This tracepoint captures information from the IOCTL query that
+ * submits commands to a ring. It is part of the DRM userspace
+ * infrastructure. The trace captures the following information:
+ *
+ * - Schedule job ID
+ * - Timeline (name of ring the fence is emitted to)
+ * - Fence context
+ * - Fence sequence number
+ * - Ring name being submitted to
+ * - Number of indirect buffers (ibs)
+ *
+ * amdgpu_sched_run_job
+ * --------------------
+ *
+ * This tracepoint captures information about a job submission
+ * at the point of scheduling for submission to a ring. The trace
+ * captures the following information:
+ *
+ * - Job ID
+ * - Timeline (name of ring the fence is emitted to)
+ * - Context ID
+ * - Sequence Number
+ * - Ring name being submitted to
+ * - Number of indirect buffers (ibs)
+ *
+ * amdgpu_vm_grab_id
+ * -----------------
+ *
+ * This tracepoint captures information about a VM allocation.
+ * The trace captures the following information:
+ *
+ * - PAS ID
+ * - Ring name
+ * - Ring index
+ * - VM ID that is assigned
+ * - VM hub assigned (depends on ring)
+ * - Page Directory base address
+ * - Flag indicating whether it needs to be flushed or not
+ *
+ * amdgpu_vm_bo_map
+ * ----------------
+ *
+ * This tracepoint captures information when a new mapping is inserted
+ * into a VM space. The trace captures the following information:
+ *
+ * - Kernel address of the buffer object (bo)
+ * - Start page address of mapping
+ * - Last page address of mapping
+ * - Offset into mapping
+ * - Flags for the mapping
+ *
+ * amdgpu_vm_bo_unmap
+ * ------------------
+ *
+ * This tracepoint captures information when a mapping is deleted
+ * from a VM space. The trace captures the following information:
+ *
+ * - Kernel address of the buffer object (bo)
+ * - Start page address of mapping
+ * - Last page address of mapping
+ * - Offset into mapping
+ * - Flags for the mapping
+ *
+ * amdgpu_vm_set_ptes
+ * ------------------
+ *
+ * This tracepoint captures information when new Page Table Entries
+ * (PTE) are to be written out to the Page Table Block (PTB) pointed
+ * to by a Page Directory Entry (PDE). The trace captures the
+ * following information:
+ *
+ * - CPU address of PTE (pe)
+ * - Page Base Address (addr) to be inserted
+ * - Number of PTEs to be written
+ * - Increment on the page based address per entry
+ * - The PTE flags
+ *
+ * amdgpu_vm_copy_ptes
+ * -------------------
+ *
+ * This tracepoint captures information when Page Table Entries are
+ * copied from a mapping to a Page Table Block. The trace captures the
+ * following information:
+ *
+ * - Destination PTB for the copied entries
+ * - Source address
+ * - Count of PTE entries to copy
+ *
+ * amdgpu_vm_flush
+ * ---------------
+ *
+ * This tracepoint captures information of a VM flush being performed
+ * via a specific GPU ring. The trace captures the following
+ * information:
+ *
+ * - Ring name
+ * - VM ID
+ * - VM Hub
+ * - The base address of the PDB being invalidated
+ *
+ * amdgpu_bo_list_set
+ * ------------------
+ *
+ * This tracepoint captures information when storing a buffer
+ * object (bo) list entry. The trace captures the following
+ * information:
+ *
+ * - Kernel address of the buffer object list
+ * - Kernel address of the buffer object being added
+ * - Size of the buffer object being added
+ *
+ * amdgpu_cs_bo_status
+ * -------------------
+ *
+ * This tracepoint captures information when a buffer object (bo)
+ * list is created. The trace captures the following information:
+ *
+ * - Total number of entries
+ * - Total bytes of objects stored in list
+ *
+ * amdgpu_bo_move
+ * --------------
+ *
+ * This tracepoint captures information about the movement of a
+ * buffer object from one placement (memory type) to another. the
+ * trace captures the following information:
+ *
+ * - Kernel address of buffer object
+ * - Size of buffer object in bytes
+ * - New placement target
+ * - Old placement source
+ *
+ * amdgpu_ib_pipe_sync
+ * -------------------
+ *
+ * This tracepoint captures information when a pipeline sync is
+ * emitted to a ring. The trace captures the following information:
+ *
+ * - Name of the ring
+ * - Job ID
+ * - Kernel address of fence object
+ * - Context ID
+ * - Fence sequence number
+ *
+ */
+
TRACE_EVENT(amdgpu_mm_rreg,
TP_PROTO(unsigned did, uint32_t reg, uint32_t value),
TP_ARGS(did, reg, value),
--
2.21.0
More information about the amd-gfx
mailing list