diff options
author | Adeel Raza <araza@nvidia.com> | 2015-06-25 18:40:12 -0400 |
---|---|---|
committer | Adeel Raza <araza@nvidia.com> | 2016-01-29 17:40:11 -0500 |
commit | f0a9ce0469314711ddb5a8baf6bf88615b71c59e (patch) | |
tree | 8f09a553c123f3a5b1bb7c5dd7a260a1f363b894 /drivers/gpu/nvgpu/gm20b | |
parent | 9e02111a768ab631a6719c1eae8d7c03e6e89c23 (diff) |
gpu: nvgpu: SM/TEX exception handling support
Add TEX exception handling support. Also make SM exception handler into
a function pointer, which should allow different chips to implement
their own SM exception handling routine.
Bug 1635727
Bug 1637486
Change-Id: I429905726c1840c11e83780843d82729495dc6a5
Signed-off-by: Adeel Raza <araza@nvidia.com>
Reviewed-on: http://git-master/r/935329
Diffstat (limited to 'drivers/gpu/nvgpu/gm20b')
-rw-r--r-- | drivers/gpu/nvgpu/gm20b/gr_gm20b.c | 2 | ||||
-rw-r--r-- | drivers/gpu/nvgpu/gm20b/hw_gr_gm20b.h | 20 |
2 files changed, 22 insertions, 0 deletions
diff --git a/drivers/gpu/nvgpu/gm20b/gr_gm20b.c b/drivers/gpu/nvgpu/gm20b/gr_gm20b.c index a80cef8f..ab1b166d 100644 --- a/drivers/gpu/nvgpu/gm20b/gr_gm20b.c +++ b/drivers/gpu/nvgpu/gm20b/gr_gm20b.c | |||
@@ -1229,4 +1229,6 @@ void gm20b_init_gr(struct gpu_ops *gops) | |||
1229 | gops->gr.get_access_map = gr_gm20b_get_access_map; | 1229 | gops->gr.get_access_map = gr_gm20b_get_access_map; |
1230 | gops->gr.handle_fecs_error = gk20a_gr_handle_fecs_error; | 1230 | gops->gr.handle_fecs_error = gk20a_gr_handle_fecs_error; |
1231 | gops->gr.mask_hww_warp_esr = gk20a_mask_hww_warp_esr; | 1231 | gops->gr.mask_hww_warp_esr = gk20a_mask_hww_warp_esr; |
1232 | gops->gr.handle_sm_exception = gr_gk20a_handle_sm_exception; | ||
1233 | gops->gr.handle_tex_exception = gr_gk20a_handle_tex_exception; | ||
1232 | } | 1234 | } |
diff --git a/drivers/gpu/nvgpu/gm20b/hw_gr_gm20b.h b/drivers/gpu/nvgpu/gm20b/hw_gr_gm20b.h index 41a7c885..7a19e4ab 100644 --- a/drivers/gpu/nvgpu/gm20b/hw_gr_gm20b.h +++ b/drivers/gpu/nvgpu/gm20b/hw_gr_gm20b.h | |||
@@ -3022,6 +3022,10 @@ static inline u32 gr_gpcs_tpcs_tpccs_tpc_exception_en_sm_enabled_f(void) | |||
3022 | { | 3022 | { |
3023 | return 0x2; | 3023 | return 0x2; |
3024 | } | 3024 | } |
3025 | static inline u32 gr_gpcs_tpcs_tpccs_tpc_exception_en_tex_enabled_f(void) | ||
3026 | { | ||
3027 | return 0x1; | ||
3028 | } | ||
3025 | static inline u32 gr_gpc0_tpc0_tpccs_tpc_exception_en_r(void) | 3029 | static inline u32 gr_gpc0_tpc0_tpccs_tpc_exception_en_r(void) |
3026 | { | 3030 | { |
3027 | return 0x0050450c; | 3031 | return 0x0050450c; |
@@ -3058,6 +3062,14 @@ static inline u32 gr_gpc0_tpc0_tpccs_tpc_exception_r(void) | |||
3058 | { | 3062 | { |
3059 | return 0x00504508; | 3063 | return 0x00504508; |
3060 | } | 3064 | } |
3065 | static inline u32 gr_gpc0_tpc0_tpccs_tpc_exception_tex_v(u32 r) | ||
3066 | { | ||
3067 | return (r >> 0) & 0x1; | ||
3068 | } | ||
3069 | static inline u32 gr_gpc0_tpc0_tpccs_tpc_exception_tex_pending_v(void) | ||
3070 | { | ||
3071 | return 0x00000001; | ||
3072 | } | ||
3061 | static inline u32 gr_gpc0_tpc0_tpccs_tpc_exception_sm_v(u32 r) | 3073 | static inline u32 gr_gpc0_tpc0_tpccs_tpc_exception_sm_v(u32 r) |
3062 | { | 3074 | { |
3063 | return (r >> 1) & 0x1; | 3075 | return (r >> 1) & 0x1; |
@@ -3214,6 +3226,14 @@ static inline u32 gr_gpc0_tpc0_sm_hww_global_esr_single_step_complete_pending_f( | |||
3214 | { | 3226 | { |
3215 | return 0x40; | 3227 | return 0x40; |
3216 | } | 3228 | } |
3229 | static inline u32 gr_gpc0_tpc0_tex_m_hww_esr_r(void) | ||
3230 | { | ||
3231 | return 0x00504224; | ||
3232 | } | ||
3233 | static inline u32 gr_gpc0_tpc0_tex_m_hww_esr_intr_pending_f(void) | ||
3234 | { | ||
3235 | return 0x1; | ||
3236 | } | ||
3217 | static inline u32 gr_gpc0_tpc0_sm_hww_warp_esr_r(void) | 3237 | static inline u32 gr_gpc0_tpc0_sm_hww_warp_esr_r(void) |
3218 | { | 3238 | { |
3219 | return 0x00504648; | 3239 | return 0x00504648; |