From c4d1462fd625707f3593737b8e641782620cda49 Mon Sep 17 00:00:00 2001 From: Evgeny Kornev Date: Thu, 12 Dec 2024 15:43:38 +0200 Subject: [PATCH] tracing: Fix ftrace for ISP trace events Fix ISP trace events due to 64 bit TS cahnges Jira CAMERASW-30345 Change-Id: I33aa9325603ec939979e11964224bf3f113a0adb Signed-off-by: Evgeny Kornev Reviewed-on: https://git-master.nvidia.com/r/c/linux-nv-oot/+/3266979 Reviewed-by: Jukka Kaartinen GVS: buildbot_gerritrpt Reviewed-by: svcacv Reviewed-by: Semi Malinen Reviewed-by: Sudhir Vyas --- .../platform/tegra/rtcpu/tegra-rtcpu-trace.c | 26 ++++++++------- include/trace/events/tegra_rtcpu.h | 32 +++++++++---------- 2 files changed, 30 insertions(+), 28 deletions(-) diff --git a/drivers/platform/tegra/rtcpu/tegra-rtcpu-trace.c b/drivers/platform/tegra/rtcpu/tegra-rtcpu-trace.c index a6a0fa40..2fc06a7d 100644 --- a/drivers/platform/tegra/rtcpu/tegra-rtcpu-trace.c +++ b/drivers/platform/tegra/rtcpu/tegra-rtcpu-trace.c @@ -909,39 +909,41 @@ static void rtcpu_trace_isp_falcon_event(struct camrtc_event_struct *event) u8 ispfalcon_tag = (u8) ((event->data.data32[0] & 0xFF) >> 1U); u8 ch = (u8) ((event->data.data32[0] & 0xFF00) >> 8U); u8 seq = (u8) ((event->data.data32[0] & 0xFF0000) >> 16U); - u32 tstamp = event->data.data32[1]; - u32 isp_unit_id = event->data.data32[4]; + u32 low_bits_ts = event->data.data32[1]; + u32 high_bits_ts = event->data.data32[2]; + u64 tstamp = ((u64)high_bits_ts << 32U) | low_bits_ts; + u32 isp_unit_id = event->data.data32[5]; switch (ispfalcon_tag) { case TRACE_ISP_FALCON_EVENT_TS: trace_rtcpu_isp_falcon_tile_start( ch, seq, tstamp, isp_unit_id, - (u8) (event->data.data32[3] & 0xFF), - (u8) ((event->data.data32[3] & 0xFF00) >> 8U), - (u16) (event->data.data32[2] & 0xFFFF), - (u16) ((event->data.data32[2] & 0xFFFF0000) >> 16U)); + (u8) (event->data.data32[4] & 0xFF), + (u8) ((event->data.data32[4] & 0xFF00) >> 8U), + (u16) (event->data.data32[3] & 0xFFFF), + (u16) ((event->data.data32[3] & 0xFFFF0000) >> 16U)); break; case TRACE_ISP_FALCON_EVENT_TE: trace_rtcpu_isp_falcon_tile_end( ch, seq, tstamp, isp_unit_id, - (u8) (event->data.data32[3] & 0xFF), - (u8) ((event->data.data32[3] & 0xFF00) >> 8U)); + (u8) (event->data.data32[4] & 0xFF), + (u8) ((event->data.data32[4] & 0xFF00) >> 8U)); break; case TRACE_ISP_FALCON_PROFILE_START: trace_rtcpu_isp_falcon_task_start( ch, tstamp, isp_unit_id, - event->data.data32[2]); + event->data.data32[3]); break; case TRACE_ISP_FALCON_PROFILE_END: trace_rtcpu_isp_falcon_task_end( tstamp, isp_unit_id, - event->data.data32[2]); + event->data.data32[3]); break; default: trace_rtcpu_isp_falcon( ispfalcon_tag, ch, seq, tstamp, isp_unit_id, - event->data.data32[2], - event->data.data32[3]); + event->data.data32[3], + event->data.data32[4]); break; } diff --git a/include/trace/events/tegra_rtcpu.h b/include/trace/events/tegra_rtcpu.h index 28e6a8f1..b1b4cb5d 100644 --- a/include/trace/events/tegra_rtcpu.h +++ b/include/trace/events/tegra_rtcpu.h @@ -1,6 +1,6 @@ /* SPDX-License-Identifier: GPL-2.0-only */ /* - * Copyright (c) 2024, NVIDIA CORPORATION & AFFILIATES. All rights reserved. + * SPDX-FileCopyrightText: Copyright (c) 2024, NVIDIA CORPORATION & AFFILIATES. All rights reserved. */ #undef TRACE_SYSTEM @@ -433,13 +433,13 @@ TRACE_EVENT(rtcpu_nvcsi_intr, */ TRACE_EVENT(rtcpu_isp_falcon, - TP_PROTO(u8 tag, u8 ch, u8 seq, u32 tstamp, u32 isp_unit_id, u32 data, u32 ext_data), + TP_PROTO(u8 tag, u8 ch, u8 seq, u64 tstamp, u32 isp_unit_id, u32 data, u32 ext_data), TP_ARGS(tag, ch, seq, tstamp, isp_unit_id, data, ext_data), TP_STRUCT__entry( __field(u8, tag) __field(u8, ch) __field(u8, seq) - __field(u32, tstamp) + __field(u64, tstamp) __field(u32, isp_unit_id) __field(u32, data) __field(u32, ext_data) @@ -454,7 +454,7 @@ TRACE_EVENT(rtcpu_isp_falcon, __entry->ext_data = ext_data; ), TP_printk( - "tag:0x%x tstamp:%u ch:%u isp:%u seq:%u data:0x%08x ext_data:0x%08x", + "tag:0x%x tstamp:%llu ch:%u isp:%u seq:%u data:0x%08x ext_data:0x%08x", __entry->tag, __entry->tstamp, __entry->ch, __entry->isp_unit_id, __entry->seq, __entry->data, __entry->ext_data ) @@ -464,11 +464,11 @@ extern const char * const g_trace_isp_falcon_task_strs[]; extern const unsigned int g_trace_isp_falcon_task_str_count; TRACE_EVENT(rtcpu_isp_falcon_task_start, - TP_PROTO(u8 ch, u32 tstamp, u32 isp_unit_id, u32 task), + TP_PROTO(u8 ch, u64 tstamp, u32 isp_unit_id, u32 task), TP_ARGS(ch, tstamp, isp_unit_id, task), TP_STRUCT__entry( __field(u8, ch) - __field(u32, tstamp) + __field(u64, tstamp) __field(u32, isp_unit_id) __field(u32, task) ), @@ -479,7 +479,7 @@ TRACE_EVENT(rtcpu_isp_falcon_task_start, __entry->task = task; ), TP_printk( - "tstamp:%u ch:%u isp:%u task:%s", + "tstamp:%llu ch:%u isp:%u task:%s", __entry->tstamp, __entry->ch, __entry->isp_unit_id, (__entry->task < g_trace_isp_falcon_task_str_count) ? g_trace_isp_falcon_task_strs[__entry->task] : @@ -488,10 +488,10 @@ TRACE_EVENT(rtcpu_isp_falcon_task_start, ); TRACE_EVENT(rtcpu_isp_falcon_task_end, - TP_PROTO(u32 tstamp, u32 isp_unit_id, u32 task), + TP_PROTO(u64 tstamp, u32 isp_unit_id, u32 task), TP_ARGS(tstamp, isp_unit_id, task), TP_STRUCT__entry( - __field(u32, tstamp) + __field(u64, tstamp) __field(u32, isp_unit_id) __field(u32, task) ), @@ -501,7 +501,7 @@ TRACE_EVENT(rtcpu_isp_falcon_task_end, __entry->task = task; ), TP_printk( - "tstamp:%u isp:%u task:%s", + "tstamp:%llu isp:%u task:%s", __entry->tstamp, __entry->isp_unit_id, (__entry->task < g_trace_isp_falcon_task_str_count) ? g_trace_isp_falcon_task_strs[__entry->task] : @@ -512,14 +512,14 @@ TRACE_EVENT(rtcpu_isp_falcon_task_end, TRACE_EVENT(rtcpu_isp_falcon_tile_start, TP_PROTO( - u8 ch, u8 seq, u32 tstamp, u32 isp_unit_id, + u8 ch, u8 seq, u64 tstamp, u32 isp_unit_id, u8 tile_x, u8 tile_y, u16 tile_w, u16 tile_h), TP_ARGS(ch, seq, tstamp, isp_unit_id, tile_x, tile_y, tile_w, tile_h), TP_STRUCT__entry( __field(u8, ch) __field(u8, seq) - __field(u32, tstamp) + __field(u64, tstamp) __field(u32, isp_unit_id) __field(u8, tile_x) __field(u8, tile_y) @@ -538,7 +538,7 @@ TRACE_EVENT(rtcpu_isp_falcon_tile_start, __entry->tile_h = tile_h; ), TP_printk( - "tstamp:%u ch:%u isp:%u seq:%u tile_x:%u tile_y:%u tile_w:%u tile_h:%u", + "tstamp:%llu ch:%u isp:%u seq:%u tile_x:%u tile_y:%u tile_w:%u tile_h:%u", __entry->tstamp, __entry->ch, __entry->isp_unit_id, __entry->seq, __entry->tile_x, __entry->tile_y, __entry->tile_w, __entry->tile_h @@ -546,12 +546,12 @@ TRACE_EVENT(rtcpu_isp_falcon_tile_start, ); TRACE_EVENT(rtcpu_isp_falcon_tile_end, - TP_PROTO(u8 ch, u8 seq, u32 tstamp, u32 isp_unit_id, u8 tile_x, u8 tile_y), + TP_PROTO(u8 ch, u8 seq, u64 tstamp, u32 isp_unit_id, u8 tile_x, u8 tile_y), TP_ARGS(ch, seq, tstamp, isp_unit_id, tile_x, tile_y), TP_STRUCT__entry( __field(u8, ch) __field(u8, seq) - __field(u32, tstamp) + __field(u64, tstamp) __field(u32, isp_unit_id) __field(u8, tile_x) __field(u8, tile_y) @@ -566,7 +566,7 @@ TRACE_EVENT(rtcpu_isp_falcon_tile_end, __entry->tile_y = tile_y; ), TP_printk( - "tstamp:%u ch:%u isp:%u seq:%u tile_x:%u tile_y:%u", + "tstamp:%llu ch:%u isp:%u seq:%u tile_x:%u tile_y:%u", __entry->tstamp, __entry->ch, __entry->isp_unit_id, __entry->seq, __entry->tile_x, __entry->tile_y )