Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 2bff274d authored by Adrian Salido-Moreno's avatar Adrian Salido-Moreno
Browse files

msm: mdss: set pipe to solid fill when releasing it



There are cases where pipe can remain active for additional vsync after
unstaging from mixer, if this ever happens it will keep fetching from
memory. In order to avoid this, we can setup the pipe in solid fill mode
so there is no memory access after pipe is released by software and
avoid potential iommu page fault or underrun since pipe is no longer
considered for bandwidth calculations.

Change-Id: I4b5a5deda8c854c504ef523df434509fa5567186
Signed-off-by: default avatarAdrian Salido-Moreno <adrianm@codeaurora.org>
parent 360013b1
Loading
Loading
Loading
Loading
+9 −1
Original line number Diff line number Diff line
@@ -1012,6 +1012,15 @@ int mdss_mdp_overlay_kickoff(struct msm_fb_data_type *mfd,
	if (data)
		mdss_mdp_set_roi(ctl, data);

	/*
	 * Setup pipe in solid fill before unstaging,
	 * to ensure no fetches are happening after dettach or reattach.
	 */
	list_for_each_entry(pipe, &mdp5_data->pipes_cleanup, cleanup_list) {
		mdss_mdp_pipe_queue_data(pipe, NULL);
		mdss_mdp_mixer_pipe_unstage(pipe);
	}

	list_for_each_entry(pipe, &mdp5_data->pipes_used, used_list) {
		struct mdss_mdp_data *buf;
		/*
@@ -1145,7 +1154,6 @@ static int mdss_mdp_overlay_release(struct msm_fb_data_type *mfd, int ndx)
						&mdp5_data->pipes_cleanup);
			}
			mutex_unlock(&mfd->lock);
			mdss_mdp_mixer_pipe_unstage(pipe);
			mdss_mdp_pipe_unmap(pipe);
			if (destroy_pipe)
				mdss_mdp_pipe_destroy(pipe);