diff options
author | Deepak Nibade <dnibade@nvidia.com> | 2018-01-04 08:02:46 -0500 |
---|---|---|
committer | mobile promotions <svcmobile_promotions@nvidia.com> | 2018-01-12 14:05:31 -0500 |
commit | 5b10690479d016dd27d4592d94e7bd12a9277a34 (patch) | |
tree | 663501e778ad0089c1930c7beff8a62dfac34ea6 /drivers/gpu/nvgpu/include/nvgpu | |
parent | 6170f1eed53b4e6770a6948474ab8a8a5e2621bc (diff) |
gpu: nvgpu: handle SM reported MMU_NACK exception
Upon receiving MMU_FAULT error, MMU will forward MMU_NACK to SM
If MMU_NACK is masked out, SM will simply release the semaphores
And if semaphores are released before MMU fault is handled, user space
could see that operation as successful incorrectly
Fix this by handling SM reported MMU_NACK exception
Enable MMU_NACK reporting in gv11b_gr_set_hww_esr_report_mask
In MMU_NACK handling path, we just set the error notifier and clear
the interrupt so that the User Space sees the error as soon as
semaphores are released by SM
And MMU_FAULT handling path will take care of triggering RC recovery
anyways
Also add necessary h/w accessors for mmu_nack
Bug 2040594
Jira NVGPU-473
Change-Id: Ic925c2d3f3069016c57d177713066c29ab39dc3d
Signed-off-by: Deepak Nibade <dnibade@nvidia.com>
Reviewed-on: https://git-master.nvidia.com/r/1631708
GVS: Gerrit_Virtual_Submit
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/nvgpu')
-rw-r--r-- | drivers/gpu/nvgpu/include/nvgpu/hw/gv100/hw_gr_gv100.h | 10 | ||||
-rw-r--r-- | drivers/gpu/nvgpu/include/nvgpu/hw/gv11b/hw_gr_gv11b.h | 10 |
2 files changed, 18 insertions, 2 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 09cbc793..e669c0f0 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 | |||
@@ -1,5 +1,5 @@ | |||
1 | /* | 1 | /* |
2 | * Copyright (c) 2017, NVIDIA CORPORATION. All rights reserved. | 2 | * Copyright (c) 2017-2018, NVIDIA CORPORATION. All rights reserved. |
3 | * | 3 | * |
4 | * Permission is hereby granted, free of charge, to any person obtaining a | 4 | * Permission is hereby granted, free of charge, to any person obtaining a |
5 | * copy of this software and associated documentation files (the "Software"), | 5 | * copy of this software and associated documentation files (the "Software"), |
@@ -3344,6 +3344,10 @@ static inline u32 gr_gpc0_tpc0_sm0_hww_warp_esr_report_mask_stack_overflow_repor | |||
3344 | { | 3344 | { |
3345 | return 0x400000U; | 3345 | return 0x400000U; |
3346 | } | 3346 | } |
3347 | static inline u32 gr_gpc0_tpc0_sm0_hww_warp_esr_report_mask_mmu_nack_report_f(void) | ||
3348 | { | ||
3349 | return 0x4000000U; | ||
3350 | } | ||
3347 | static inline u32 gr_gpcs_tpcs_tpccs_tpc_exception_en_r(void) | 3351 | static inline u32 gr_gpcs_tpcs_tpccs_tpc_exception_en_r(void) |
3348 | { | 3352 | { |
3349 | return 0x00419d0cU; | 3353 | return 0x00419d0cU; |
@@ -3552,6 +3556,10 @@ static inline u32 gr_gpc0_tpc0_sm0_hww_warp_esr_error_none_v(void) | |||
3552 | { | 3556 | { |
3553 | return 0x00000000U; | 3557 | return 0x00000000U; |
3554 | } | 3558 | } |
3559 | static inline u32 gr_gpc0_tpc0_sm0_hww_warp_esr_error_mmu_nack_f(void) | ||
3560 | { | ||
3561 | return 0x20U; | ||
3562 | } | ||
3555 | static inline u32 gr_gpc0_tpc0_sm0_hww_warp_esr_error_none_f(void) | 3563 | static inline u32 gr_gpc0_tpc0_sm0_hww_warp_esr_error_none_f(void) |
3556 | { | 3564 | { |
3557 | return 0x0U; | 3565 | return 0x0U; |
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 1e82456f..2b9bffdd 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 | |||
@@ -1,5 +1,5 @@ | |||
1 | /* | 1 | /* |
2 | * Copyright (c) 2016-2017, NVIDIA CORPORATION. All rights reserved. | 2 | * Copyright (c) 2016-2018, NVIDIA CORPORATION. All rights reserved. |
3 | * | 3 | * |
4 | * Permission is hereby granted, free of charge, to any person obtaining a | 4 | * Permission is hereby granted, free of charge, to any person obtaining a |
5 | * copy of this software and associated documentation files (the "Software"), | 5 | * copy of this software and associated documentation files (the "Software"), |
@@ -3940,6 +3940,10 @@ static inline u32 gr_gpc0_tpc0_sm0_hww_warp_esr_report_mask_stack_overflow_repor | |||
3940 | { | 3940 | { |
3941 | return 0x400000U; | 3941 | return 0x400000U; |
3942 | } | 3942 | } |
3943 | static inline u32 gr_gpc0_tpc0_sm0_hww_warp_esr_report_mask_mmu_nack_report_f(void) | ||
3944 | { | ||
3945 | return 0x4000000U; | ||
3946 | } | ||
3943 | static inline u32 gr_gpcs_tpcs_tpccs_tpc_exception_en_r(void) | 3947 | static inline u32 gr_gpcs_tpcs_tpccs_tpc_exception_en_r(void) |
3944 | { | 3948 | { |
3945 | return 0x00419d0cU; | 3949 | return 0x00419d0cU; |
@@ -4240,6 +4244,10 @@ static inline u32 gr_gpc0_tpc0_sm0_hww_warp_esr_error_none_f(void) | |||
4240 | { | 4244 | { |
4241 | return 0x0U; | 4245 | return 0x0U; |
4242 | } | 4246 | } |
4247 | static inline u32 gr_gpc0_tpc0_sm0_hww_warp_esr_error_mmu_nack_f(void) | ||
4248 | { | ||
4249 | return 0x20U; | ||
4250 | } | ||
4243 | static inline u32 gr_gpc0_tpc0_sm0_hww_warp_esr_wrap_id_m(void) | 4251 | static inline u32 gr_gpc0_tpc0_sm0_hww_warp_esr_wrap_id_m(void) |
4244 | { | 4252 | { |
4245 | return 0xffU << 16U; | 4253 | return 0xffU << 16U; |