Merge "msm: camera: reqmgr: skip re_apply of ISP for buf_done request" into camera-kernel.lnx.4.0

This commit is contained in:
Camera Software Integration 2020-03-16 16:38:41 -07:00 • committed by Gerrit - the friendly Code Review server
commit 52222ca8b2
5 changed files with 25 additions and 1 deletions

View file

@ -2486,6 +2486,14 @@ static int __cam_isp_ctx_apply_req_in_activated_state(
goto end;
}
if (apply->re_apply)
if (apply->request_id <= ctx_isp->last_applied_req_id) {
CAM_INFO(CAM_ISP,
"Trying to reapply the same request %llu again",
apply->request_id);
return 0;
}
spin_lock_bh(&ctx->lock);
req = list_first_entry(&ctx->pending_req_list, struct cam_ctx_request,
list);

View file

@ -662,6 +662,11 @@ static int __cam_req_mgr_send_req(struct cam_req_mgr_core_link *link,
apply_req.link_hdl = link->link_hdl;
apply_req.report_if_bubble = 0;
apply_req.re_apply = false;
if (link->retry_cnt > 0) {
if (g_crm_core_dev->recovery_on_apply_fail)
apply_req.re_apply = true;
}
for (i = 0; i < link->num_devs; i++) {
dev = &link->l_dev[i];

View file

@ -413,10 +413,12 @@ struct cam_req_mgr_core_session {
* - Core camera request manager data struct
* @session_head : list head holding sessions
* @crm_lock : mutex lock to protect session creation & destruction
* @recovery_on_apply_fail : Recovery on apply failure using debugfs.
*/
struct cam_req_mgr_core_device {
struct list_head session_head;
struct mutex crm_lock;
bool recovery_on_apply_fail;
};
/**

View file

@ -1,6 +1,6 @@
// SPDX-License-Identifier: GPL-2.0-only
/*
* Copyright (c) 2016-2018, The Linux Foundation. All rights reserved.
* Copyright (c) 2016-2019, The Linux Foundation. All rights reserved.
*/
#include "cam_req_mgr_debug.h"
@ -128,5 +128,12 @@ int cam_req_mgr_debug_register(struct cam_req_mgr_core_device *core_dev)
debugfs_root, core_dev, &bubble_recovery))
return -ENOMEM;
if (!debugfs_create_bool("recovery_on_apply_fail",
0644,
debugfs_root,
&core_dev->recovery_on_apply_fail)) {
return -ENOMEM;
}
return 0;
}

View file

@ -326,6 +326,7 @@ struct cam_req_mgr_core_dev_link_setup {
* @request_id : request id settings to apply
* @report_if_bubble : report to crm if failure in applying
* @trigger_point : the trigger point of this apply
* @re_apply : to skip re_apply for buf_done request
*
*/
struct cam_req_mgr_apply_request {
@ -334,6 +335,7 @@ struct cam_req_mgr_apply_request {
uint64_t request_id;
int32_t report_if_bubble;
uint32_t trigger_point;
bool re_apply;
};
/**