Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 6d7ffa0b authored by Samantha Tran's avatar Samantha Tran Committed by Gerrit - the friendly Code Review server
Browse files

msm: sde: restructure trace calls to align with bpf_probe



Trace calls are restructured to align with newly added file
bpf_probe in Kona which limits the parameters passed to
DECLARE_EVENT_CLASS.

Change-Id: If43e4522716490e10968130c81dcb03ed9a05d30
Signed-off-by: default avatarSamantha Tran <samtran@codeaurora.org>
parent 56296c71
Loading
Loading
Loading
Loading
+41 −21
Original line number Diff line number Diff line
@@ -1508,6 +1508,7 @@ static void sde_rotator_commit_handler(struct kthread_work *work)
	struct sde_rot_hw_resource *hw;
	struct sde_rot_mgr *mgr;
	struct sched_param param = { .sched_priority = 5 };
	struct sde_rot_trace_entry rot_trace;
	int ret;

	entry = container_of(work, struct sde_rot_entry, commit_work);
@@ -1556,17 +1557,26 @@ static void sde_rotator_commit_handler(struct kthread_work *work)
	if (entry->item.ts)
		entry->item.ts[SDE_ROTATOR_TS_COMMIT] = ktime_get();

	/* Set values to pass to trace */
	rot_trace.wb_idx = entry->item.wb_idx;
	rot_trace.flags = entry->item.flags;
	rot_trace.input_format = entry->item.input.format;
	rot_trace.input_width = entry->item.input.width;
	rot_trace.input_height = entry->item.input.height;
	rot_trace.src_x = entry->item.src_rect.x;
	rot_trace.src_y = entry->item.src_rect.y;
	rot_trace.src_w = entry->item.src_rect.w;
	rot_trace.src_h = entry->item.src_rect.h;
	rot_trace.output_format = entry->item.output.format;
	rot_trace.output_width = entry->item.output.width;
	rot_trace.output_height = entry->item.output.height;
	rot_trace.dst_x = entry->item.dst_rect.x;
	rot_trace.dst_y = entry->item.dst_rect.y;
	rot_trace.dst_w = entry->item.dst_rect.w;
	rot_trace.dst_h = entry->item.dst_rect.h;

	trace_rot_entry_commit(
		entry->item.session_id, entry->item.sequence_id,
		entry->item.wb_idx, entry->item.flags,
		entry->item.input.format,
		entry->item.input.width, entry->item.input.height,
		entry->item.src_rect.x, entry->item.src_rect.y,
		entry->item.src_rect.w, entry->item.src_rect.h,
		entry->item.output.format,
		entry->item.output.width, entry->item.output.height,
		entry->item.dst_rect.x, entry->item.dst_rect.y,
		entry->item.dst_rect.w, entry->item.dst_rect.h);
		entry->item.session_id, entry->item.sequence_id, &rot_trace);

	ATRACE_INT("sde_smmu_ctrl", 0);
	ret = sde_smmu_ctrl(1);
@@ -1652,6 +1662,7 @@ static void sde_rotator_done_handler(struct kthread_work *work)
	struct sde_rot_entry_container *request;
	struct sde_rot_hw_resource *hw;
	struct sde_rot_mgr *mgr;
	struct sde_rot_trace_entry rot_trace;
	int ret;

	entry = container_of(work, struct sde_rot_entry, done_work);
@@ -1686,17 +1697,26 @@ static void sde_rotator_done_handler(struct kthread_work *work)
	if (entry->item.ts)
		entry->item.ts[SDE_ROTATOR_TS_DONE] = ktime_get();

	trace_rot_entry_done(
		entry->item.session_id, entry->item.sequence_id,
		entry->item.wb_idx, entry->item.flags,
		entry->item.input.format,
		entry->item.input.width, entry->item.input.height,
		entry->item.src_rect.x, entry->item.src_rect.y,
		entry->item.src_rect.w, entry->item.src_rect.h,
		entry->item.output.format,
		entry->item.output.width, entry->item.output.height,
		entry->item.dst_rect.x, entry->item.dst_rect.y,
		entry->item.dst_rect.w, entry->item.dst_rect.h);
	/* Set values to pass to trace */
	rot_trace.wb_idx = entry->item.wb_idx;
	rot_trace.flags = entry->item.flags;
	rot_trace.input_format = entry->item.input.format;
	rot_trace.input_width = entry->item.input.width;
	rot_trace.input_height = entry->item.input.height;
	rot_trace.src_x = entry->item.src_rect.x;
	rot_trace.src_y = entry->item.src_rect.y;
	rot_trace.src_w = entry->item.src_rect.w;
	rot_trace.src_h = entry->item.src_rect.h;
	rot_trace.output_format = entry->item.output.format;
	rot_trace.output_width = entry->item.output.width;
	rot_trace.output_height = entry->item.output.height;
	rot_trace.dst_x = entry->item.dst_rect.x;
	rot_trace.dst_y = entry->item.dst_rect.y;
	rot_trace.dst_w = entry->item.dst_rect.w;
	rot_trace.dst_h = entry->item.dst_rect.h;

	trace_rot_entry_done(entry->item.session_id, entry->item.sequence_id,
			&rot_trace);

	sde_rot_mgr_lock(mgr);
	sde_rotator_put_hw_resource(entry->commitq, entry, entry->commitq->hw);
+23 −1
Original line number Diff line number Diff line
/* SPDX-License-Identifier: GPL-2.0-only */
/*
 * Copyright (c) 2015-2018, The Linux Foundation. All rights reserved.
 * Copyright (c) 2015-2019, The Linux Foundation. All rights reserved.
 */

#ifndef SDE_ROTATOR_CORE_H
@@ -312,6 +312,28 @@ struct sde_rot_entry {
	struct sde_rot_file_private *private;
};

/*
 * struct sde_rot_trace_entry - structure used to pass info to trace
 */
struct sde_rot_trace_entry {
	u32 wb_idx;
	u32 flags;
	u32 input_format;
	u32 input_width;
	u32 input_height;
	u32 src_x;
	u32 src_y;
	u32 src_w;
	u32 src_h;
	u32 output_format;
	u32 output_width;
	u32 output_height;
	u32 dst_x;
	u32 dst_y;
	u32 dst_w;
	u32 dst_h;
};

/*
 * struct sde_rot_perf - rotator session performance configuration
 * @list: list of performance configuration under one session
+43 −32
Original line number Diff line number Diff line
// SPDX-License-Identifier: GPL-2.0-only
/*
 * Copyright (c) 2015-2018, The Linux Foundation. All rights reserved.
 * Copyright (c) 2015-2019, The Linux Foundation. All rights reserved.
 */
#define pr_fmt(fmt)	"%s:%d: " fmt, __func__, __LINE__

