]> rtime.felk.cvut.cz Git - sojka/nv-tegra/linux-3.10.git/commitdiff
video: tegra: host: gk20a: Fix deferred mmu fault
authorArto Merilainen <amerilainen@nvidia.com>
Fri, 7 Mar 2014 07:03:47 +0000 (09:03 +0200)
committerArto Merilainen <amerilainen@nvidia.com>
Tue, 11 Mar 2014 05:53:36 +0000 (22:53 -0700)
Deferred MMU fault did not clear stored mmu_fault_engines variable
and this caused the MMU fault handler to handle subsequent MMU fault
as a fake fault.

This patch modifies the code so that we clear the mmu_fault_engines
variable if we need to continue fault handling on channel tear down.

Bug 1472328

Change-Id: Iabec72575072b207aef1b05ef2f661d7dc8f3c40
Signed-off-by: Arto Merilainen <amerilainen@nvidia.com>
Reviewed-on: http://git-master/r/378790
Reviewed-by: Automatic_Commit_Validation_User
GVS: Gerrit_Virtual_Submit
Reviewed-by: Ken Adams <kadams@nvidia.com>
drivers/video/tegra/host/gk20a/channel_gk20a.c

index 2b682445c17ef922f58874d2e23f299707f1cc7a..630ddff29692722f67b078c05405a0f1073f36bc 100644 (file)
@@ -615,6 +615,7 @@ void gk20a_free_channel(struct channel_gk20a *ch, bool finish)
                nvhost_dbg(dbg_intr | dbg_gpu_dbg, "engine reset was"
                           " deferred, running now");
                fifo_gk20a_finish_mmu_fault_handling(g, g->fifo.mmu_fault_engines);
+               g->fifo.mmu_fault_engines = 0;
                g->fifo.deferred_reset_pending = false;
        }
        mutex_unlock(&f->deferred_reset_mutex);