aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/gpu/drm/amd/amdgpu
diff options
context:
space:
mode:
authorDave Airlie <airlied@redhat.com>2016-01-10 19:00:38 -0500
committerDave Airlie <airlied@redhat.com>2016-01-10 19:00:38 -0500
commitb483666bb4939ee14501da9978e5f87e4aa22228 (patch)
tree0c87132a3f776f39df78e47526ed997fcb99dfc8 /drivers/gpu/drm/amd/amdgpu
parentc11b8989635166c5a1e6aac1853a847bd664f8db (diff)
parent13c240ef95e6569956ba9c731a650cecb3603f0e (diff)
Merge branch 'drm-next-4.5' of git://people.freedesktop.org/~agd5f/linux into drm-next
Misc fixes for amdgpu and radeon for 4.5. The bulk of the changes are smatch fixes and cleanups. This also includes the DP MST fixes from Mykola. Beyond that some fixes from Christian to avoid -ENOMEM errors in some corner cases in the CS ioctl, some suspend and resume fixes, and some powerplay fixes. * 'drm-next-4.5' of git://people.freedesktop.org/~agd5f/linux: (33 commits) drm/radeon: fix trivial typo in warning message radeon: r100: Silence 'may be used uninitialized' warnings drm/amdgpu: add warning to amdgpu_bo_gpu_offset() v2 drm/amd/powerplay: implement power down asic task for CZ drm/amd/powerplay: enable power down asic task. (v2) drm/amd/powerplay: enable set boot state task drm/amd/powerplay: add thermal control task when resume. drm/amdgpu: fix hex/decimal bug when show gpu load. drm/amdgpu: Show gpu load when display gpu performance for Fiji of VI. drm/amdgpu: Show gpu load when display gpu performance for Ci. drm/amd/powerplay: Reload and initialize the smc firmware on powerplay resume. drm/amd/powerplay: add powerplay valid check to avoid null point. (v2) drm/amd/powerplay: fix Smatch static checker warnings drm/amd/powerplay: fix Smatch static checker warnings with indenting (v2) drm/amd/powerplay: fix bug that NULL checks are reversed. amdgpu/dce11: Add test for crtc < 0 to various DCEv11 functions amdgpu/dce11: Remove division from dce_v11_0_vblank_wait() amdgpu/vce3: Simplify vce_v3_0_hw_init and ensure both rings default to not ready. amdgpu/vce3: Remove magic constants from harvest register masks. amdgpu/vce3: Simplify vce_v3_0_process_interrupt() ...
Diffstat (limited to 'drivers/gpu/drm/amd/amdgpu')
-rw-r--r--drivers/gpu/drm/amd/amdgpu/amdgpu_cgs.c18
-rw-r--r--drivers/gpu/drm/amd/amdgpu/amdgpu_object.h1
-rw-r--r--drivers/gpu/drm/amd/amdgpu/amdgpu_pm.c2
-rw-r--r--drivers/gpu/drm/amd/amdgpu/ci_dpm.c14
-rw-r--r--drivers/gpu/drm/amd/amdgpu/dce_v11_0.c16
-rw-r--r--drivers/gpu/drm/amd/amdgpu/gmc_v7_0.c1
-rw-r--r--drivers/gpu/drm/amd/amdgpu/gmc_v8_0.c1
-rw-r--r--drivers/gpu/drm/amd/amdgpu/vce_v3_0.c89
8 files changed, 55 insertions, 87 deletions
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_cgs.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_cgs.c
index 6fa0feac27f8..59485d0b3cfb 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_cgs.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_cgs.c
@@ -843,15 +843,15 @@ static int amdgpu_cgs_acpi_eval_object(void *cgs_device,
843 if (info->input_count > 0) { 843 if (info->input_count > 0) {
844 if (info->pinput_argument == NULL) 844 if (info->pinput_argument == NULL)
845 return -EINVAL; 845 return -EINVAL;
846 argument = info->pinput_argument; 846 argument = info->pinput_argument;
847 func_no = argument->value; 847 func_no = argument->value;
848 for (i = 0; i < info->input_count; i++) { 848 for (i = 0; i < info->input_count; i++) {
849 if (((argument->type == ACPI_TYPE_STRING) || 849 if (((argument->type == ACPI_TYPE_STRING) ||
850 (argument->type == ACPI_TYPE_BUFFER)) 850 (argument->type == ACPI_TYPE_BUFFER)) &&
851 && (argument->pointer == NULL)) 851 (argument->pointer == NULL))
852 return -EINVAL; 852 return -EINVAL;
853 argument++; 853 argument++;
854 } 854 }
855 } 855 }
856 856
857 if (info->output_count > 0) { 857 if (info->output_count > 0) {
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_object.h b/drivers/gpu/drm/amd/amdgpu/amdgpu_object.h
index ea756e77b023..5107fb291bdb 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_object.h
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_object.h
@@ -96,6 +96,7 @@ static inline void amdgpu_bo_unreserve(struct amdgpu_bo *bo)
96 */ 96 */
97static inline u64 amdgpu_bo_gpu_offset(struct amdgpu_bo *bo) 97static inline u64 amdgpu_bo_gpu_offset(struct amdgpu_bo *bo)
98{ 98{
99 WARN_ON_ONCE(bo->tbo.mem.mem_type == TTM_PL_SYSTEM);
99 return bo->tbo.offset; 100 return bo->tbo.offset;
100} 101}
101 102
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_pm.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_pm.c
index 3b78982abaf1..4386cbac7f97 100644
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_pm.c
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_pm.c
@@ -807,7 +807,7 @@ void amdgpu_pm_compute_clocks(struct amdgpu_device *adev)
807 struct amdgpu_ring *ring = adev->rings[i]; 807 struct amdgpu_ring *ring = adev->rings[i];
808 if (ring && ring->ready) 808 if (ring && ring->ready)
809 amdgpu_fence_wait_empty(ring); 809 amdgpu_fence_wait_empty(ring);
810 } 810 }
811 mutex_unlock(&adev->ring_lock); 811 mutex_unlock(&adev->ring_lock);
812 812
813 amdgpu_dpm_dispatch_task(adev, AMD_PP_EVENT_DISPLAY_CONFIG_CHANGE, NULL, NULL); 813 amdgpu_dpm_dispatch_task(adev, AMD_PP_EVENT_DISPLAY_CONFIG_CHANGE, NULL, NULL);
diff --git a/drivers/gpu/drm/amd/amdgpu/ci_dpm.c b/drivers/gpu/drm/amd/amdgpu/ci_dpm.c
index 57a2e347f04d..8b4731d4e10e 100644
--- a/drivers/gpu/drm/amd/amdgpu/ci_dpm.c
+++ b/drivers/gpu/drm/amd/amdgpu/ci_dpm.c
@@ -1395,7 +1395,6 @@ static void ci_thermal_stop_thermal_controller(struct amdgpu_device *adev)
1395 ci_fan_ctrl_set_default_mode(adev); 1395 ci_fan_ctrl_set_default_mode(adev);
1396} 1396}
1397 1397
1398#if 0
1399static int ci_read_smc_soft_register(struct amdgpu_device *adev, 1398static int ci_read_smc_soft_register(struct amdgpu_device *adev,
1400 u16 reg_offset, u32 *value) 1399 u16 reg_offset, u32 *value)
1401{ 1400{
@@ -1405,7 +1404,6 @@ static int ci_read_smc_soft_register(struct amdgpu_device *adev,
1405 pi->soft_regs_start + reg_offset, 1404 pi->soft_regs_start + reg_offset,
1406 value, pi->sram_end); 1405 value, pi->sram_end);
1407} 1406}
1408#endif
1409 1407
1410static int ci_write_smc_soft_register(struct amdgpu_device *adev, 1408static int ci_write_smc_soft_register(struct amdgpu_device *adev,
1411 u16 reg_offset, u32 value) 1409 u16 reg_offset, u32 value)
@@ -6084,11 +6082,23 @@ ci_dpm_debugfs_print_current_performance_level(struct amdgpu_device *adev,
6084 struct amdgpu_ps *rps = &pi->current_rps; 6082 struct amdgpu_ps *rps = &pi->current_rps;
6085 u32 sclk = ci_get_average_sclk_freq(adev); 6083 u32 sclk = ci_get_average_sclk_freq(adev);
6086 u32 mclk = ci_get_average_mclk_freq(adev); 6084 u32 mclk = ci_get_average_mclk_freq(adev);
6085 u32 activity_percent = 50;
6086 int ret;
6087
6088 ret = ci_read_smc_soft_register(adev, offsetof(SMU7_SoftRegisters, AverageGraphicsA),
6089 &activity_percent);
6090
6091 if (ret == 0) {
6092 activity_percent += 0x80;
6093 activity_percent >>= 8;
6094 activity_percent = activity_percent > 100 ? 100 : activity_percent;
6095 }
6087 6096
6088 seq_printf(m, "uvd %sabled\n", pi->uvd_enabled ? "en" : "dis"); 6097 seq_printf(m, "uvd %sabled\n", pi->uvd_enabled ? "en" : "dis");
6089 seq_printf(m, "vce %sabled\n", rps->vce_active ? "en" : "dis"); 6098 seq_printf(m, "vce %sabled\n", rps->vce_active ? "en" : "dis");
6090 seq_printf(m, "power level avg sclk: %u mclk: %u\n", 6099 seq_printf(m, "power level avg sclk: %u mclk: %u\n",
6091 sclk, mclk); 6100 sclk, mclk);
6101 seq_printf(m, "GPU load: %u %%\n", activity_percent);
6092} 6102}
6093 6103
6094static void ci_dpm_print_power_state(struct amdgpu_device *adev, 6104static void ci_dpm_print_power_state(struct amdgpu_device *adev,
diff --git a/drivers/gpu/drm/amd/amdgpu/dce_v11_0.c b/drivers/gpu/drm/amd/amdgpu/dce_v11_0.c
index 8701661a8868..8e67249d4367 100644
--- a/drivers/gpu/drm/amd/amdgpu/dce_v11_0.c
+++ b/drivers/gpu/drm/amd/amdgpu/dce_v11_0.c
@@ -211,9 +211,9 @@ static bool dce_v11_0_is_counter_moving(struct amdgpu_device *adev, int crtc)
211 */ 211 */
212static void dce_v11_0_vblank_wait(struct amdgpu_device *adev, int crtc) 212static void dce_v11_0_vblank_wait(struct amdgpu_device *adev, int crtc)
213{ 213{
214 unsigned i = 0; 214 unsigned i = 100;
215 215
216 if (crtc >= adev->mode_info.num_crtc) 216 if (crtc < 0 || crtc >= adev->mode_info.num_crtc)
217 return; 217 return;
218 218
219 if (!(RREG32(mmCRTC_CONTROL + crtc_offsets[crtc]) & CRTC_CONTROL__CRTC_MASTER_EN_MASK)) 219 if (!(RREG32(mmCRTC_CONTROL + crtc_offsets[crtc]) & CRTC_CONTROL__CRTC_MASTER_EN_MASK))
@@ -223,14 +223,16 @@ static void dce_v11_0_vblank_wait(struct amdgpu_device *adev, int crtc)
223 * wait for another frame. 223 * wait for another frame.
224 */ 224 */
225 while (dce_v11_0_is_in_vblank(adev, crtc)) { 225 while (dce_v11_0_is_in_vblank(adev, crtc)) {
226 if (i++ % 100 == 0) { 226 if (i++ == 100) {
227 i = 0;
227 if (!dce_v11_0_is_counter_moving(adev, crtc)) 228 if (!dce_v11_0_is_counter_moving(adev, crtc))
228 break; 229 break;
229 } 230 }
230 } 231 }
231 232
232 while (!dce_v11_0_is_in_vblank(adev, crtc)) { 233 while (!dce_v11_0_is_in_vblank(adev, crtc)) {
233 if (i++ % 100 == 0) { 234 if (i++ == 100) {
235 i = 0;
234 if (!dce_v11_0_is_counter_moving(adev, crtc)) 236 if (!dce_v11_0_is_counter_moving(adev, crtc))
235 break; 237 break;
236 } 238 }
@@ -239,7 +241,7 @@ static void dce_v11_0_vblank_wait(struct amdgpu_device *adev, int crtc)
239 241
240static u32 dce_v11_0_vblank_get_counter(struct amdgpu_device *adev, int crtc) 242static u32 dce_v11_0_vblank_get_counter(struct amdgpu_device *adev, int crtc)
241{ 243{
242 if (crtc >= adev->mode_info.num_crtc) 244 if (crtc < 0 || crtc >= adev->mode_info.num_crtc)
243 return 0; 245 return 0;
244 else 246 else
245 return RREG32(mmCRTC_STATUS_FRAME_COUNT + crtc_offsets[crtc]); 247 return RREG32(mmCRTC_STATUS_FRAME_COUNT + crtc_offsets[crtc]);
@@ -3384,7 +3386,7 @@ static void dce_v11_0_crtc_vblank_int_ack(struct amdgpu_device *adev,
3384{ 3386{
3385 u32 tmp; 3387 u32 tmp;
3386 3388
3387 if (crtc >= adev->mode_info.num_crtc) { 3389 if (crtc < 0 || crtc >= adev->mode_info.num_crtc) {
3388 DRM_DEBUG("invalid crtc %d\n", crtc); 3390 DRM_DEBUG("invalid crtc %d\n", crtc);
3389 return; 3391 return;
3390 } 3392 }
@@ -3399,7 +3401,7 @@ static void dce_v11_0_crtc_vline_int_ack(struct amdgpu_device *adev,
3399{ 3401{
3400 u32 tmp; 3402 u32 tmp;
3401 3403
3402 if (crtc >= adev->mode_info.num_crtc) { 3404 if (crtc < 0 || crtc >= adev->mode_info.num_crtc) {
3403 DRM_DEBUG("invalid crtc %d\n", crtc); 3405 DRM_DEBUG("invalid crtc %d\n", crtc);
3404 return; 3406 return;
3405 } 3407 }
diff --git a/drivers/gpu/drm/amd/amdgpu/gmc_v7_0.c b/drivers/gpu/drm/amd/amdgpu/gmc_v7_0.c
index dababe40a685..3f956065d069 100644
--- a/drivers/gpu/drm/amd/amdgpu/gmc_v7_0.c
+++ b/drivers/gpu/drm/amd/amdgpu/gmc_v7_0.c
@@ -1016,7 +1016,6 @@ static int gmc_v7_0_suspend(void *handle)
1016 struct amdgpu_device *adev = (struct amdgpu_device *)handle; 1016 struct amdgpu_device *adev = (struct amdgpu_device *)handle;
1017 1017
1018 if (adev->vm_manager.enabled) { 1018 if (adev->vm_manager.enabled) {
1019 amdgpu_vm_manager_fini(adev);
1020 gmc_v7_0_vm_fini(adev); 1019 gmc_v7_0_vm_fini(adev);
1021 adev->vm_manager.enabled = false; 1020 adev->vm_manager.enabled = false;
1022 } 1021 }
diff --git a/drivers/gpu/drm/amd/amdgpu/gmc_v8_0.c b/drivers/gpu/drm/amd/amdgpu/gmc_v8_0.c
index adc25f87fc18..c0c9a0101eb4 100644
--- a/drivers/gpu/drm/amd/amdgpu/gmc_v8_0.c
+++ b/drivers/gpu/drm/amd/amdgpu/gmc_v8_0.c
@@ -1037,7 +1037,6 @@ static int gmc_v8_0_suspend(void *handle)
1037 struct amdgpu_device *adev = (struct amdgpu_device *)handle; 1037 struct amdgpu_device *adev = (struct amdgpu_device *)handle;
1038 1038
1039 if (adev->vm_manager.enabled) { 1039 if (adev->vm_manager.enabled) {
1040 amdgpu_vm_manager_fini(adev);
1041 gmc_v8_0_vm_fini(adev); 1040 gmc_v8_0_vm_fini(adev);
1042 adev->vm_manager.enabled = false; 1041 adev->vm_manager.enabled = false;
1043 } 1042 }
diff --git a/drivers/gpu/drm/amd/amdgpu/vce_v3_0.c b/drivers/gpu/drm/amd/amdgpu/vce_v3_0.c
index 35f48ad7644d..e99af81e4aec 100644
--- a/drivers/gpu/drm/amd/amdgpu/vce_v3_0.c
+++ b/drivers/gpu/drm/amd/amdgpu/vce_v3_0.c
@@ -314,14 +314,11 @@ static int vce_v3_0_start(struct amdgpu_device *adev)
314static unsigned vce_v3_0_get_harvest_config(struct amdgpu_device *adev) 314static unsigned vce_v3_0_get_harvest_config(struct amdgpu_device *adev)
315{ 315{
316 u32 tmp; 316 u32 tmp;
317 unsigned ret;
318 317
319 /* Fiji, Stoney are single pipe */ 318 /* Fiji, Stoney are single pipe */
320 if ((adev->asic_type == CHIP_FIJI) || 319 if ((adev->asic_type == CHIP_FIJI) ||
321 (adev->asic_type == CHIP_STONEY)){ 320 (adev->asic_type == CHIP_STONEY))
322 ret = AMDGPU_VCE_HARVEST_VCE1; 321 return AMDGPU_VCE_HARVEST_VCE1;
323 return ret;
324 }
325 322
326 /* Tonga and CZ are dual or single pipe */ 323 /* Tonga and CZ are dual or single pipe */
327 if (adev->flags & AMD_IS_APU) 324 if (adev->flags & AMD_IS_APU)
@@ -335,19 +332,14 @@ static unsigned vce_v3_0_get_harvest_config(struct amdgpu_device *adev)
335 332
336 switch (tmp) { 333 switch (tmp) {
337 case 1: 334 case 1:
338 ret = AMDGPU_VCE_HARVEST_VCE0; 335 return AMDGPU_VCE_HARVEST_VCE0;
339 break;
340 case 2: 336 case 2:
341 ret = AMDGPU_VCE_HARVEST_VCE1; 337 return AMDGPU_VCE_HARVEST_VCE1;
342 break;
343 case 3: 338 case 3:
344 ret = AMDGPU_VCE_HARVEST_VCE0 | AMDGPU_VCE_HARVEST_VCE1; 339 return AMDGPU_VCE_HARVEST_VCE0 | AMDGPU_VCE_HARVEST_VCE1;
345 break;
346 default: 340 default:
347 ret = 0; 341 return 0;
348 } 342 }
349
350 return ret;
351} 343}
352 344
353static int vce_v3_0_early_init(void *handle) 345static int vce_v3_0_early_init(void *handle)
@@ -422,28 +414,22 @@ static int vce_v3_0_sw_fini(void *handle)
422 414
423static int vce_v3_0_hw_init(void *handle) 415static int vce_v3_0_hw_init(void *handle)
424{ 416{
425 struct amdgpu_ring *ring; 417 int r, i;
426 int r;
427 struct amdgpu_device *adev = (struct amdgpu_device *)handle; 418 struct amdgpu_device *adev = (struct amdgpu_device *)handle;
428 419
429 r = vce_v3_0_start(adev); 420 r = vce_v3_0_start(adev);
430 if (r) 421 if (r)
431 return r; 422 return r;
432 423
433 ring = &adev->vce.ring[0]; 424 adev->vce.ring[0].ready = false;
434 ring->ready = true; 425 adev->vce.ring[1].ready = false;
435 r = amdgpu_ring_test_ring(ring);
436 if (r) {
437 ring->ready = false;
438 return r;
439 }
440 426
441 ring = &adev->vce.ring[1]; 427 for (i = 0; i < 2; i++) {
442 ring->ready = true; 428 r = amdgpu_ring_test_ring(&adev->vce.ring[i]);
443 r = amdgpu_ring_test_ring(ring); 429 if (r)
444 if (r) { 430 return r;
445 ring->ready = false; 431 else
446 return r; 432 adev->vce.ring[i].ready = true;
447 } 433 }
448 434
449 DRM_INFO("VCE initialized successfully.\n"); 435 DRM_INFO("VCE initialized successfully.\n");
@@ -543,17 +529,9 @@ static bool vce_v3_0_is_idle(void *handle)
543{ 529{
544 struct amdgpu_device *adev = (struct amdgpu_device *)handle; 530 struct amdgpu_device *adev = (struct amdgpu_device *)handle;
545 u32 mask = 0; 531 u32 mask = 0;
546 int idx;
547 532
548 for (idx = 0; idx < 2; ++idx) { 533 mask |= (adev->vce.harvest_config & AMDGPU_VCE_HARVEST_VCE0) ? 0 : SRBM_STATUS2__VCE0_BUSY_MASK;
549 if (adev->vce.harvest_config & (1 << idx)) 534 mask |= (adev->vce.harvest_config & AMDGPU_VCE_HARVEST_VCE1) ? 0 : SRBM_STATUS2__VCE1_BUSY_MASK;
550 continue;
551
552 if (idx == 0)
553 mask |= SRBM_STATUS2__VCE0_BUSY_MASK;
554 else
555 mask |= SRBM_STATUS2__VCE1_BUSY_MASK;
556 }
557 535
558 return !(RREG32(mmSRBM_STATUS2) & mask); 536 return !(RREG32(mmSRBM_STATUS2) & mask);
559} 537}
@@ -562,23 +540,11 @@ static int vce_v3_0_wait_for_idle(void *handle)
562{ 540{
563 unsigned i; 541 unsigned i;
564 struct amdgpu_device *adev = (struct amdgpu_device *)handle; 542 struct amdgpu_device *adev = (struct amdgpu_device *)handle;
565 u32 mask = 0;
566 int idx;
567
568 for (idx = 0; idx < 2; ++idx) {
569 if (adev->vce.harvest_config & (1 << idx))
570 continue;
571
572 if (idx == 0)
573 mask |= SRBM_STATUS2__VCE0_BUSY_MASK;
574 else
575 mask |= SRBM_STATUS2__VCE1_BUSY_MASK;
576 }
577 543
578 for (i = 0; i < adev->usec_timeout; i++) { 544 for (i = 0; i < adev->usec_timeout; i++)
579 if (!(RREG32(mmSRBM_STATUS2) & mask)) 545 if (vce_v3_0_is_idle(handle))
580 return 0; 546 return 0;
581 } 547
582 return -ETIMEDOUT; 548 return -ETIMEDOUT;
583} 549}
584 550
@@ -586,17 +552,10 @@ static int vce_v3_0_soft_reset(void *handle)
586{ 552{
587 struct amdgpu_device *adev = (struct amdgpu_device *)handle; 553 struct amdgpu_device *adev = (struct amdgpu_device *)handle;
588 u32 mask = 0; 554 u32 mask = 0;
589 int idx;
590 555
591 for (idx = 0; idx < 2; ++idx) { 556 mask |= (adev->vce.harvest_config & AMDGPU_VCE_HARVEST_VCE0) ? 0 : SRBM_SOFT_RESET__SOFT_RESET_VCE0_MASK;
592 if (adev->vce.harvest_config & (1 << idx)) 557 mask |= (adev->vce.harvest_config & AMDGPU_VCE_HARVEST_VCE1) ? 0 : SRBM_SOFT_RESET__SOFT_RESET_VCE1_MASK;
593 continue;
594 558
595 if (idx == 0)
596 mask |= SRBM_SOFT_RESET__SOFT_RESET_VCE0_MASK;
597 else
598 mask |= SRBM_SOFT_RESET__SOFT_RESET_VCE1_MASK;
599 }
600 WREG32_P(mmSRBM_SOFT_RESET, mask, 559 WREG32_P(mmSRBM_SOFT_RESET, mask,
601 ~(SRBM_SOFT_RESET__SOFT_RESET_VCE0_MASK | 560 ~(SRBM_SOFT_RESET__SOFT_RESET_VCE0_MASK |
602 SRBM_SOFT_RESET__SOFT_RESET_VCE1_MASK)); 561 SRBM_SOFT_RESET__SOFT_RESET_VCE1_MASK));
@@ -698,10 +657,8 @@ static int vce_v3_0_process_interrupt(struct amdgpu_device *adev,
698 657
699 switch (entry->src_data) { 658 switch (entry->src_data) {
700 case 0: 659 case 0:
701 amdgpu_fence_process(&adev->vce.ring[0]);
702 break;
703 case 1: 660 case 1:
704 amdgpu_fence_process(&adev->vce.ring[1]); 661 amdgpu_fence_process(&adev->vce.ring[entry->src_data]);
705 break; 662 break;
706 default: 663 default:
707 DRM_ERROR("Unhandled interrupt: %d %d\n", 664 DRM_ERROR("Unhandled interrupt: %d %d\n",