mirror of
https://github.com/followmsi/android_kernel_google_msm.git
synced 2024-11-06 23:17:41 +00:00
msm_fb: display: keep borderfill pipe's iommu info
Keep borderfill pipe's iommu info during base layer pipe swap with original base layer pipe. Otherwise, borderfill pipe's may contain original base layer pipe's iommu info which cause iommu page fault due to same iommu buffer is unmapped two times. CRs-fixed: 436711 Change-Id: Ibdb792055287283c4449db07c2de2901aa4fe9b6 Signed-off-by: Kuogee Hsieh <khsieh@codeaurora.org>
This commit is contained in:
parent
e561f70b6c
commit
82caf103f7
1 changed files with 6 additions and 1 deletions
|
@ -1713,6 +1713,7 @@ void mdp4_overlay_borderfill_stage_up(struct mdp4_overlay_pipe *pipe)
|
||||||
struct mdp4_overlay_pipe *bspipe;
|
struct mdp4_overlay_pipe *bspipe;
|
||||||
int ptype, pnum, pndx, mixer;
|
int ptype, pnum, pndx, mixer;
|
||||||
int format, alpha_enable, alpha;
|
int format, alpha_enable, alpha;
|
||||||
|
struct mdp4_iommu_pipe_info iom;
|
||||||
|
|
||||||
if (pipe->pipe_type != OVERLAY_TYPE_BF)
|
if (pipe->pipe_type != OVERLAY_TYPE_BF)
|
||||||
return;
|
return;
|
||||||
|
@ -1733,6 +1734,7 @@ void mdp4_overlay_borderfill_stage_up(struct mdp4_overlay_pipe *pipe)
|
||||||
/* save original base layer */
|
/* save original base layer */
|
||||||
ctrl->baselayer[mixer] = bspipe;
|
ctrl->baselayer[mixer] = bspipe;
|
||||||
|
|
||||||
|
iom = pipe->iommu;
|
||||||
pipe->alpha = 0; /* make sure bf pipe has alpha 0 */
|
pipe->alpha = 0; /* make sure bf pipe has alpha 0 */
|
||||||
ptype = pipe->pipe_type;
|
ptype = pipe->pipe_type;
|
||||||
pnum = pipe->pipe_num;
|
pnum = pipe->pipe_num;
|
||||||
|
@ -1747,6 +1749,7 @@ void mdp4_overlay_borderfill_stage_up(struct mdp4_overlay_pipe *pipe)
|
||||||
pipe->src_format = format;
|
pipe->src_format = format;
|
||||||
pipe->alpha_enable = alpha_enable;
|
pipe->alpha_enable = alpha_enable;
|
||||||
pipe->alpha = alpha;
|
pipe->alpha = alpha;
|
||||||
|
pipe->iommu = iom;
|
||||||
|
|
||||||
/* free original base layer pipe to be sued as normal pipe */
|
/* free original base layer pipe to be sued as normal pipe */
|
||||||
bspipe->pipe_used = 0;
|
bspipe->pipe_used = 0;
|
||||||
|
@ -2200,7 +2203,9 @@ void mdp4_overlay_pipe_free(struct mdp4_overlay_pipe *pipe)
|
||||||
ndx = pipe->pipe_ndx;
|
ndx = pipe->pipe_ndx;
|
||||||
mixer = pipe->mixer_num;
|
mixer = pipe->mixer_num;
|
||||||
|
|
||||||
mdp4_overlay_iommu_pipe_free(pipe->pipe_ndx, 0);
|
/* No need for borderfill pipe */
|
||||||
|
if (pipe->pipe_type != OVERLAY_TYPE_BF)
|
||||||
|
mdp4_overlay_iommu_pipe_free(pipe->pipe_ndx, 0);
|
||||||
|
|
||||||
iom = pipe->iommu;
|
iom = pipe->iommu;
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue