Prechádzať zdrojové kódy

msm: camera: reqmgr: add trace log for separating multi camera

Based on link_hdl/sensor id, that can separate multi camera event
on reqmgr, apply request, bufdone, isp_active_irq.
Add log of link_hdl/sensor id in above trace event,
that systrace can show independent camera trace event.

CRs-Fixed: 2924042
Change-Id: I7088a8a489a05dae4e62dc131d1c0c45c72038e2
Signed-off-by: Haibin Liu <[email protected]>
Haibin Liu 4 rokov pred
rodič
commit
693c6dfdae

+ 3 - 3
drivers/cam_core/cam_node.c

@@ -1,6 +1,6 @@
 // SPDX-License-Identifier: GPL-2.0-only
 /*
- * Copyright (c) 2017-2020, The Linux Foundation. All rights reserved.
+ * Copyright (c) 2017-2021, The Linux Foundation. All rights reserved.
  */
 
 #include <linux/debugfs.h>
@@ -575,7 +575,7 @@ static int __cam_node_crm_apply_req(struct cam_req_mgr_apply_request *apply)
 		return -EINVAL;
 	}
 
-	trace_cam_apply_req("Node", apply->request_id);
+	trace_cam_apply_req("Node", ctx->ctx_id, apply->request_id, apply->link_hdl);
 
 	return cam_context_handle_crm_apply_req(ctx, apply);
 }
@@ -595,7 +595,7 @@ static int __cam_node_crm_notify_frame_skip(
 		return -EINVAL;
 	}
 
-	trace_cam_apply_req("Node", apply->request_id);
+	trace_cam_apply_req("Node", ctx->ctx_id, apply->request_id, apply->link_hdl);
 
 	return cam_context_handle_crm_notify_frame_skip(ctx, apply);
 }

+ 2 - 2
drivers/cam_fd/fd_hw_mgr/cam_fd_hw_mgr.c

@@ -1,6 +1,6 @@
 // SPDX-License-Identifier: GPL-2.0-only
 /*
- * Copyright (c) 2017-2020, The Linux Foundation. All rights reserved.
+ * Copyright (c) 2017-2021, The Linux Foundation. All rights reserved.
  */
 
 #include <linux/module.h>
@@ -1858,7 +1858,7 @@ static int cam_fd_mgr_hw_config(void *hw_mgr_priv, void *hw_config_args)
 	frame_req = config->priv;
 	req_id = frame_req->request_id;
 
-	trace_cam_apply_req("FD", frame_req->request_id);
+	trace_cam_apply_req("FD", hw_ctx->ctx_index, frame_req->request_id, 0);
 	CAM_DBG(CAM_FD, "FrameHWConfig : Frame[%lld]", frame_req->request_id);
 
 	frame_req->num_hw_update_entries = config->num_hw_update_entries;

+ 1 - 1
drivers/cam_isp/cam_isp_context.c

@@ -5850,7 +5850,7 @@ static int __cam_isp_ctx_apply_req(struct cam_context *ctx,
 	struct cam_isp_context *ctx_isp =
 		(struct cam_isp_context *) ctx->ctx_priv;
 
-	trace_cam_apply_req("ISP", apply->request_id);
+	trace_cam_apply_req("ISP", ctx->ctx_id, apply->request_id, apply->link_hdl);
 	CAM_DBG(CAM_ISP, "Enter: apply req in Substate[%s] request_id:%lld",
 		__cam_isp_ctx_substate_val_to_type(
 		ctx_isp->substate_activated), apply->request_id);

+ 1 - 1
drivers/cam_sensor_module/cam_actuator/cam_actuator_core.c

@@ -297,7 +297,7 @@ int32_t cam_actuator_apply_request(struct cam_req_mgr_apply_request *apply)
 	}
 	request_id = apply->request_id % MAX_PER_FRAME_ARRAY;
 
-	trace_cam_apply_req("Actuator", apply->request_id);
+	trace_cam_apply_req("Actuator", a_ctrl->soc_info.index, apply->request_id, apply->link_hdl);
 
 	CAM_DBG(CAM_ACTUATOR, "Request Id: %lld", apply->request_id);
 	mutex_lock(&(a_ctrl->actuator_mutex));

+ 1 - 1
drivers/cam_sensor_module/cam_sensor/cam_sensor_core.c

@@ -1516,7 +1516,7 @@ int32_t cam_sensor_apply_request(struct cam_req_mgr_apply_request *apply)
 
 	CAM_DBG(CAM_REQ, " Sensor[%d] update req id: %lld",
 		s_ctrl->soc_info.index, apply->request_id);
-	trace_cam_apply_req("Sensor", apply->request_id);
+	trace_cam_apply_req("Sensor", s_ctrl->soc_info.index, apply->request_id, apply->link_hdl);
 	mutex_lock(&(s_ctrl->cam_sensor_mutex));
 	rc = cam_sensor_apply_settings(s_ctrl, apply->request_id,
 		opcode);

+ 27 - 13
drivers/cam_utils/cam_trace.h

@@ -1,6 +1,6 @@
 /* SPDX-License-Identifier: GPL-2.0-only */
 /*
- * Copyright (c) 2017-2020, The Linux Foundation. All rights reserved.
+ * Copyright (c) 2017-2021, The Linux Foundation. All rights reserved.
  */
 
 #if !defined(_CAM_TRACE_H) || defined(TRACE_HEADER_MULTI_READ)
