summaryrefslogtreecommitdiffstats
path: root/drivers/gpu/nvgpu/gm20b
diff options
context:
space:
mode:
authorAdeel Raza <araza@nvidia.com>2015-06-25 18:40:12 -0400
committerAdeel Raza <araza@nvidia.com>2016-01-29 17:40:11 -0500
commitf0a9ce0469314711ddb5a8baf6bf88615b71c59e (patch)
tree8f09a553c123f3a5b1bb7c5dd7a260a1f363b894 /drivers/gpu/nvgpu/gm20b
parent9e02111a768ab631a6719c1eae8d7c03e6e89c23 (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.c2
-rw-r--r--drivers/gpu/nvgpu/gm20b/hw_gr_gm20b.h20
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}
3025static inline u32 gr_gpcs_tpcs_tpccs_tpc_exception_en_tex_enabled_f(void)
3026{
3027 return 0x1;
3028}
3025static inline u32 gr_gpc0_tpc0_tpccs_tpc_exception_en_r(void) 3029static 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}
3065static inline u32 gr_gpc0_tpc0_tpccs_tpc_exception_tex_v(u32 r)
3066{
3067 return (r >> 0) & 0x1;
3068}
3069static inline u32 gr_gpc0_tpc0_tpccs_tpc_exception_tex_pending_v(void)
3070{
3071 return 0x00000001;
3072}
3061static inline u32 gr_gpc0_tpc0_tpccs_tpc_exception_sm_v(u32 r) 3073static 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}
3229static inline u32 gr_gpc0_tpc0_tex_m_hww_esr_r(void)
3230{
3231 return 0x00504224;
3232}
3233static inline u32 gr_gpc0_tpc0_tex_m_hww_esr_intr_pending_f(void)
3234{
3235 return 0x1;
3236}
3217static inline u32 gr_gpc0_tpc0_sm_hww_warp_esr_r(void) 3237static inline u32 gr_gpc0_tpc0_sm_hww_warp_esr_r(void)
3218{ 3238{
3219 return 0x00504648; 3239 return 0x00504648;