diff options
author | Terje Bergstrom <tbergstrom@nvidia.com> | 2015-02-12 13:53:26 -0500 |
---|---|---|
committer | Dan Willemsen <dwillemsen@nvidia.com> | 2015-04-04 21:06:37 -0400 |
commit | 226c671f8e99e7ed274c5c630090c6190a1367a5 (patch) | |
tree | e4dfc9a123ec5831210d0b1ea4a3044e987d6c33 /drivers/gpu/nvgpu/gm20b | |
parent | a3b26f25a226ea56e84dbda1bb510c1a7bc11054 (diff) |
gpu: nvgpu: More robust recovery
Make recovery a more straightforward process. When we detect a fault,
trigger MMU fault, and wait for it to trigger, and complete recovery.
Also reset engines before aborting channel to ensure no stray sync
point increments can happen.
Change-Id: Iac685db6534cb64fe62d9fb452391f43100f2999
Signed-off-by: Terje Bergstrom <tbergstrom@nvidia.com>
Reviewed-on: http://git-master/r/709060
(cherry picked from commit 95c62ffd9ac30a0d2eb88d033dcc6e6ff25efd6f)
Reviewed-on: http://git-master/r/707443
Diffstat (limited to 'drivers/gpu/nvgpu/gm20b')
-rw-r--r-- | drivers/gpu/nvgpu/gm20b/hw_fifo_gm20b.h | 14 |
1 files changed, 13 insertions, 1 deletions
diff --git a/drivers/gpu/nvgpu/gm20b/hw_fifo_gm20b.h b/drivers/gpu/nvgpu/gm20b/hw_fifo_gm20b.h index acbe6a4e..f3a24f61 100644 --- a/drivers/gpu/nvgpu/gm20b/hw_fifo_gm20b.h +++ b/drivers/gpu/nvgpu/gm20b/hw_fifo_gm20b.h | |||
@@ -1,5 +1,5 @@ | |||
1 | /* | 1 | /* |
2 | * Copyright (c) 2014, NVIDIA CORPORATION. All rights reserved. | 2 | * Copyright (c) 2014-2015, NVIDIA CORPORATION. All rights reserved. |
3 | * | 3 | * |
4 | * This program is free software; you can redistribute it and/or modify it | 4 | * This program is free software; you can redistribute it and/or modify it |
5 | * under the terms and conditions of the GNU General Public License, | 5 | * under the terms and conditions of the GNU General Public License, |
@@ -206,10 +206,22 @@ static inline u32 fifo_intr_en_0_r(void) | |||
206 | { | 206 | { |
207 | return 0x00002140; | 207 | return 0x00002140; |
208 | } | 208 | } |
209 | static inline u32 fifo_intr_en_0_sched_error_f(u32 v) | ||
210 | { | ||
211 | return (v & 0x1) << 8; | ||
212 | } | ||
209 | static inline u32 fifo_intr_en_0_sched_error_m(void) | 213 | static inline u32 fifo_intr_en_0_sched_error_m(void) |
210 | { | 214 | { |
211 | return 0x1 << 8; | 215 | return 0x1 << 8; |
212 | } | 216 | } |
217 | static inline u32 fifo_intr_en_0_mmu_fault_f(u32 v) | ||
218 | { | ||
219 | return (v & 0x1) << 28; | ||
220 | } | ||
221 | static inline u32 fifo_intr_en_0_mmu_fault_m(void) | ||
222 | { | ||
223 | return 0x1 << 28; | ||
224 | } | ||
213 | static inline u32 fifo_intr_en_1_r(void) | 225 | static inline u32 fifo_intr_en_1_r(void) |
214 | { | 226 | { |
215 | return 0x00002528; | 227 | return 0x00002528; |