diff options
Diffstat (limited to 'drivers/gpu/nvgpu/gk20a/fifo_gk20a.c')
-rw-r--r-- | drivers/gpu/nvgpu/gk20a/fifo_gk20a.c | 13 |
1 files changed, 9 insertions, 4 deletions
diff --git a/drivers/gpu/nvgpu/gk20a/fifo_gk20a.c b/drivers/gpu/nvgpu/gk20a/fifo_gk20a.c index 0d3a75fc..95351a43 100644 --- a/drivers/gpu/nvgpu/gk20a/fifo_gk20a.c +++ b/drivers/gpu/nvgpu/gk20a/fifo_gk20a.c | |||
@@ -3115,9 +3115,11 @@ bool gk20a_fifo_mmu_fault_pending(struct gk20a *g) | |||
3115 | 3115 | ||
3116 | bool gk20a_fifo_is_engine_busy(struct gk20a *g) | 3116 | bool gk20a_fifo_is_engine_busy(struct gk20a *g) |
3117 | { | 3117 | { |
3118 | unsigned int i; | 3118 | u32 i, host_num_engines; |
3119 | |||
3120 | host_num_engines = nvgpu_get_litter_value(g, GPU_LIT_HOST_NUM_ENGINES); | ||
3119 | 3121 | ||
3120 | for (i = 0; i < fifo_engine_status__size_1_v(); i++) { | 3122 | for (i = 0; i < host_num_engines; i++) { |
3121 | u32 status = gk20a_readl(g, fifo_engine_status_r(i)); | 3123 | u32 status = gk20a_readl(g, fifo_engine_status_r(i)); |
3122 | if (fifo_engine_status_engine_v(status) == | 3124 | if (fifo_engine_status_engine_v(status) == |
3123 | fifo_engine_status_engine_busy_v()) | 3125 | fifo_engine_status_engine_busy_v()) |
@@ -3131,14 +3133,17 @@ int gk20a_fifo_wait_engine_idle(struct gk20a *g) | |||
3131 | struct nvgpu_timeout timeout; | 3133 | struct nvgpu_timeout timeout; |
3132 | unsigned long delay = GR_IDLE_CHECK_DEFAULT; | 3134 | unsigned long delay = GR_IDLE_CHECK_DEFAULT; |
3133 | int ret = -ETIMEDOUT; | 3135 | int ret = -ETIMEDOUT; |
3134 | u32 i; | 3136 | u32 i, host_num_engines; |
3135 | 3137 | ||
3136 | gk20a_dbg_fn(""); | 3138 | gk20a_dbg_fn(""); |
3137 | 3139 | ||
3140 | host_num_engines = | ||
3141 | nvgpu_get_litter_value(g, GPU_LIT_HOST_NUM_ENGINES); | ||
3142 | |||
3138 | nvgpu_timeout_init(g, &timeout, gk20a_get_gr_idle_timeout(g), | 3143 | nvgpu_timeout_init(g, &timeout, gk20a_get_gr_idle_timeout(g), |
3139 | NVGPU_TIMER_CPU_TIMER); | 3144 | NVGPU_TIMER_CPU_TIMER); |
3140 | 3145 | ||
3141 | for (i = 0; i < fifo_engine_status__size_1_v(); i++) { | 3146 | for (i = 0; i < host_num_engines; i++) { |
3142 | do { | 3147 | do { |
3143 | u32 status = gk20a_readl(g, fifo_engine_status_r(i)); | 3148 | u32 status = gk20a_readl(g, fifo_engine_status_r(i)); |
3144 | if (!fifo_engine_status_engine_v(status)) { | 3149 | if (!fifo_engine_status_engine_v(status)) { |