@@ -50,6 +50,7 @@ TRACE_EVENT(cam_isp_activated_irq,
 		__field(uint32_t, substate)
 		__field(uint32_t, event)
 		__field(uint64_t, ts)
+		__field(int32_t, link_hdl)
 	),
 	TP_fast_assign(
 		__entry->ctx = ctx;
@@ -57,11 +58,13 @@ TRACE_EVENT(cam_isp_activated_irq,
 		__entry->substate = substate;
 		__entry->event = event;
 		__entry->ts = timestamp;
+		__entry->link_hdl = ctx->link_hdl;
+
 	),
 	TP_printk(
-		"ISP: IRQ ctx=%p ctx_state=%u substate=%u event=%u ts=%llu",
+		"ISP: IRQ ctx=%p ctx_state=%u substate=%u event=%u ts=%llu link_hdl=0x%x",
 			__entry->ctx, __entry->state, __entry->substate,
-			__entry->event, __entry->ts
+			__entry->event, __entry->ts, __entry->link_hdl
 	)
 );
 
@@ -127,33 +130,39 @@ TRACE_EVENT(cam_buf_done,
 	TP_STRUCT__entry(
 		__string(ctx_type, ctx_type)
 		__field(void*, ctx)
+		__field(int32_t, link_hdl)
 		__field(uint64_t, request)
 	),
 	TP_fast_assign(
 		__assign_str(ctx_type, ctx_type);
 		__entry->ctx = ctx;
+		__entry->link_hdl = ctx->link_hdl;
 		__entry->request = req->request_id;
 	),
 	TP_printk(
-		"%5s: BufDone ctx=%p request=%llu",
-			__get_str(ctx_type), __entry->ctx, __entry->request
+		"%5s: BufDone ctx=%p request=%llu link_hdl=0x%x",
+			__get_str(ctx_type), __entry->ctx, __entry->request, __entry->link_hdl
 	)
 );
 
 TRACE_EVENT(cam_apply_req,
-	TP_PROTO(const char *entity, uint64_t req_id),
-	TP_ARGS(entity, req_id),
+	TP_PROTO(const char *entity, uint32_t id, uint64_t req_id,int32_t link_hdl),
+	TP_ARGS(entity, id, req_id, link_hdl),
 	TP_STRUCT__entry(
 		__string(entity, entity)
+		__field(uint32_t, id)
 		__field(uint64_t, req_id)
+		__field(int32_t, link_hdl)
 	),
 	TP_fast_assign(
 		__assign_str(entity, entity);
+		__entry->id = id;
 		__entry->req_id = req_id;
+		__entry->link_hdl = link_hdl;
 	),
 	TP_printk(
-		"%8s: ApplyRequest request=%llu",
-			__get_str(entity), __entry->req_id
+		"%8s: ApplyRequest id=%u request=%llu link_hdl=0x%x",
+			__get_str(entity), __entry->id, __entry->req_id, __entry->link_hdl
 	)
 );
 
@@ -231,6 +240,7 @@ TRACE_EVENT(cam_req_mgr_apply_request,
 		__string(name, dev->dev_info.name)
 		__field(uint32_t, dev_id)
 		__field(uint64_t, req_id)
+		__field(int32_t, link_hdl)
 		__field(void*, link)
 		__field(void*, session)
 	),
@@ -240,11 +250,12 @@ TRACE_EVENT(cam_req_mgr_apply_request,
 		__entry->req_id  = req->request_id;
 		__entry->link    = link;
 		__entry->session = link->parent;
+		__entry->link_hdl = req->link_hdl;
 	),
 	TP_printk(
-		"ReqMgr ApplyRequest devname=%s devid=%u request=%lld link=%pK session=%pK",
+		"ReqMgr ApplyRequest devname=%s devid=%u request=%lld link=%pK session=%pK link_hdl=0x%x",
 			__get_str(name), __entry->dev_id, __entry->req_id,
-			__entry->link, __entry->session
+			__entry->link, __entry->session, __entry->link_hdl
 	)
 );
 
@@ -264,6 +275,7 @@ TRACE_EVENT(cam_req_mgr_add_req,
 		__field(uint32_t, devicemap)
 		__field(void*, link)
 		__field(void*, session)
+		__field(int32_t, link_hdl)
 	),
 	TP_fast_assign(
 		__assign_str(name, dev->dev_info.name);
@@ -274,13 +286,15 @@ TRACE_EVENT(cam_req_mgr_add_req,
 		__entry->readymap  = tbl->slot[idx].req_ready_map;
 		__entry->devicemap = tbl->dev_mask;
 		__entry->link      = link;
+		__entry->link_hdl  = link->link_hdl;
 		__entry->session   = link->parent;
 	),
 	TP_printk(
-		"ReqMgr AddRequest devname=%s devid=%d request=%lld slot=%d pd=%d readymap=%x devicemap=%d link=%pK session=%pK",
+		"ReqMgr AddRequest devname=%s devid=%d request=%lld slot=%d pd=%d readymap=%x devicemap=%d link=%pK session=%pK link_hdl=0x%x",
 			__get_str(name), __entry->dev_id, __entry->req_id,
 			__entry->slot_id, __entry->delay, __entry->readymap,
-			__entry->devicemap, __entry->link, __entry->session
+			__entry->devicemap, __entry->link, __entry->session,
+			__entry->link_hdl
 	)
 );