diff options
author | Dave Airlie <airlied@redhat.com> | 2016-09-27 22:08:49 -0400 |
---|---|---|
committer | Dave Airlie <airlied@redhat.com> | 2016-09-27 22:08:49 -0400 |
commit | ca09fb9f60b5f3ab2d57e761aaeea89a5147d784 (patch) | |
tree | 908e42ecf32d2601f4c5c340c6c4626841baa661 /drivers/gpu/drm/amd | |
parent | 9f4ef05bcdcfdf911b056b471dd3c6a4f331b644 (diff) | |
parent | 08895a8b6b06ed2323cd97a36ee40a116b3db8ed (diff) |
Merge tag 'v4.8-rc8' into drm-next
Linux 4.8-rc8
There was a lot of fallout in the imx/amdgpu/i915 drivers, so backmerge
it now to avoid troubles.
* tag 'v4.8-rc8': (1442 commits)
Linux 4.8-rc8
fault_in_multipages_readable() throws set-but-unused error
mm: check VMA flags to avoid invalid PROT_NONE NUMA balancing
radix tree: fix sibling entry handling in radix_tree_descend()
radix tree test suite: Test radix_tree_replace_slot() for multiorder entries
fix memory leaks in tracing_buffers_splice_read()
tracing: Move mutex to protect against resetting of seq data
MIPS: Fix delay slot emulation count in debugfs
MIPS: SMP: Fix possibility of deadlock when bringing CPUs online
mm: delete unnecessary and unsafe init_tlb_ubc()
huge tmpfs: fix Committed_AS leak
shmem: fix tmpfs to handle the huge= option properly
blk-mq: skip unmapped queues in blk_mq_alloc_request_hctx
MIPS: Fix pre-r6 emulation FPU initialisation
arm64: kgdb: handle read-only text / modules
arm64: Call numa_store_cpu_info() earlier.
locking/hung_task: Fix typo in CONFIG_DETECT_HUNG_TASK help text
nvme-rdma: only clear queue flags after successful connect
i2c: qup: skip qup_i2c_suspend if the device is already runtime suspended
perf/core: Limit matching exclusive events to one PMU
...
Diffstat (limited to 'drivers/gpu/drm/amd')
-rw-r--r-- | drivers/gpu/drm/amd/amdgpu/amdgpu.h | 5 | ||||
-rw-r--r-- | drivers/gpu/drm/amd/amdgpu/amdgpu_atombios.c | 13 | ||||
-rw-r--r-- | drivers/gpu/drm/amd/amdgpu/amdgpu_atpx_handler.c | 9 | ||||
-rw-r--r-- | drivers/gpu/drm/amd/amdgpu/amdgpu_gart.c | 4 | ||||
-rw-r--r-- | drivers/gpu/drm/amd/amdgpu/amdgpu_ib.c | 5 | ||||
-rw-r--r-- | drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c | 4 | ||||
-rw-r--r-- | drivers/gpu/drm/amd/amdgpu/amdgpu_uvd.c | 3 | ||||
-rw-r--r-- | drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c | 5 | ||||
-rw-r--r-- | drivers/gpu/drm/amd/amdgpu/cik_sdma.c | 3 | ||||
-rw-r--r-- | drivers/gpu/drm/amd/amdgpu/gfx_v7_0.c | 12 | ||||
-rw-r--r-- | drivers/gpu/drm/amd/amdgpu/sdma_v2_4.c | 2 | ||||
-rw-r--r-- | drivers/gpu/drm/amd/amdkfd/kfd_doorbell.c | 2 | ||||
-rw-r--r-- | drivers/gpu/drm/amd/scheduler/gpu_scheduler.c | 2 |
13 files changed, 43 insertions, 26 deletions
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu.h b/drivers/gpu/drm/amd/amdgpu/amdgpu.h index 9d79e4ba0213..72c68dbb9821 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu.h +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu.h | |||
@@ -407,7 +407,6 @@ unsigned amdgpu_fence_count_emitted(struct amdgpu_ring *ring); | |||
407 | /* | 407 | /* |
408 | * BO. | 408 | * BO. |
409 | */ | 409 | */ |
410 | |||
411 | struct amdgpu_bo_list_entry { | 410 | struct amdgpu_bo_list_entry { |
412 | struct amdgpu_bo *robj; | 411 | struct amdgpu_bo *robj; |
413 | struct ttm_validate_buffer tv; | 412 | struct ttm_validate_buffer tv; |
@@ -620,9 +619,9 @@ int amdgpu_gart_table_vram_pin(struct amdgpu_device *adev); | |||
620 | void amdgpu_gart_table_vram_unpin(struct amdgpu_device *adev); | 619 | void amdgpu_gart_table_vram_unpin(struct amdgpu_device *adev); |
621 | int amdgpu_gart_init(struct amdgpu_device *adev); | 620 | int amdgpu_gart_init(struct amdgpu_device *adev); |
622 | void amdgpu_gart_fini(struct amdgpu_device *adev); | 621 | void amdgpu_gart_fini(struct amdgpu_device *adev); |
623 | void amdgpu_gart_unbind(struct amdgpu_device *adev, unsigned offset, | 622 | void amdgpu_gart_unbind(struct amdgpu_device *adev, uint64_t offset, |
624 | int pages); | 623 | int pages); |
625 | int amdgpu_gart_bind(struct amdgpu_device *adev, unsigned offset, | 624 | int amdgpu_gart_bind(struct amdgpu_device *adev, uint64_t offset, |
626 | int pages, struct page **pagelist, | 625 | int pages, struct page **pagelist, |
627 | dma_addr_t *dma_addr, uint32_t flags); | 626 | dma_addr_t *dma_addr, uint32_t flags); |
628 | int amdgpu_ttm_recover_gart(struct amdgpu_device *adev); | 627 | int amdgpu_ttm_recover_gart(struct amdgpu_device *adev); |
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_atombios.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_atombios.c index 59961db9c390..8e6bf548d689 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_atombios.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_atombios.c | |||
@@ -348,6 +348,19 @@ bool amdgpu_atombios_get_connector_info_from_object_table(struct amdgpu_device * | |||
348 | (le16_to_cpu(path->usConnObjectId) & | 348 | (le16_to_cpu(path->usConnObjectId) & |
349 | OBJECT_TYPE_MASK) >> OBJECT_TYPE_SHIFT; | 349 | OBJECT_TYPE_MASK) >> OBJECT_TYPE_SHIFT; |
350 | 350 | ||
351 | /* Skip TV/CV support */ | ||
352 | if ((le16_to_cpu(path->usDeviceTag) == | ||
353 | ATOM_DEVICE_TV1_SUPPORT) || | ||
354 | (le16_to_cpu(path->usDeviceTag) == | ||
355 | ATOM_DEVICE_CV_SUPPORT)) | ||
356 | continue; | ||
357 | |||
358 | if (con_obj_id >= ARRAY_SIZE(object_connector_convert)) { | ||
359 | DRM_ERROR("invalid con_obj_id %d for device tag 0x%04x\n", | ||
360 | con_obj_id, le16_to_cpu(path->usDeviceTag)); | ||
361 | continue; | ||
362 | } | ||
363 | |||
351 | connector_type = | 364 | connector_type = |
352 | object_connector_convert[con_obj_id]; | 365 | object_connector_convert[con_obj_id]; |
353 | connector_object_id = con_obj_id; | 366 | connector_object_id = con_obj_id; |
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_atpx_handler.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_atpx_handler.c index 550c5ee704ec..dae35a96a694 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_atpx_handler.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_atpx_handler.c | |||
@@ -205,16 +205,7 @@ static int amdgpu_atpx_validate(struct amdgpu_atpx *atpx) | |||
205 | atpx->is_hybrid = false; | 205 | atpx->is_hybrid = false; |
206 | if (valid_bits & ATPX_MS_HYBRID_GFX_SUPPORTED) { | 206 | if (valid_bits & ATPX_MS_HYBRID_GFX_SUPPORTED) { |
207 | printk("ATPX Hybrid Graphics\n"); | 207 | printk("ATPX Hybrid Graphics\n"); |
208 | #if 1 | ||
209 | /* This is a temporary hack until the D3 cold support | ||
210 | * makes it upstream. The ATPX power_control method seems | ||
211 | * to still work on even if the system should be using | ||
212 | * the new standardized hybrid D3 cold ACPI interface. | ||
213 | */ | ||
214 | atpx->functions.power_cntl = true; | ||
215 | #else | ||
216 | atpx->functions.power_cntl = false; | 208 | atpx->functions.power_cntl = false; |
217 | #endif | ||
218 | atpx->is_hybrid = true; | 209 | atpx->is_hybrid = true; |
219 | } | 210 | } |
220 | 211 | ||
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_gart.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_gart.c index 921bce2df0b0..0feea347f680 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_gart.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_gart.c | |||
@@ -221,7 +221,7 @@ void amdgpu_gart_table_vram_free(struct amdgpu_device *adev) | |||
221 | * Unbinds the requested pages from the gart page table and | 221 | * Unbinds the requested pages from the gart page table and |
222 | * replaces them with the dummy page (all asics). | 222 | * replaces them with the dummy page (all asics). |
223 | */ | 223 | */ |
224 | void amdgpu_gart_unbind(struct amdgpu_device *adev, unsigned offset, | 224 | void amdgpu_gart_unbind(struct amdgpu_device *adev, uint64_t offset, |
225 | int pages) | 225 | int pages) |
226 | { | 226 | { |
227 | unsigned t; | 227 | unsigned t; |
@@ -268,7 +268,7 @@ void amdgpu_gart_unbind(struct amdgpu_device *adev, unsigned offset, | |||
268 | * (all asics). | 268 | * (all asics). |
269 | * Returns 0 for success, -EINVAL for failure. | 269 | * Returns 0 for success, -EINVAL for failure. |
270 | */ | 270 | */ |
271 | int amdgpu_gart_bind(struct amdgpu_device *adev, unsigned offset, | 271 | int amdgpu_gart_bind(struct amdgpu_device *adev, uint64_t offset, |
272 | int pages, struct page **pagelist, dma_addr_t *dma_addr, | 272 | int pages, struct page **pagelist, dma_addr_t *dma_addr, |
273 | uint32_t flags) | 273 | uint32_t flags) |
274 | { | 274 | { |
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_ib.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_ib.c index 4127e7ceace0..6a6c86c9c169 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_ib.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_ib.c | |||
@@ -295,7 +295,7 @@ void amdgpu_ib_pool_fini(struct amdgpu_device *adev) | |||
295 | int amdgpu_ib_ring_tests(struct amdgpu_device *adev) | 295 | int amdgpu_ib_ring_tests(struct amdgpu_device *adev) |
296 | { | 296 | { |
297 | unsigned i; | 297 | unsigned i; |
298 | int r; | 298 | int r, ret = 0; |
299 | 299 | ||
300 | for (i = 0; i < AMDGPU_MAX_RINGS; ++i) { | 300 | for (i = 0; i < AMDGPU_MAX_RINGS; ++i) { |
301 | struct amdgpu_ring *ring = adev->rings[i]; | 301 | struct amdgpu_ring *ring = adev->rings[i]; |
@@ -316,10 +316,11 @@ int amdgpu_ib_ring_tests(struct amdgpu_device *adev) | |||
316 | } else { | 316 | } else { |
317 | /* still not good, but we can live with it */ | 317 | /* still not good, but we can live with it */ |
318 | DRM_ERROR("amdgpu: failed testing IB on ring %d (%d).\n", i, r); | 318 | DRM_ERROR("amdgpu: failed testing IB on ring %d (%d).\n", i, r); |
319 | ret = r; | ||
319 | } | 320 | } |
320 | } | 321 | } |
321 | } | 322 | } |
322 | return 0; | 323 | return ret; |
323 | } | 324 | } |
324 | 325 | ||
325 | /* | 326 | /* |
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c index b63969d7887c..160a094e1a93 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_ttm.c | |||
@@ -273,8 +273,8 @@ static int amdgpu_move_blit(struct ttm_buffer_object *bo, | |||
273 | 273 | ||
274 | adev = amdgpu_get_adev(bo->bdev); | 274 | adev = amdgpu_get_adev(bo->bdev); |
275 | ring = adev->mman.buffer_funcs_ring; | 275 | ring = adev->mman.buffer_funcs_ring; |
276 | old_start = old_mem->start << PAGE_SHIFT; | 276 | old_start = (u64)old_mem->start << PAGE_SHIFT; |
277 | new_start = new_mem->start << PAGE_SHIFT; | 277 | new_start = (u64)new_mem->start << PAGE_SHIFT; |
278 | 278 | ||
279 | switch (old_mem->mem_type) { | 279 | switch (old_mem->mem_type) { |
280 | case TTM_PL_TT: | 280 | case TTM_PL_TT: |
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_uvd.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_uvd.c index 25dd58a65905..cee7bc9a2314 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_uvd.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_uvd.c | |||
@@ -1154,7 +1154,8 @@ int amdgpu_uvd_ring_test_ib(struct amdgpu_ring *ring, long timeout) | |||
1154 | r = 0; | 1154 | r = 0; |
1155 | } | 1155 | } |
1156 | 1156 | ||
1157 | error: | ||
1158 | fence_put(fence); | 1157 | fence_put(fence); |
1158 | |||
1159 | error: | ||
1159 | return r; | 1160 | return r; |
1160 | } | 1161 | } |
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c index bd5af328154f..a6a48ed9562e 100644 --- a/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c +++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_vm.c | |||
@@ -1593,7 +1593,7 @@ int amdgpu_vm_init(struct amdgpu_device *adev, struct amdgpu_vm *vm) | |||
1593 | r = amd_sched_entity_init(&ring->sched, &vm->entity, | 1593 | r = amd_sched_entity_init(&ring->sched, &vm->entity, |
1594 | rq, amdgpu_sched_jobs); | 1594 | rq, amdgpu_sched_jobs); |
1595 | if (r) | 1595 | if (r) |
1596 | return r; | 1596 | goto err; |
1597 | 1597 | ||
1598 | vm->page_directory_fence = NULL; | 1598 | vm->page_directory_fence = NULL; |
1599 | 1599 | ||
@@ -1624,6 +1624,9 @@ error_free_page_directory: | |||
1624 | error_free_sched_entity: | 1624 | error_free_sched_entity: |
1625 | amd_sched_entity_fini(&ring->sched, &vm->entity); | 1625 | amd_sched_entity_fini(&ring->sched, &vm->entity); |
1626 | 1626 | ||
1627 | err: | ||
1628 | drm_free_large(vm->page_tables); | ||
1629 | |||
1627 | return r; | 1630 | return r; |
1628 | } | 1631 | } |
1629 | 1632 | ||
diff --git a/drivers/gpu/drm/amd/amdgpu/cik_sdma.c b/drivers/gpu/drm/amd/amdgpu/cik_sdma.c index e6d7bf9520a0..cb952acc7133 100644 --- a/drivers/gpu/drm/amd/amdgpu/cik_sdma.c +++ b/drivers/gpu/drm/amd/amdgpu/cik_sdma.c | |||
@@ -52,6 +52,7 @@ static void cik_sdma_set_ring_funcs(struct amdgpu_device *adev); | |||
52 | static void cik_sdma_set_irq_funcs(struct amdgpu_device *adev); | 52 | static void cik_sdma_set_irq_funcs(struct amdgpu_device *adev); |
53 | static void cik_sdma_set_buffer_funcs(struct amdgpu_device *adev); | 53 | static void cik_sdma_set_buffer_funcs(struct amdgpu_device *adev); |
54 | static void cik_sdma_set_vm_pte_funcs(struct amdgpu_device *adev); | 54 | static void cik_sdma_set_vm_pte_funcs(struct amdgpu_device *adev); |
55 | static int cik_sdma_soft_reset(void *handle); | ||
55 | 56 | ||
56 | MODULE_FIRMWARE("radeon/bonaire_sdma.bin"); | 57 | MODULE_FIRMWARE("radeon/bonaire_sdma.bin"); |
57 | MODULE_FIRMWARE("radeon/bonaire_sdma1.bin"); | 58 | MODULE_FIRMWARE("radeon/bonaire_sdma1.bin"); |
@@ -1014,6 +1015,8 @@ static int cik_sdma_resume(void *handle) | |||
1014 | { | 1015 | { |
1015 | struct amdgpu_device *adev = (struct amdgpu_device *)handle; | 1016 | struct amdgpu_device *adev = (struct amdgpu_device *)handle; |
1016 | 1017 | ||
1018 | cik_sdma_soft_reset(handle); | ||
1019 | |||
1017 | return cik_sdma_hw_init(adev); | 1020 | return cik_sdma_hw_init(adev); |
1018 | } | 1021 | } |
1019 | 1022 | ||
diff --git a/drivers/gpu/drm/amd/amdgpu/gfx_v7_0.c b/drivers/gpu/drm/amd/amdgpu/gfx_v7_0.c index 32a676291e67..71116da9e782 100644 --- a/drivers/gpu/drm/amd/amdgpu/gfx_v7_0.c +++ b/drivers/gpu/drm/amd/amdgpu/gfx_v7_0.c | |||
@@ -2927,8 +2927,7 @@ static int gfx_v7_0_cp_compute_resume(struct amdgpu_device *adev) | |||
2927 | u64 wb_gpu_addr; | 2927 | u64 wb_gpu_addr; |
2928 | u32 *buf; | 2928 | u32 *buf; |
2929 | struct bonaire_mqd *mqd; | 2929 | struct bonaire_mqd *mqd; |
2930 | 2930 | struct amdgpu_ring *ring; | |
2931 | gfx_v7_0_cp_compute_enable(adev, true); | ||
2932 | 2931 | ||
2933 | /* fix up chicken bits */ | 2932 | /* fix up chicken bits */ |
2934 | tmp = RREG32(mmCP_CPF_DEBUG); | 2933 | tmp = RREG32(mmCP_CPF_DEBUG); |
@@ -2963,7 +2962,7 @@ static int gfx_v7_0_cp_compute_resume(struct amdgpu_device *adev) | |||
2963 | 2962 | ||
2964 | /* init the queues. Just two for now. */ | 2963 | /* init the queues. Just two for now. */ |
2965 | for (i = 0; i < adev->gfx.num_compute_rings; i++) { | 2964 | for (i = 0; i < adev->gfx.num_compute_rings; i++) { |
2966 | struct amdgpu_ring *ring = &adev->gfx.compute_ring[i]; | 2965 | ring = &adev->gfx.compute_ring[i]; |
2967 | 2966 | ||
2968 | if (ring->mqd_obj == NULL) { | 2967 | if (ring->mqd_obj == NULL) { |
2969 | r = amdgpu_bo_create(adev, | 2968 | r = amdgpu_bo_create(adev, |
@@ -3142,6 +3141,13 @@ static int gfx_v7_0_cp_compute_resume(struct amdgpu_device *adev) | |||
3142 | amdgpu_bo_unreserve(ring->mqd_obj); | 3141 | amdgpu_bo_unreserve(ring->mqd_obj); |
3143 | 3142 | ||
3144 | ring->ready = true; | 3143 | ring->ready = true; |
3144 | } | ||
3145 | |||
3146 | gfx_v7_0_cp_compute_enable(adev, true); | ||
3147 | |||
3148 | for (i = 0; i < adev->gfx.num_compute_rings; i++) { | ||
3149 | ring = &adev->gfx.compute_ring[i]; | ||
3150 | |||
3145 | r = amdgpu_ring_test_ring(ring); | 3151 | r = amdgpu_ring_test_ring(ring); |
3146 | if (r) | 3152 | if (r) |
3147 | ring->ready = false; | 3153 | ring->ready = false; |
diff --git a/drivers/gpu/drm/amd/amdgpu/sdma_v2_4.c b/drivers/gpu/drm/amd/amdgpu/sdma_v2_4.c index 9ae307505190..565dab3c7218 100644 --- a/drivers/gpu/drm/amd/amdgpu/sdma_v2_4.c +++ b/drivers/gpu/drm/amd/amdgpu/sdma_v2_4.c | |||
@@ -710,7 +710,7 @@ static int sdma_v2_4_ring_test_ib(struct amdgpu_ring *ring, long timeout) | |||
710 | DRM_ERROR("amdgpu: IB test timed out\n"); | 710 | DRM_ERROR("amdgpu: IB test timed out\n"); |
711 | r = -ETIMEDOUT; | 711 | r = -ETIMEDOUT; |
712 | goto err1; | 712 | goto err1; |
713 | } else if (r) { | 713 | } else if (r < 0) { |
714 | DRM_ERROR("amdgpu: fence wait failed (%ld).\n", r); | 714 | DRM_ERROR("amdgpu: fence wait failed (%ld).\n", r); |
715 | goto err1; | 715 | goto err1; |
716 | } | 716 | } |
diff --git a/drivers/gpu/drm/amd/amdkfd/kfd_doorbell.c b/drivers/gpu/drm/amd/amdkfd/kfd_doorbell.c index ad494b875311..453c5d66e5c3 100644 --- a/drivers/gpu/drm/amd/amdkfd/kfd_doorbell.c +++ b/drivers/gpu/drm/amd/amdkfd/kfd_doorbell.c | |||
@@ -186,7 +186,7 @@ u32 __iomem *kfd_get_kernel_doorbell(struct kfd_dev *kfd, | |||
186 | sizeof(u32)) + inx; | 186 | sizeof(u32)) + inx; |
187 | 187 | ||
188 | pr_debug("kfd: get kernel queue doorbell\n" | 188 | pr_debug("kfd: get kernel queue doorbell\n" |
189 | " doorbell offset == 0x%08d\n" | 189 | " doorbell offset == 0x%08X\n" |
190 | " kernel address == 0x%08lX\n", | 190 | " kernel address == 0x%08lX\n", |
191 | *doorbell_off, (uintptr_t)(kfd->doorbell_kernel_ptr + inx)); | 191 | *doorbell_off, (uintptr_t)(kfd->doorbell_kernel_ptr + inx)); |
192 | 192 | ||
diff --git a/drivers/gpu/drm/amd/scheduler/gpu_scheduler.c b/drivers/gpu/drm/amd/scheduler/gpu_scheduler.c index ef312bb75fda..963a24d46a93 100644 --- a/drivers/gpu/drm/amd/scheduler/gpu_scheduler.c +++ b/drivers/gpu/drm/amd/scheduler/gpu_scheduler.c | |||
@@ -405,7 +405,7 @@ void amd_sched_job_recovery(struct amd_gpu_scheduler *sched) | |||
405 | spin_lock(&sched->job_list_lock); | 405 | spin_lock(&sched->job_list_lock); |
406 | s_job = list_first_entry_or_null(&sched->ring_mirror_list, | 406 | s_job = list_first_entry_or_null(&sched->ring_mirror_list, |
407 | struct amd_sched_job, node); | 407 | struct amd_sched_job, node); |
408 | if (s_job) | 408 | if (s_job && sched->timeout != MAX_SCHEDULE_TIMEOUT) |
409 | schedule_delayed_work(&s_job->work_tdr, sched->timeout); | 409 | schedule_delayed_work(&s_job->work_tdr, sched->timeout); |
410 | 410 | ||
411 | list_for_each_entry_safe(s_job, tmp, &sched->ring_mirror_list, node) { | 411 | list_for_each_entry_safe(s_job, tmp, &sched->ring_mirror_list, node) { |