diff options
author | Vinod G <vinodg@nvidia.com> | 2018-05-25 18:44:34 -0400 |
---|---|---|
committer | Tejal Kudav <tkudav@nvidia.com> | 2018-06-14 09:44:07 -0400 |
commit | 7aded206bc3eb0f36422e9f6f3dab3e065e7e7e4 (patch) | |
tree | be963b37e3ea18151e41c8d83e237255d25c7849 /drivers/gpu/nvgpu/include | |
parent | c8c686f8554352fc209fda592ec3b490811532aa (diff) |
gpu: nvgpu: gv11b: Handle all SM errors
Add the missing register bits to identify the
SM errors.
Except for mmu_nack error, all other errors are
handled using a single function.
That function sets the error notifier with GR_EXCEPTION,
clears interrupt and triggers recovery process.
bug 200402677
JIRA NVGPU-573
Change-Id: Icfaff1f20f1f35adb4cd35ce288ce694845aed3c
Signed-off-by: Vinod G <vinodg@nvidia.com>
Reviewed-on: https://git-master.nvidia.com/r/1730963
Reviewed-by: Seshendra Gadagottu <sgadagottu@nvidia.com>
Reviewed-by: svc-mobile-coverity <svc-mobile-coverity@nvidia.com>
GVS: Gerrit_Virtual_Submit
Reviewed-by: Deepak Nibade <dnibade@nvidia.com>
Reviewed-by: Terje Bergstrom <tbergstrom@nvidia.com>
Reviewed-by: mobile promotions <svcmobile_promotions@nvidia.com>
Tested-by: mobile promotions <svcmobile_promotions@nvidia.com>
Diffstat (limited to 'drivers/gpu/nvgpu/include')
-rw-r--r-- | drivers/gpu/nvgpu/include/nvgpu/hw/gv100/hw_gr_gv100.h | 76 | ||||
-rw-r--r-- | drivers/gpu/nvgpu/include/nvgpu/hw/gv11b/hw_gr_gv11b.h | 68 |
2 files changed, 140 insertions, 4 deletions
diff --git a/drivers/gpu/nvgpu/include/nvgpu/hw/gv100/hw_gr_gv100.h b/drivers/gpu/nvgpu/include/nvgpu/hw/gv100/hw_gr_gv100.h index 29fd9a6f..0f83d6ba 100644 --- a/drivers/gpu/nvgpu/include/nvgpu/hw/gv100/hw_gr_gv100.h +++ b/drivers/gpu/nvgpu/include/nvgpu/hw/gv100/hw_gr_gv100.h | |||
@@ -3632,17 +3632,81 @@ static inline u32 gr_gpc0_tpc0_sm0_hww_warp_esr_error_none_v(void) | |||
3632 | { | 3632 | { |
3633 | return 0x00000000U; | 3633 | return 0x00000000U; |
3634 | } | 3634 | } |
3635 | static inline u32 gr_gpc0_tpc0_sm0_hww_warp_esr_error_none_f(void) | ||
3636 | { | ||
3637 | return 0x0U; | ||
3638 | } | ||
3639 | static inline u32 gr_gpc0_tpc0_sm0_hww_warp_esr_error_stack_error_f(void) | ||
3640 | { | ||
3641 | return 0x1U; | ||
3642 | } | ||
3643 | static inline u32 gr_gpc0_tpc0_sm0_hww_warp_esr_error_api_stack_error_f(void) | ||
3644 | { | ||
3645 | return 0x2U; | ||
3646 | } | ||
3647 | static inline u32 gr_gpc0_tpc0_sm0_hww_warp_esr_error_pc_wrap_f(void) | ||
3648 | { | ||
3649 | return 0x4U; | ||
3650 | } | ||
3651 | static inline u32 gr_gpc0_tpc0_sm0_hww_warp_esr_error_misaligned_pc_f(void) | ||
3652 | { | ||
3653 | return 0x5U; | ||
3654 | } | ||
3655 | static inline u32 gr_gpc0_tpc0_sm0_hww_warp_esr_error_pc_overflow_f(void) | ||
3656 | { | ||
3657 | return 0x6U; | ||
3658 | } | ||
3659 | static inline u32 gr_gpc0_tpc0_sm0_hww_warp_esr_error_misaligned_reg_f(void) | ||
3660 | { | ||
3661 | return 0x8U; | ||
3662 | } | ||
3663 | static inline u32 gr_gpc0_tpc0_sm0_hww_warp_esr_error_illegal_instr_encoding_f(void) | ||
3664 | { | ||
3665 | return 0x9U; | ||
3666 | } | ||
3667 | static inline u32 gr_gpc0_tpc0_sm0_hww_warp_esr_error_illegal_instr_param_f(void) | ||
3668 | { | ||
3669 | return 0xbU; | ||
3670 | } | ||
3671 | static inline u32 gr_gpc0_tpc0_sm0_hww_warp_esr_error_oor_reg_f(void) | ||
3672 | { | ||
3673 | return 0xdU; | ||
3674 | } | ||
3675 | static inline u32 gr_gpc0_tpc0_sm0_hww_warp_esr_error_oor_addr_f(void) | ||
3676 | { | ||
3677 | return 0xeU; | ||
3678 | } | ||
3635 | static inline u32 gr_gpc0_tpc0_sm0_hww_warp_esr_error_misaligned_addr_f(void) | 3679 | static inline u32 gr_gpc0_tpc0_sm0_hww_warp_esr_error_misaligned_addr_f(void) |
3636 | { | 3680 | { |
3637 | return 0xfU; | 3681 | return 0xfU; |
3638 | } | 3682 | } |
3639 | static inline u32 gr_gpc0_tpc0_sm0_hww_warp_esr_error_mmu_nack_f(void) | 3683 | static inline u32 gr_gpc0_tpc0_sm0_hww_warp_esr_error_invalid_addr_space_f(void) |
3640 | { | 3684 | { |
3641 | return 0x20U; | 3685 | return 0x10U; |
3642 | } | 3686 | } |
3643 | static inline u32 gr_gpc0_tpc0_sm0_hww_warp_esr_error_none_f(void) | 3687 | static inline u32 gr_gpc0_tpc0_sm0_hww_warp_esr_error_invalid_const_addr_ldc_f(void) |
3644 | { | 3688 | { |
3645 | return 0x0U; | 3689 | return 0x12U; |
3690 | } | ||
3691 | static inline u32 gr_gpc0_tpc0_sm0_hww_warp_esr_error_stack_overflow_f(void) | ||
3692 | { | ||
3693 | return 0x16U; | ||
3694 | } | ||
3695 | static inline u32 gr_gpc0_tpc0_sm0_hww_warp_esr_error_mmu_fault_f(void) | ||
3696 | { | ||
3697 | return 0x17U; | ||
3698 | } | ||
3699 | static inline u32 gr_gpc0_tpc0_sm0_hww_warp_esr_error_tex_format_f(void) | ||
3700 | { | ||
3701 | return 0x18U; | ||
3702 | } | ||
3703 | static inline u32 gr_gpc0_tpc0_sm0_hww_warp_esr_error_tex_layout_f(void) | ||
3704 | { | ||
3705 | return 0x19U; | ||
3706 | } | ||
3707 | static inline u32 gr_gpc0_tpc0_sm0_hww_warp_esr_error_mmu_nack_f(void) | ||
3708 | { | ||
3709 | return 0x20U; | ||
3646 | } | 3710 | } |
3647 | static inline u32 gr_gpc0_tpc0_sm0_hww_warp_esr_wrap_id_m(void) | 3711 | static inline u32 gr_gpc0_tpc0_sm0_hww_warp_esr_wrap_id_m(void) |
3648 | { | 3712 | { |
@@ -3672,6 +3736,10 @@ static inline u32 gr_gpc0_tpc0_sm0_hww_warp_esr_pc_r(void) | |||
3672 | { | 3736 | { |
3673 | return 0x00504738U; | 3737 | return 0x00504738U; |
3674 | } | 3738 | } |
3739 | static inline u32 gr_gpc0_tpc0_sm0_hww_warp_esr_pc_hi_r(void) | ||
3740 | { | ||
3741 | return 0x0050473cU; | ||
3742 | } | ||
3675 | static inline u32 gr_gpc0_tpc0_sm_halfctl_ctrl_r(void) | 3743 | static inline u32 gr_gpc0_tpc0_sm_halfctl_ctrl_r(void) |
3676 | { | 3744 | { |
3677 | return 0x005043a0U; | 3745 | return 0x005043a0U; |
diff --git a/drivers/gpu/nvgpu/include/nvgpu/hw/gv11b/hw_gr_gv11b.h b/drivers/gpu/nvgpu/include/nvgpu/hw/gv11b/hw_gr_gv11b.h index 17c7e77d..5de691a2 100644 --- a/drivers/gpu/nvgpu/include/nvgpu/hw/gv11b/hw_gr_gv11b.h +++ b/drivers/gpu/nvgpu/include/nvgpu/hw/gv11b/hw_gr_gv11b.h | |||
@@ -4392,10 +4392,74 @@ static inline u32 gr_gpc0_tpc0_sm0_hww_warp_esr_error_none_f(void) | |||
4392 | { | 4392 | { |
4393 | return 0x0U; | 4393 | return 0x0U; |
4394 | } | 4394 | } |
4395 | static inline u32 gr_gpc0_tpc0_sm0_hww_warp_esr_error_stack_error_f(void) | ||
4396 | { | ||
4397 | return 0x1U; | ||
4398 | } | ||
4399 | static inline u32 gr_gpc0_tpc0_sm0_hww_warp_esr_error_api_stack_error_f(void) | ||
4400 | { | ||
4401 | return 0x2U; | ||
4402 | } | ||
4403 | static inline u32 gr_gpc0_tpc0_sm0_hww_warp_esr_error_pc_wrap_f(void) | ||
4404 | { | ||
4405 | return 0x4U; | ||
4406 | } | ||
4407 | static inline u32 gr_gpc0_tpc0_sm0_hww_warp_esr_error_misaligned_pc_f(void) | ||
4408 | { | ||
4409 | return 0x5U; | ||
4410 | } | ||
4411 | static inline u32 gr_gpc0_tpc0_sm0_hww_warp_esr_error_pc_overflow_f(void) | ||
4412 | { | ||
4413 | return 0x6U; | ||
4414 | } | ||
4415 | static inline u32 gr_gpc0_tpc0_sm0_hww_warp_esr_error_misaligned_reg_f(void) | ||
4416 | { | ||
4417 | return 0x8U; | ||
4418 | } | ||
4419 | static inline u32 gr_gpc0_tpc0_sm0_hww_warp_esr_error_illegal_instr_encoding_f(void) | ||
4420 | { | ||
4421 | return 0x9U; | ||
4422 | } | ||
4423 | static inline u32 gr_gpc0_tpc0_sm0_hww_warp_esr_error_illegal_instr_param_f(void) | ||
4424 | { | ||
4425 | return 0xbU; | ||
4426 | } | ||
4427 | static inline u32 gr_gpc0_tpc0_sm0_hww_warp_esr_error_oor_reg_f(void) | ||
4428 | { | ||
4429 | return 0xdU; | ||
4430 | } | ||
4431 | static inline u32 gr_gpc0_tpc0_sm0_hww_warp_esr_error_oor_addr_f(void) | ||
4432 | { | ||
4433 | return 0xeU; | ||
4434 | } | ||
4395 | static inline u32 gr_gpc0_tpc0_sm0_hww_warp_esr_error_misaligned_addr_f(void) | 4435 | static inline u32 gr_gpc0_tpc0_sm0_hww_warp_esr_error_misaligned_addr_f(void) |
4396 | { | 4436 | { |
4397 | return 0xfU; | 4437 | return 0xfU; |
4398 | } | 4438 | } |
4439 | static inline u32 gr_gpc0_tpc0_sm0_hww_warp_esr_error_invalid_addr_space_f(void) | ||
4440 | { | ||
4441 | return 0x10U; | ||
4442 | } | ||
4443 | static inline u32 gr_gpc0_tpc0_sm0_hww_warp_esr_error_invalid_const_addr_ldc_f(void) | ||
4444 | { | ||
4445 | return 0x12U; | ||
4446 | } | ||
4447 | static inline u32 gr_gpc0_tpc0_sm0_hww_warp_esr_error_stack_overflow_f(void) | ||
4448 | { | ||
4449 | return 0x16U; | ||
4450 | } | ||
4451 | static inline u32 gr_gpc0_tpc0_sm0_hww_warp_esr_error_mmu_fault_f(void) | ||
4452 | { | ||
4453 | return 0x17U; | ||
4454 | } | ||
4455 | static inline u32 gr_gpc0_tpc0_sm0_hww_warp_esr_error_tex_format_f(void) | ||
4456 | { | ||
4457 | return 0x18U; | ||
4458 | } | ||
4459 | static inline u32 gr_gpc0_tpc0_sm0_hww_warp_esr_error_tex_layout_f(void) | ||
4460 | { | ||
4461 | return 0x19U; | ||
4462 | } | ||
4399 | static inline u32 gr_gpc0_tpc0_sm0_hww_warp_esr_error_mmu_nack_f(void) | 4463 | static inline u32 gr_gpc0_tpc0_sm0_hww_warp_esr_error_mmu_nack_f(void) |
4400 | { | 4464 | { |
4401 | return 0x20U; | 4465 | return 0x20U; |
@@ -4428,6 +4492,10 @@ static inline u32 gr_gpc0_tpc0_sm0_hww_warp_esr_pc_r(void) | |||
4428 | { | 4492 | { |
4429 | return 0x00504738U; | 4493 | return 0x00504738U; |
4430 | } | 4494 | } |
4495 | static inline u32 gr_gpc0_tpc0_sm0_hww_warp_esr_pc_hi_r(void) | ||
4496 | { | ||
4497 | return 0x0050473cU; | ||
4498 | } | ||
4431 | static inline u32 gr_gpc0_tpc0_sm_halfctl_ctrl_r(void) | 4499 | static inline u32 gr_gpc0_tpc0_sm_halfctl_ctrl_r(void) |
4432 | { | 4500 | { |
4433 | return 0x005043a0U; | 4501 | return 0x005043a0U; |