Bladeren bron

msm: eva: Use ratelimited kernel logging

In case of error recurring frequently.

Change-Id: I5d8f9b3a65a3d1faa6646c38dbd2e96d3beeca1b
Signed-off-by: George Shen <[email protected]>
George Shen 2 jaren geleden
bovenliggende
commit
9d1d8dfa53
4 gewijzigde bestanden met toevoegingen van 20 en 8 verwijderingen
  1. 1 1
      msm/eva/msm_cvp_buf.c
  2. 4 4
      msm/eva/msm_cvp_core.c
  3. 12 0
      msm/eva/msm_cvp_debug.h
  4. 3 3
      msm/eva/msm_cvp_ioctl.c

+ 1 - 1
msm/eva/msm_cvp_buf.c

@@ -1917,7 +1917,7 @@ int cvp_release_arp_buffers(struct msm_cvp_inst *inst)
 				__func__, rc);
 			mutex_lock(&inst->persistbufs.lock);
 		} else {
-			dprintk(CVP_WARN, "Fail to send Rel prst buf\n");
+			dprintk_rl(CVP_WARN, "Fail to send Rel prst buf\n");
 		}
 	}
 

+ 4 - 4
msm/eva/msm_cvp_core.c

@@ -182,7 +182,7 @@ void *msm_cvp_open(int core_id, int session_type, struct task_struct *task)
 		goto err_invalid_core;
 	}
 
-	pr_info(
+	pr_info_ratelimited(
 		CVP_DBG_TAG "%s opening cvp instance: %pK type %d cnt %d\n",
 		"sess", task->comm, inst, session_type, instance_count);
 	mutex_init(&inst->sync_lock);
@@ -356,7 +356,7 @@ wait_frame:
 	}
 
 	if (cvp_release_arp_buffers(inst))
-		dprintk(CVP_ERR,
+		dprintk_rl(CVP_WARN,
 			"Failed to release persist buffers\n");
 
 	if (inst->prop.type == HFI_SESSION_FD
@@ -412,7 +412,7 @@ int msm_cvp_destroy(struct msm_cvp_inst *inst)
 	__deinit_fence_queue(inst);
 	core->synx_ftbl->cvp_sess_deinit_synx(inst);
 
-	pr_info(
+	pr_info_ratelimited(
 		CVP_DBG_TAG
 		"closed cvp instance: %pK session_id = %d type %d %d\n",
 		inst->proc_name, inst, hash32_ptr(inst->session),
@@ -448,7 +448,7 @@ int msm_cvp_close(void *instance)
 	int rc = 0;
 
 	if (!inst || !inst->core) {
-		dprintk(CVP_ERR, "%s: invalid params\n", __func__);
+		dprintk_rl(CVP_ERR, "%s: invalid params\n", __func__);
 		return -EINVAL;
 	}
 

+ 12 - 0
msm/eva/msm_cvp_debug.h

@@ -82,6 +82,18 @@ extern bool cvp_kernel_fence_enabled;
 		} \
 	} while (0)
 
+/* dprintk_rl is designed for printing frequent recurring errors */
+#define dprintk_rl(__level, __fmt, arg...)	\
+	do { \
+		if (msm_cvp_debug & __level) { \
+			if (msm_cvp_debug_out == CVP_OUT_PRINTK) { \
+				pr_info_ratelimited(CVP_DBG_TAG __fmt, \
+					get_debug_level_str(__level),   \
+					## arg); \
+			} \
+		} \
+	} while (0)
+
 #define MSM_CVP_ERROR(value)					\
 	do {	if (value)					\
 			dprintk(CVP_ERR, "BugOn");		\

+ 3 - 3
msm/eva/msm_cvp_ioctl.c

@@ -302,7 +302,7 @@ static int convert_from_user(struct eva_kmd_arg *kp,
 	int pkt_idx;
 
 	if (!kp || !up) {
-		dprintk(CVP_ERR, "%s: invalid params\n", __func__);
+		dprintk_rl(CVP_ERR, "%s: invalid params\n", __func__);
 		return -EINVAL;
 	}
 
@@ -439,7 +439,7 @@ static int convert_from_user(struct eva_kmd_arg *kp,
 		break;
 	}
 	default:
-		dprintk(CVP_ERR, "%s: unknown cmd type 0x%x\n",
+		dprintk_rl(CVP_ERR, "%s: unknown cmd type 0x%x\n",
 			__func__, kp->type);
 		rc = -EINVAL;
 		break;
@@ -615,7 +615,7 @@ static long cvp_ioctl(struct msm_cvp_inst *inst,
 		return -ENOMEM;
 
 	if (convert_from_user(karg, arg, inst)) {
-		dprintk(CVP_ERR, "%s: failed to get from user cmd %x\n",
+		dprintk_rl(CVP_ERR, "%s: failed to get from user cmd %x\n",
 			__func__, karg->type);
 		kfree(karg);
 		return -EFAULT;