diff --git a/drivers/video/tegra/host/pva/pva_queue.c b/drivers/video/tegra/host/pva/pva_queue.c index e5b7fbdf..b2e22152 100644 --- a/drivers/video/tegra/host/pva/pva_queue.c +++ b/drivers/video/tegra/host/pva/pva_queue.c @@ -29,7 +29,6 @@ #include #include -#include #define CREATE_TRACE_POINTS #include @@ -877,7 +876,6 @@ pva_trace_log_record_task_states(struct platform_device *pdev, syncpt_id, syncpt_thresh, stats->vpu_assigned, - stats->queue_id, stats->queued_time, stats->vpu_assigned_time, stats->vpu_assigned_time, @@ -972,13 +970,12 @@ static void update_one_task(struct pva *pva) vpu_time = (stats->vpu_complete_time - stats->vpu_start_time); r5_overhead = ((stats->complete_time - stats->queued_time) - vpu_time); r5_overhead = r5_overhead / tsc_ticks_to_us; - - trace_nvhost_pva_task_timestamp(dev_name(&pdev->dev), - pdata->class, - queue->syncpt_id, - task->local_sync_counter, - stats->vpu_assigned_time, - stats->complete_time); + trace_nvpva_task_timestamp(dev_name(&pdev->dev), + pdata->class, + queue->syncpt_id, + task->local_sync_counter, + stats->vpu_assigned_time, + stats->complete_time); nvpva_dbg_info(pva, "Completed task %p (0x%llx), " "start_time=%llu, " "end_time=%llu", @@ -986,16 +983,16 @@ static void update_one_task(struct pva *pva) (u64)task->dma_addr, stats->vpu_assigned_time, stats->complete_time); - trace_nvhost_pva_task_stats(pdev->name, - stats->queued_time, - stats->head_time, - stats->input_actions_complete, - stats->vpu_assigned_time, - stats->vpu_start_time, - stats->vpu_complete_time, - stats->complete_time, - stats->vpu_assigned, - r5_overhead); + trace_nvpva_task_stats(pdev->name, + stats->queued_time, + stats->head_time, + stats->input_actions_complete, + stats->vpu_assigned_time, + stats->vpu_start_time, + stats->vpu_complete_time, + stats->complete_time, + stats->vpu_assigned, + r5_overhead); prof: if ((task->pva->profiling_level == 0) || (!IS_ENABLED(CONFIG_TRACING))) goto out; diff --git a/drivers/video/tegra/host/pva/pva_trace.c b/drivers/video/tegra/host/pva/pva_trace.c index 907a8656..147b48e5 100644 --- a/drivers/video/tegra/host/pva/pva_trace.c +++ b/drivers/video/tegra/host/pva/pva_trace.c @@ -5,8 +5,7 @@ * PVA trace log */ -#define CREATE_TRACE_POINTS -#include +#include #include "pva.h" #include "pva_trace.h" @@ -34,7 +33,7 @@ static void read_linear(struct pva *pva, struct pva_trace_log *trace, u32 toff) dt, name, tp->major, tp->minor, tp->flags, tp->sequence, tp->arg1, tp->arg2); - trace_nvhost_pva_write(dt, name, tp->major, + trace_nvpva_write(dt, name, tp->major, tp->minor, tp->flags, tp->sequence, tp->arg1, tp->arg2); tp = tp + 1; diff --git a/include/trace/events/nvhost_pva.h b/include/trace/events/nvhost_pva.h deleted file mode 100644 index 2eeb0173..00000000 --- a/include/trace/events/nvhost_pva.h +++ /dev/null @@ -1,235 +0,0 @@ -/* SPDX-License-Identifier: GPL-2.0-only */ -/* - * Copyright (c) 2017-2023, NVIDIA Corporation. All rights reserved. - * - * Nvhost event logging to ftrace. - */ - -#undef TRACE_SYSTEM -#define TRACE_SYSTEM nvhost_pva - -#if !defined(_TRACE_NVHOST_PVA_H) || defined(TRACE_HEADER_MULTI_READ) -#define _TRACE_NVHOST_PVA_H - -#include - - -TRACE_EVENT(nvhost_pva_write, - - TP_PROTO( - u64 delta_time, - const char *name, - u8 major, - u8 minor, - u8 flags, - u8 sequence, - u32 arg1, - u32 arg2 - ), - - TP_ARGS( - delta_time, - name, - major, - minor, - flags, - sequence, - arg1, - arg2 - ), - - TP_STRUCT__entry( - __field(u64, delta_time) - __field(const char *, name) - __field(u8, major) - __field(u8, minor) - __field(u8, flags) - __field(u8, sequence) - __field(u32, arg1) - __field(u32, arg2) - ), - - TP_fast_assign( - __entry->delta_time = delta_time; - __entry->name = name; - __entry->major = major; - __entry->minor = minor; - __entry->flags = flags; - __entry->sequence = sequence; - __entry->arg1 = arg1; - __entry->arg2 = arg2; - ), - - TP_printk("time: %llu\t %s\t major: 0x%x\tminor: 0x%x\tflags: 0x%x\t" - "sequence: 0x%x\targ1: %u\targ2: %u", - __entry->delta_time, __entry->name, __entry->major, - __entry->minor, __entry->flags, __entry->sequence, - __entry->arg1, __entry->arg2) -); - -TRACE_EVENT(nvhost_pva_task_stats, - - TP_PROTO( - const char *name, - u64 queued_time, - u64 head_time, - u64 input_actions_complete, - u64 vpu_assigned_time, - u64 vpu_start_time, - u64 vpu_complete_time, - u64 complete_time, - u8 vpu_assigned, - u64 r5_overhead - ), - - TP_ARGS( - name, - queued_time, - head_time, - input_actions_complete, - vpu_assigned_time, - vpu_start_time, - vpu_complete_time, - complete_time, - vpu_assigned, - r5_overhead - ), - - TP_STRUCT__entry( - __field(const char *, name) - __field(u64, queued_time) - __field(u64, head_time) - __field(u64, input_actions_complete) - __field(u64, vpu_assigned_time) - __field(u64, vpu_start_time) - __field(u64, vpu_complete_time) - __field(u64, complete_time) - __field(u8, vpu_assigned) - __field(u64, r5_overhead) - ), - - TP_fast_assign( - __entry->name = name; - __entry->queued_time = queued_time; - __entry->head_time = head_time; - __entry->input_actions_complete = input_actions_complete; - __entry->vpu_assigned_time = vpu_assigned_time; - __entry->vpu_start_time = vpu_start_time; - __entry->vpu_complete_time = vpu_complete_time; - __entry->complete_time = complete_time; - __entry->vpu_assigned = vpu_assigned; - __entry->r5_overhead = r5_overhead; - ), - - TP_printk("%s\tqueued_time: %llu\thead_time: %llu\t" - "input_actions_complete: %llu\tvpu_assigned_time: %llu\t" - "vpu_start_time: %llu\tvpu_complete_time: %llu\t" - "complete_time: %llu\tvpu_assigned: %d\t" - "r5_overhead: %llu us", - __entry->name, __entry->queued_time, __entry->head_time, - __entry->input_actions_complete, __entry->vpu_assigned_time, - __entry->vpu_start_time, __entry->vpu_complete_time, - __entry->complete_time, __entry->vpu_assigned, - __entry->r5_overhead) -); - -TRACE_EVENT(nvhost_pva_task_vpu_perf, - - TP_PROTO( - const char *name, - u32 index, - u32 count, - u32 sum, - u64 sum_squared, - u32 min, - u32 max - ), - - TP_ARGS( - name, - index, - count, - sum, - sum_squared, - min, - max - ), - - TP_STRUCT__entry( - __field(const char *, name) - __field(u32, index) - __field(u32, count) - __field(u32, sum) - __field(u64, sum_squared) - __field(u32, min) - __field(u32, max) - ), - - TP_fast_assign( - __entry->name = name; - __entry->index = index; - __entry->count = count; - __entry->sum = sum; - __entry->sum_squared = sum_squared; - __entry->min = min; - __entry->max = max; - ), - - TP_printk("%s\tindex: %u\tcount: %u\taverage: %u\t" - "variance: %llu\tminimum: %u\t" - "maximum: %u", - __entry->name, __entry->index, __entry->count, - __entry->sum / __entry->count, - ((u64)__entry->count * __entry->sum_squared - - (u64)__entry->sum * (u64)__entry->sum) - / __entry->count / __entry->count, - __entry->min, __entry->max) -); - -TRACE_EVENT(nvhost_pva_task_timestamp, - - TP_PROTO( - const char *name, - u32 class, - u32 syncpoint_id, - u32 syncpoint_thresh, - u64 start_time, - u64 end_time - ), - - TP_ARGS( - name, - class, - syncpoint_id, - syncpoint_thresh, - start_time, - end_time - ), - - TP_STRUCT__entry( - __field(const char *, name) - __field(u32, class) - __field(u32, syncpoint_id) - __field(u32, syncpoint_thresh) - __field(u64, start_time) - __field(u64, end_time) - ), - - TP_fast_assign( - __entry->name = name; - __entry->class = class; - __entry->syncpoint_id = syncpoint_id; - __entry->syncpoint_thresh = syncpoint_thresh; - __entry->start_time = start_time; - __entry->end_time = end_time; - ), - - TP_printk("name=%s, class=0x%02x, syncpoint_id=%u, syncpoint_thresh=%u, start_time=%llu, end_time=%llu", - __entry->name, __entry->class, __entry->syncpoint_id, __entry->syncpoint_thresh, - __entry->start_time, __entry->end_time) -); - -#endif /* _TRACE_NVHOST_PVA_H */ - -/* This part must be outside protection */ -#include diff --git a/include/trace/events/nvpva_ftrace.h b/include/trace/events/nvpva_ftrace.h index 3d1611b5..88e0e152 100644 --- a/include/trace/events/nvpva_ftrace.h +++ b/include/trace/events/nvpva_ftrace.h @@ -6,7 +6,7 @@ */ #undef TRACE_SYSTEM -#define TRACE_SYSTEM nvpva_ftrace +#define TRACE_SYSTEM tegra_pva #if !defined(_TRACE_NVPVA_FTRACE_H) || defined(TRACE_HEADER_MULTI_READ) #define _TRACE_NVPVA_FTRACE_H @@ -75,16 +75,16 @@ TRACE_EVENT(pva_job_base_event, ); TRACE_EVENT(pva_job_ext_event, - TP_PROTO(u32 job_id, u32 syncpt_id, u32 threshold, u32 vpu_id, u32 queue_id, + TP_PROTO(u32 job_id, u32 syncpt_id, u32 threshold, u32 vpu_id, u64 queue_begin_timestamp, u64 queue_end_timestamp, u64 prepare_begin_timestamp, u64 prepare_end_timestamp, u64 vpu_begin_timestamp, u64 vpu_end_timestamp, - u64 post_begin_timestamp, u64 post_end_timestamp), - TP_ARGS(job_id, syncpt_id, threshold, vpu_id, queue_id, + u64 post_begin_timestamp, u64 post_end_stamp), + TP_ARGS(job_id, syncpt_id, threshold, vpu_id, queue_begin_timestamp, queue_end_timestamp, prepare_begin_timestamp, prepare_end_timestamp, vpu_begin_timestamp, vpu_end_timestamp, - post_begin_timestamp, post_end_timestamp), + post_begin_timestamp, post_end_stamp), TP_STRUCT__entry( __field(u64, queue_begin_timestamp) __field(u64, queue_end_timestamp) @@ -93,7 +93,7 @@ TRACE_EVENT(pva_job_ext_event, __field(u64, vpu_begin_timestamp) __field(u64, vpu_end_timestamp) __field(u64, post_begin_timestamp) - __field(u64, post_end_timestamp) + __field(u64, post_end_stamp) __field(u32, job_id) __field(u32, syncpt_id) __field(u32, threshold) @@ -111,8 +111,8 @@ TRACE_EVENT(pva_job_ext_event, __entry->vpu_begin_timestamp = vpu_begin_timestamp; __entry->vpu_end_timestamp = vpu_end_timestamp; __entry->post_begin_timestamp = post_begin_timestamp; - __entry->post_end_timestamp = post_end_timestamp; - __entry->queue_id = queue_id; + __entry->post_end_stamp = post_end_stamp; + __entry->queue_id = (job_id >> 8); __entry->vpu_id = vpu_id; ), TP_printk("job_id=%u syncpt_id=%u threshold=%u vpu_id=%u queue_id=%u " @@ -125,7 +125,7 @@ TRACE_EVENT(pva_job_ext_event, __entry->queue_begin_timestamp, __entry->queue_end_timestamp, __entry->prepare_begin_timestamp, __entry->prepare_end_timestamp, __entry->vpu_begin_timestamp, __entry->vpu_end_timestamp, - __entry->post_begin_timestamp, __entry->post_end_timestamp + __entry->post_begin_timestamp, __entry->post_end_stamp ) ); @@ -173,7 +173,155 @@ TRACE_EVENT(job_timestamps, ) ); +TRACE_EVENT(nvpva_task_stats, + TP_PROTO( + const char *name, + u64 queued_time, + u64 head_time, + u64 input_actions_complete, + u64 vpu_assigned_time, + u64 vpu_start_time, + u64 vpu_complete_time, + u64 complete_time, + u8 vpu_assigned, + u64 r5_overhead + ), + TP_ARGS( + name, + queued_time, + head_time, + input_actions_complete, + vpu_assigned_time, + vpu_start_time, + vpu_complete_time, + complete_time, + vpu_assigned, + r5_overhead + ), + TP_STRUCT__entry( + __field(const char *, name) + __field(u64, queued_time) + __field(u64, head_time) + __field(u64, input_actions_complete) + __field(u64, vpu_assigned_time) + __field(u64, vpu_start_time) + __field(u64, vpu_complete_time) + __field(u64, complete_time) + __field(u8, vpu_assigned) + __field(u64, r5_overhead) + ), + TP_fast_assign( + __entry->name = name; + __entry->queued_time = queued_time; + __entry->head_time = head_time; + __entry->input_actions_complete = input_actions_complete; + __entry->vpu_assigned_time = vpu_assigned_time; + __entry->vpu_start_time = vpu_start_time; + __entry->vpu_complete_time = vpu_complete_time; + __entry->complete_time = complete_time; + __entry->vpu_assigned = vpu_assigned; + __entry->r5_overhead = r5_overhead; + ), + TP_printk("%s\tqueued_time: %llu\thead_time: %llu\t" + "input_actions_complete: %llu\tvpu_assigned_time: %llu\t" + "vpu_start_time: %llu\tvpu_complete_time: %llu\t" + "complete_time: %llu\tvpu_assigned: %d\t" + "r5_overhead: %llu us", + __entry->name, __entry->queued_time, __entry->head_time, + __entry->input_actions_complete, __entry->vpu_assigned_time, + __entry->vpu_start_time, __entry->vpu_complete_time, + __entry->complete_time, __entry->vpu_assigned, + __entry->r5_overhead) +); + +TRACE_EVENT(nvpva_task_timestamp, + TP_PROTO( + const char *name, + u32 class, + u32 syncpoint_id, + u32 syncpoint_thresh, + u64 start_time, + u64 end_time + ), + TP_ARGS( + name, + class, + syncpoint_id, + syncpoint_thresh, + start_time, + end_time + ), + TP_STRUCT__entry( + __field(const char *, name) + __field(u32, class) + __field(u32, syncpoint_id) + __field(u32, syncpoint_thresh) + __field(u64, start_time) + __field(u64, end_time) + ), + TP_fast_assign( + __entry->name = name; + __entry->class = class; + __entry->syncpoint_id = syncpoint_id; + __entry->syncpoint_thresh = syncpoint_thresh; + __entry->start_time = start_time; + __entry->end_time = end_time; + ), + TP_printk("name=%s, class=0x%02x, syncpoint_id=%u, syncpoint_thresh=%u, start_time=%llu, end_time=%llu", + __entry->name, __entry->class, __entry->syncpoint_id, __entry->syncpoint_thresh, + __entry->start_time, __entry->end_time) +); + +TRACE_EVENT(nvpva_write, + TP_PROTO( + u64 delta_time, + const char *name, + u8 major, + u8 minor, + u8 flags, + u8 sequence, + u32 arg1, + u32 arg2 + ), + TP_ARGS( + delta_time, + name, + major, + minor, + flags, + sequence, + arg1, + arg2 + ), + TP_STRUCT__entry( + __field(u64, delta_time) + __field(const char *, name) + __field(u8, major) + __field(u8, minor) + __field(u8, flags) + __field(u8, sequence) + __field(u32, arg1) + __field(u32, arg2) + ), + TP_fast_assign( + __entry->delta_time = delta_time; + __entry->name = name; + __entry->major = major; + __entry->minor = minor; + __entry->flags = flags; + __entry->sequence = sequence; + __entry->arg1 = arg1; + __entry->arg2 = arg2; + ), + TP_printk("time: %llu\t %s\t major: 0x%x\tminor: 0x%x\tflags: 0x%x\t" + "sequence: 0x%x\targ1: %u\targ2: %u", + __entry->delta_time, __entry->name, __entry->major, + __entry->minor, __entry->flags, __entry->sequence, + __entry->arg1, __entry->arg2) +); #endif /* End of _TRACE_NVPVA_FTRACE_H */ /* This part must be outside protection */ +#undef TRACE_INCLUDE_FILE +#define TRACE_INCLUDE_FILE nvpva_ftrace #include