diff options
Diffstat (limited to 'drivers/gpu/nvgpu/gv11b/gr_gv11b.c')
-rw-r--r-- | drivers/gpu/nvgpu/gv11b/gr_gv11b.c | 23 |
1 files changed, 14 insertions, 9 deletions
diff --git a/drivers/gpu/nvgpu/gv11b/gr_gv11b.c b/drivers/gpu/nvgpu/gv11b/gr_gv11b.c index 378bdc13..9bd48fdc 100644 --- a/drivers/gpu/nvgpu/gv11b/gr_gv11b.c +++ b/drivers/gpu/nvgpu/gv11b/gr_gv11b.c | |||
@@ -48,6 +48,7 @@ | |||
48 | #include "gv11b/subctx_gv11b.h" | 48 | #include "gv11b/subctx_gv11b.h" |
49 | #include "gv11b/gv11b.h" | 49 | #include "gv11b/gv11b.h" |
50 | #include "gv11b/gr_pri_gv11b.h" | 50 | #include "gv11b/gr_pri_gv11b.h" |
51 | #include "gv11b/fb_gv11b.h" | ||
51 | 52 | ||
52 | #include <nvgpu/hw/gv11b/hw_gr_gv11b.h> | 53 | #include <nvgpu/hw/gv11b/hw_gr_gv11b.h> |
53 | #include <nvgpu/hw/gv11b/hw_fifo_gv11b.h> | 54 | #include <nvgpu/hw/gv11b/hw_fifo_gv11b.h> |
@@ -3735,15 +3736,19 @@ int gv11b_gr_wait_for_sm_lock_down(struct gk20a *g, | |||
3735 | return 0; | 3736 | return 0; |
3736 | } | 3737 | } |
3737 | 3738 | ||
3738 | /* if an mmu fault is pending and mmu debug mode is not | 3739 | if (mmu_debug_mode_enabled) { |
3739 | * enabled, the sm will never lock down. | 3740 | gv11b_fb_handle_replayable_mmu_fault(g); |
3740 | */ | 3741 | } else { |
3741 | if (!mmu_debug_mode_enabled && | 3742 | /* if an mmu fault is pending and mmu debug mode is not |
3742 | (g->ops.mm.mmu_fault_pending(g))) { | 3743 | * enabled, the sm will never lock down. |
3743 | nvgpu_err(g, | 3744 | */ |
3744 | "GPC%d TPC%d: mmu fault pending," | 3745 | if (g->ops.mm.mmu_fault_pending(g)) { |
3745 | " SM%d will never lock down!", gpc, tpc, sm); | 3746 | nvgpu_err(g, |
3746 | return -EFAULT; | 3747 | "GPC%d TPC%d: mmu fault pending," |
3748 | " SM%d will never lock down!", | ||
3749 | gpc, tpc, sm); | ||
3750 | return -EFAULT; | ||
3751 | } | ||
3747 | } | 3752 | } |
3748 | 3753 | ||
3749 | nvgpu_usleep_range(delay, delay * 2); | 3754 | nvgpu_usleep_range(delay, delay * 2); |