@@ -1638,6 +1638,7 @@ int sde_rotator_inline_commit(void *handle, struct sde_rotator_inline_cmd *cmd,
	struct sde_rotator_request *request = NULL;
	struct sde_rot_entry_container *req = NULL;
	struct sde_rotation_config rotcfg;
	struct sde_rot_trace_entry rot_trace;
	ktime_t *ts;
	u32 flags = 0;
	int i, ret = 0;
@@ -1839,24 +1840,27 @@ int sde_rotator_inline_commit(void *handle, struct sde_rotator_inline_cmd *cmd,
		req->retire_kw = ctx->work_queue.rot_kw;
		req->retire_work = &request->retire_work;

		/* Set values to pass to trace */
		rot_trace.wb_idx = req->entries[0].item.wb_idx;
		rot_trace.flags = req->entries[0].item.flags;
		rot_trace.input_format = req->entries[0].item.input.format;
		rot_trace.input_width = req->entries[0].item.input.width;
		rot_trace.input_height = req->entries[0].item.input.height;
		rot_trace.src_x = req->entries[0].item.src_rect.x;
		rot_trace.src_y = req->entries[0].item.src_rect.y;
		rot_trace.src_w = req->entries[0].item.src_rect.w;
		rot_trace.src_h = req->entries[0].item.src_rect.h;
		rot_trace.output_format = req->entries[0].item.output.format;
		rot_trace.output_width = req->entries[0].item.output.width;
		rot_trace.output_height = req->entries[0].item.output.height;
		rot_trace.dst_x = req->entries[0].item.dst_rect.x;
		rot_trace.dst_y = req->entries[0].item.dst_rect.y;
		rot_trace.dst_w = req->entries[0].item.dst_rect.w;
		rot_trace.dst_h = req->entries[0].item.dst_rect.h;


		trace_rot_entry_fence(
			ctx->session_id, cmd->sequence_id,
			req->entries[0].item.wb_idx,
			req->entries[0].item.flags,
			req->entries[0].item.input.format,
			req->entries[0].item.input.width,
			req->entries[0].item.input.height,
			req->entries[0].item.src_rect.x,
			req->entries[0].item.src_rect.y,
			req->entries[0].item.src_rect.w,
			req->entries[0].item.src_rect.h,
			req->entries[0].item.output.format,
			req->entries[0].item.output.width,
			req->entries[0].item.output.height,
			req->entries[0].item.dst_rect.x,
			req->entries[0].item.dst_rect.y,
			req->entries[0].item.dst_rect.w,
			req->entries[0].item.dst_rect.h);
			ctx->session_id, cmd->sequence_id, &rot_trace);

		ret = sde_rotator_handle_request_common(
				rot_dev->mgr, ctx->private, req);
@@ -3078,6 +3082,7 @@ static int sde_rotator_process_buffers(struct sde_rotator_ctx *ctx,
	struct sde_rotator_statistics *stats = &rot_dev->stats;
	struct sde_rotator_vbinfo *vbinfo_out;
	struct sde_rotator_vbinfo *vbinfo_cap;
	struct sde_rot_trace_entry rot_trace;
	ktime_t *ts;
	int ret;

@@ -3119,21 +3124,27 @@ static int sde_rotator_process_buffers(struct sde_rotator_ctx *ctx,

	ts[SDE_ROTATOR_TS_FENCE] = ktime_get();

	/* Set values to pass to trace */
	rot_trace.wb_idx = ctx->fh.prio;
	rot_trace.flags = (ctx->rotate << 0) | (ctx->hflip << 8) |
			(ctx->hflip << 9) | (ctx->secure << 10);
	rot_trace.input_format = ctx->format_out.fmt.pix.pixelformat;
	rot_trace.input_width = ctx->format_out.fmt.pix.width;
	rot_trace.input_height = ctx->format_out.fmt.pix.height;
	rot_trace.src_x = ctx->crop_out.left;
	rot_trace.src_y = ctx->crop_out.top;
	rot_trace.src_w = ctx->crop_out.width;
	rot_trace.src_h = ctx->crop_out.height;
	rot_trace.output_format = ctx->format_cap.fmt.pix.pixelformat;
	rot_trace.output_width = ctx->format_cap.fmt.pix.width;
	rot_trace.output_height = ctx->format_cap.fmt.pix.height;
	rot_trace.dst_x = ctx->crop_cap.left;
	rot_trace.dst_y = ctx->crop_cap.top;
	rot_trace.dst_w = ctx->crop_cap.width;
	rot_trace.dst_h = ctx->crop_cap.height;

	trace_rot_entry_fence(
		ctx->session_id, vbinfo_cap->fence_ts,
		ctx->fh.prio,
		(ctx->rotate << 0) | (ctx->hflip << 8) |
			(ctx->hflip << 9) | (ctx->secure << 10),
		ctx->format_out.fmt.pix.pixelformat,
		ctx->format_out.fmt.pix.width,
		ctx->format_out.fmt.pix.height,
		ctx->crop_out.left, ctx->crop_out.top,
		ctx->crop_out.width, ctx->crop_out.height,
		ctx->format_cap.fmt.pix.pixelformat,
		ctx->format_cap.fmt.pix.width,
		ctx->format_cap.fmt.pix.height,
		ctx->crop_cap.left, ctx->crop_cap.top,
		ctx->crop_cap.width, ctx->crop_cap.height);
		ctx->session_id, vbinfo_cap->fence_ts, &rot_trace);

	if (vbinfo_out->fence) {
		sde_rot_mgr_unlock(rot_dev->mgr);
+27 −50
Original line number Diff line number Diff line
/* SPDX-License-Identifier: GPL-2.0-only */
/*
 * Copyright (c) 2014, 2015-2018, The Linux Foundation. All rights reserved.
 * Copyright (c) 2014, 2015-2019, The Linux Foundation. All rights reserved.
 */
#if !defined(TRACE_SDE_ROTATOR_H) || defined(TRACE_HEADER_MULTI_READ)
#define TRACE_SDE_ROTATOR_H
@@ -13,16 +13,11 @@
#define TRACE_INCLUDE_FILE sde_rotator_trace

#include <linux/tracepoint.h>
#include <sde_rotator_core.h>

DECLARE_EVENT_CLASS(rot_entry_template,
	TP_PROTO(u32 ss_id, u32 sq_id, u32 pr_id, u32 flags,
			u32 src_fmt, u32 src_bw, u32 src_bh,
			u32 src_x, u32 src_y, u32 src_w, u32 src_h,
			u32 dst_fmt, u32 dst_bw, u32 dst_bh,
			u32 dst_x, u32 dst_y, u32 dst_w, u32 dst_h),
	TP_ARGS(ss_id, sq_id, pr_id, flags,
			src_fmt, src_bw, src_bh, src_x, src_y, src_w, src_h,
			dst_fmt, dst_bw, dst_bh, dst_x, dst_y, dst_w, dst_h),
	TP_PROTO(u32 ss_id, u32 sq_id, struct sde_rot_trace_entry *rot),
	TP_ARGS(ss_id, sq_id, rot),
	TP_STRUCT__entry(
			__field(u32, ss_id)
			__field(u32, sq_id)
@@ -46,22 +41,22 @@ DECLARE_EVENT_CLASS(rot_entry_template,
	TP_fast_assign(
			__entry->ss_id = ss_id;
			__entry->sq_id = sq_id;
			__entry->pr_id = pr_id;
			__entry->flags = flags;
			__entry->src_fmt = src_fmt;
			__entry->src_bw = src_bw;
			__entry->src_bh = src_bh;
			__entry->src_x = src_x;
			__entry->src_y = src_y;
			__entry->src_w = src_w;
			__entry->src_h = src_h;
			__entry->dst_fmt = dst_fmt;
			__entry->dst_bw = dst_bw;
			__entry->dst_bh = dst_bh;
			__entry->dst_x = dst_x;
			__entry->dst_y = dst_y;
			__entry->dst_w = dst_w;
			__entry->dst_h = dst_h;
			__entry->pr_id = rot->wb_idx;
			__entry->flags = rot->flags;
			__entry->src_fmt = rot->input_format;
			__entry->src_bw = rot->input_width;
			__entry->src_bh = rot->input_height;
			__entry->src_x = rot->src_x;
			__entry->src_y = rot->src_y;
			__entry->src_w = rot->src_w;
			__entry->src_h = rot->src_h;
			__entry->dst_fmt = rot->output_format;
			__entry->dst_bw = rot->output_width;
			__entry->dst_bh = rot->output_height;
			__entry->dst_x = rot->dst_x;
			__entry->dst_y = rot->dst_y;
			__entry->dst_w = rot->dst_w;
			__entry->dst_h = rot->dst_h;
	),

	TP_printk("%d.%d|%d|%x|%x|%u,%u|%u,%u,%u,%u|%x|%u,%u|%u,%u,%u,%u|",
@@ -76,36 +71,18 @@ DECLARE_EVENT_CLASS(rot_entry_template,
);

DEFINE_EVENT(rot_entry_template, rot_entry_fence,
	TP_PROTO(u32 ss_id, u32 sq_id, u32 pr_id, u32 flags,
			u32 src_fmt, u32 src_bw, u32 src_bh,
			u32 src_x, u32 src_y, u32 src_w, u32 src_h,
			u32 dst_fmt, u32 dst_bw, u32 dst_bh,
			u32 dst_x, u32 dst_y, u32 dst_w, u32 dst_h),
	TP_ARGS(ss_id, sq_id, pr_id, flags,
			src_fmt, src_bw, src_bh, src_x, src_y, src_w, src_h,
			dst_fmt, dst_bw, dst_bh, dst_x, dst_y, dst_w, dst_h)
	TP_PROTO(u32 ss_id, u32 sq_id, struct sde_rot_trace_entry *rot),
	TP_ARGS(ss_id, sq_id, rot)
);

DEFINE_EVENT(rot_entry_template, rot_entry_commit,
	TP_PROTO(u32 ss_id, u32 sq_id, u32 pr_id, u32 flags,
			u32 src_fmt, u32 src_bw, u32 src_bh,
			u32 src_x, u32 src_y, u32 src_w, u32 src_h,
			u32 dst_fmt, u32 dst_bw, u32 dst_bh,
			u32 dst_x, u32 dst_y, u32 dst_w, u32 dst_h),
	TP_ARGS(ss_id, sq_id, pr_id, flags,
			src_fmt, src_bw, src_bh, src_x, src_y, src_w, src_h,
			dst_fmt, dst_bw, dst_bh, dst_x, dst_y, dst_w, dst_h)
	TP_PROTO(u32 ss_id, u32 sq_id, struct sde_rot_trace_entry *rot),
	TP_ARGS(ss_id, sq_id, rot)
);

DEFINE_EVENT(rot_entry_template, rot_entry_done,
	TP_PROTO(u32 ss_id, u32 sq_id, u32 pr_id, u32 flags,
			u32 src_fmt, u32 src_bw, u32 src_bh,
			u32 src_x, u32 src_y, u32 src_w, u32 src_h,
			u32 dst_fmt, u32 dst_bw, u32 dst_bh,
			u32 dst_x, u32 dst_y, u32 dst_w, u32 dst_h),
	TP_ARGS(ss_id, sq_id, pr_id, flags,
			src_fmt, src_bw, src_bh, src_x, src_y, src_w, src_h,
			dst_fmt, dst_bw, dst_bh, dst_x, dst_y, dst_w, dst_h)
	TP_PROTO(u32 ss_id, u32 sq_id, struct sde_rot_trace_entry *rot),
	TP_ARGS(ss_id, sq_id, rot)
);

TRACE_EVENT(rot_perf_set_qos_luts,
@@ -289,7 +266,7 @@ TRACE_EVENT(rot_bw_ao_as_context,

#define SDE_ROT_TRACE_EVTLOG_SIZE	15
TRACE_EVENT(sde_rot_evtlog,
	TP_PROTO(const char *tag, u32 tag_id, u32 cnt, u32 data[]),
	TP_PROTO(const char *tag, u32 tag_id, u32 cnt, u32 *data),
	TP_ARGS(tag, tag_id, cnt, data),
	TP_STRUCT__entry(
			__field(int, pid)