From 33ff34887f560449828e79170a2a36a97496eeec Mon Sep 17 00:00:00 2001 From: Deepak Nibade Date: Mon, 1 Aug 2016 17:02:31 +0530 Subject: gpu: nvgpu: fix deferred engine reset sequence We currently store fault_id into fifo.deferred_fault_engines and use that in gk20a_fifo_reset_engine() which is incorrect Also, in deferred engine reset path during channel close, we do not check if channel is loaded on engine or not fix this with below - store engine_id bits into fifo.deferred_fault_engines - define new API gk20a_fifo_deferred_reset() to perform deferred engine reset - get all engines on which channel is loaded with gk20a_fifo_engines_on_id() - for each set bit/engine_id in fifo.deferred_fault_engines, check if channel is loaded on that engine, and if yes, reset the engine Bug 1791696 Change-Id: I1b8b1a9e3aa538fe6903a352aa732b47c95ec7d5 Signed-off-by: Deepak Nibade Reviewed-on: http://git-master/r/1195087 Reviewed-by: Terje Bergstrom Tested-by: Terje Bergstrom --- drivers/gpu/nvgpu/gk20a/channel_gk20a.c | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) (limited to 'drivers/gpu/nvgpu/gk20a/channel_gk20a.c') diff --git a/drivers/gpu/nvgpu/gk20a/channel_gk20a.c b/drivers/gpu/nvgpu/gk20a/channel_gk20a.c index eae2bdae..a8a39302 100644 --- a/drivers/gpu/nvgpu/gk20a/channel_gk20a.c +++ b/drivers/gpu/nvgpu/gk20a/channel_gk20a.c @@ -910,11 +910,8 @@ static void gk20a_free_channel(struct channel_gk20a *ch) /* if lock is already taken, a reset is taking place so no need to repeat */ if (!was_reset) - gk20a_fifo_reset_engine(g, - g->fifo.deferred_fault_engines); + gk20a_fifo_deferred_reset(g, ch); mutex_unlock(&g->fifo.gr_reset_mutex); - g->fifo.deferred_fault_engines = 0; - g->fifo.deferred_reset_pending = false; } mutex_unlock(&f->deferred_reset_mutex); -- cgit v1.2.2