Просмотр исходного кода

msm: camera: isp: Moving req to active list first

Sometimes, all the buf dones of bubble req have been
received, but they are deferred buf done. If we handle
the deferred buf done before moving the req to active
list, the req will be moved to pending list first during
processing the buf done of bubble req, then moved to
active req list in the processing of epoch_in_applied.
This change moves the bubble req to active list first,
then handle the deferred buffer done.

CRs-Fixed: 3096361
Change-Id: I1e9b1ba5a46509b1c08ec92bbca0c2d7fbde679c
Signed-off-by: Depeng Shao <[email protected]>
Depeng Shao 3 лет назад
Родитель
Сommit
30c59c7aa6
1 измененных файлов с 7 добавлено и 3 удалено
  1. 7 3
      drivers/cam_isp/cam_isp_context.c

+ 7 - 3
drivers/cam_isp/cam_isp_context.c

@@ -2697,9 +2697,6 @@ static int __cam_isp_ctx_epoch_in_applied(struct cam_isp_context *ctx_isp,
 	CAM_INFO_RATE_LIMIT(CAM_ISP, "ctx:%d Report Bubble flag %d req id:%lld",
 		ctx->ctx_id, req_isp->bubble_report, req->request_id);
 
-	__cam_isp_ctx_handle_deferred_buf_done_in_bubble(
-		ctx_isp, req);
-
 	if (req_isp->bubble_report) {
 		__cam_isp_ctx_notify_error_util(CAM_TRIGGER_POINT_SOF, CRM_KMD_ERR_BUBBLE,
 			req->request_id, ctx_isp);
@@ -2724,6 +2721,13 @@ static int __cam_isp_ctx_epoch_in_applied(struct cam_isp_context *ctx_isp,
 	CAM_DBG(CAM_REQ, "move request %lld to active list(cnt = %d), ctx %u",
 		req->request_id, ctx_isp->active_req_cnt, ctx->ctx_id);
 
+	/*
+	 * Handle the deferred buf done after moving
+	 * the bubble req to active req list.
+	 */
+	__cam_isp_ctx_handle_deferred_buf_done_in_bubble(
+		ctx_isp, req);
+
 	/*
 	 * Update the record before req pointer to
 	 * other invalid req.