diff options
| author | Naseer Ahmed <naseer@codeaurora.org> | 2013-02-02 15:51:47 -0500 |
|---|---|---|
| committer | David Keitel <dkeitel@codeaurora.org> | 2016-03-23 20:15:08 -0700 |
| commit | 0e4772d73332f8945adf25daf01d1bbd60c272ca (patch) | |
| tree | 2dcba2f645538c586d9592b78c48d7f51aad0ef5 /drivers/video/fbdev | |
| parent | 3ec4fbff7e0bd7d8990b2dc5e727e6768f66662c (diff) | |
mdss_fb: Update MDP fence wait behaviour
The current fence wait times out too early in cases where the GPU
is under a heavy workload. Change this behaviour to warn and wait
for a longer time for GPU to complete it's work.
Change-Id: I9d81380456cf88a53d56c8d367d0823a838a3ad8
Signed-off-by: Naseer Ahmed <naseer@codeaurora.org>
Diffstat (limited to 'drivers/video/fbdev')
| -rw-r--r-- | drivers/video/fbdev/msm/mdss_fb.c | 10 | ||||
| -rw-r--r-- | drivers/video/fbdev/msm/mdss_fb.h | 9 |
2 files changed, 14 insertions, 5 deletions
diff --git a/drivers/video/fbdev/msm/mdss_fb.c b/drivers/video/fbdev/msm/mdss_fb.c index b4a656d95790..1b6690d255cb 100644 --- a/drivers/video/fbdev/msm/mdss_fb.c +++ b/drivers/video/fbdev/msm/mdss_fb.c @@ -1070,7 +1070,15 @@ void mdss_fb_wait_for_fence(struct msm_fb_data_type *mfd) int i, ret = 0; /* buf sync */ for (i = 0; i < mfd->acq_fen_cnt; i++) { - ret = sync_fence_wait(mfd->acq_fen[i], WAIT_FENCE_TIMEOUT); + ret = sync_fence_wait(mfd->acq_fen[i], + WAIT_FENCE_FIRST_TIMEOUT); + if (ret == -ETIME) { + pr_warn("sync_fence_wait timed out! "); + pr_cont("Waiting %ld more seconds\n", + WAIT_FENCE_FINAL_TIMEOUT/MSEC_PER_SEC); + ret = sync_fence_wait(mfd->acq_fen[i], + WAIT_FENCE_FINAL_TIMEOUT); + } if (ret < 0) { pr_err("%s: sync_fence_wait failed! ret = %x\n", __func__, ret); diff --git a/drivers/video/fbdev/msm/mdss_fb.h b/drivers/video/fbdev/msm/mdss_fb.h index c4e837e474fc..db2e30534e0c 100644 --- a/drivers/video/fbdev/msm/mdss_fb.h +++ b/drivers/video/fbdev/msm/mdss_fb.h @@ -27,10 +27,11 @@ #define MSM_FB_MAX_DEV_LIST 32 #define MSM_FB_ENABLE_DBGFS -/* 900 ms for fence time out */ -#define WAIT_FENCE_TIMEOUT 900 -/* 950 ms for display operation time out */ -#define WAIT_DISP_OP_TIMEOUT 950 +#define WAIT_FENCE_FIRST_TIMEOUT MSEC_PER_SEC +#define WAIT_FENCE_FINAL_TIMEOUT (10 * MSEC_PER_SEC) +/* Display op timeout should be greater than total timeout */ +#define WAIT_DISP_OP_TIMEOUT ((WAIT_FENCE_FIRST_TIMEOUT + \ + WAIT_FENCE_FINAL_TIMEOUT) * MDP_MAX_FENCE_FD) #ifndef MAX #define MAX(x, y) (((x) > (y)) ? (x) : (y)) |
