diff options
author | Christian König <christian.koenig@amd.com> | 2018-09-26 10:15:44 -0400 |
---|---|---|
committer | Alex Deucher <alexander.deucher@amd.com> | 2018-10-09 18:07:05 -0400 |
commit | 4eb10b5be799c45e71f9e01e01fc88e84062426c (patch) | |
tree | 3ae5e4c06f6d3c8d026e15daed923bf53264286c /drivers/gpu/drm/amd/amdgpu/si_dma.c | |
parent | 2ccecaf661e0b686a99ad0990e5ce14447942718 (diff) |
drm/amdgpu: fix incorrect use of amdgpu_irq_add_id in si_dma.c
Adding a second irq source because of a different src_id is actually a
bug.
Signed-off-by: Christian König <christian.koenig@amd.com>
Reviewed-by: Huang Rui <ray.huang@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
Diffstat (limited to 'drivers/gpu/drm/amd/amdgpu/si_dma.c')
-rw-r--r-- | drivers/gpu/drm/amd/amdgpu/si_dma.c | 27 |
1 files changed, 8 insertions, 19 deletions
diff --git a/drivers/gpu/drm/amd/amdgpu/si_dma.c b/drivers/gpu/drm/amd/amdgpu/si_dma.c index d4ceaf440f26..adbaea6da0d7 100644 --- a/drivers/gpu/drm/amd/amdgpu/si_dma.c +++ b/drivers/gpu/drm/amd/amdgpu/si_dma.c | |||
@@ -502,12 +502,14 @@ static int si_dma_sw_init(void *handle) | |||
502 | struct amdgpu_device *adev = (struct amdgpu_device *)handle; | 502 | struct amdgpu_device *adev = (struct amdgpu_device *)handle; |
503 | 503 | ||
504 | /* DMA0 trap event */ | 504 | /* DMA0 trap event */ |
505 | r = amdgpu_irq_add_id(adev, AMDGPU_IRQ_CLIENTID_LEGACY, 224, &adev->sdma.trap_irq); | 505 | r = amdgpu_irq_add_id(adev, AMDGPU_IRQ_CLIENTID_LEGACY, 224, |
506 | &adev->sdma.trap_irq); | ||
506 | if (r) | 507 | if (r) |
507 | return r; | 508 | return r; |
508 | 509 | ||
509 | /* DMA1 trap event */ | 510 | /* DMA1 trap event */ |
510 | r = amdgpu_irq_add_id(adev, AMDGPU_IRQ_CLIENTID_LEGACY, 244, &adev->sdma.trap_irq_1); | 511 | r = amdgpu_irq_add_id(adev, AMDGPU_IRQ_CLIENTID_LEGACY, 244, |
512 | &adev->sdma.trap_irq); | ||
511 | if (r) | 513 | if (r) |
512 | return r; | 514 | return r; |
513 | 515 | ||
@@ -649,17 +651,10 @@ static int si_dma_process_trap_irq(struct amdgpu_device *adev, | |||
649 | struct amdgpu_irq_src *source, | 651 | struct amdgpu_irq_src *source, |
650 | struct amdgpu_iv_entry *entry) | 652 | struct amdgpu_iv_entry *entry) |
651 | { | 653 | { |
652 | amdgpu_fence_process(&adev->sdma.instance[0].ring); | 654 | if (entry->src_id == 224) |
653 | 655 | amdgpu_fence_process(&adev->sdma.instance[0].ring); | |
654 | return 0; | 656 | else |
655 | } | 657 | amdgpu_fence_process(&adev->sdma.instance[1].ring); |
656 | |||
657 | static int si_dma_process_trap_irq_1(struct amdgpu_device *adev, | ||
658 | struct amdgpu_irq_src *source, | ||
659 | struct amdgpu_iv_entry *entry) | ||
660 | { | ||
661 | amdgpu_fence_process(&adev->sdma.instance[1].ring); | ||
662 | |||
663 | return 0; | 658 | return 0; |
664 | } | 659 | } |
665 | 660 | ||
@@ -786,11 +781,6 @@ static const struct amdgpu_irq_src_funcs si_dma_trap_irq_funcs = { | |||
786 | .process = si_dma_process_trap_irq, | 781 | .process = si_dma_process_trap_irq, |
787 | }; | 782 | }; |
788 | 783 | ||
789 | static const struct amdgpu_irq_src_funcs si_dma_trap_irq_funcs_1 = { | ||
790 | .set = si_dma_set_trap_irq_state, | ||
791 | .process = si_dma_process_trap_irq_1, | ||
792 | }; | ||
793 | |||
794 | static const struct amdgpu_irq_src_funcs si_dma_illegal_inst_irq_funcs = { | 784 | static const struct amdgpu_irq_src_funcs si_dma_illegal_inst_irq_funcs = { |
795 | .process = si_dma_process_illegal_inst_irq, | 785 | .process = si_dma_process_illegal_inst_irq, |
796 | }; | 786 | }; |
@@ -799,7 +789,6 @@ static void si_dma_set_irq_funcs(struct amdgpu_device *adev) | |||
799 | { | 789 | { |
800 | adev->sdma.trap_irq.num_types = AMDGPU_SDMA_IRQ_LAST; | 790 | adev->sdma.trap_irq.num_types = AMDGPU_SDMA_IRQ_LAST; |
801 | adev->sdma.trap_irq.funcs = &si_dma_trap_irq_funcs; | 791 | adev->sdma.trap_irq.funcs = &si_dma_trap_irq_funcs; |
802 | adev->sdma.trap_irq_1.funcs = &si_dma_trap_irq_funcs_1; | ||
803 | adev->sdma.illegal_inst_irq.funcs = &si_dma_illegal_inst_irq_funcs; | 792 | adev->sdma.illegal_inst_irq.funcs = &si_dma_illegal_inst_irq_funcs; |
804 | } | 793 | } |
805 | 794 | ||