]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
drm/amdgpu: Fix vcn v5.0.1 poison irq call trace
authorStanley.Yang <Stanley.Yang@amd.com>
Mon, 28 Jul 2025 11:33:50 +0000 (19:33 +0800)
committerAlex Deucher <alexander.deucher@amd.com>
Mon, 4 Aug 2025 18:36:00 +0000 (14:36 -0400)
Why:
    [13014.890792] Call Trace:
    [13014.890793]  <TASK>
    [13014.890795]  ? show_trace_log_lvl+0x1d6/0x2ea
    [13014.890799]  ? show_trace_log_lvl+0x1d6/0x2ea
    [13014.890800]  ? vcn_v5_0_1_hw_fini+0xe9/0x110 [amdgpu]
    [13014.890872]  ? show_regs.part.0+0x23/0x29
    [13014.890873]  ? show_regs.cold+0x8/0xd
    [13014.890874]  ? amdgpu_irq_put+0xc6/0xe0 [amdgpu]
    [13014.890934]  ? __warn+0x8c/0x100
    [13014.890936]  ? amdgpu_irq_put+0xc6/0xe0 [amdgpu]
    [13014.890995]  ? report_bug+0xa4/0xd0
    [13014.890999]  ? handle_bug+0x39/0x90
    [13014.891001]  ? exc_invalid_op+0x19/0x70
    [13014.891003]  ? asm_exc_invalid_op+0x1b/0x20
    [13014.891005]  ? amdgpu_irq_put+0xc6/0xe0 [amdgpu]
    [13014.891065]  ? amdgpu_irq_put+0x63/0xe0 [amdgpu]
    [13014.891124]  vcn_v5_0_1_hw_fini+0xe9/0x110 [amdgpu]
    [13014.891189]  amdgpu_ip_block_hw_fini+0x3b/0x78 [amdgpu]
    [13014.891309]  amdgpu_device_fini_hw+0x3c1/0x479 [amdgpu]
How:
    Add omitted vcn poison irq get call.

Signed-off-by: Stanley.Yang <Stanley.Yang@amd.com>
Reviewed-by: Hawking Zhang <Hawking.Zhang@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
drivers/gpu/drm/amd/amdgpu/jpeg_v5_0_1.c
drivers/gpu/drm/amd/amdgpu/vcn_v5_0_1.c

index 54523dc1f7026f6ef87863284033dc013d548a68..03ec4b741d194caac9b57a82e73c1ffae56ee9d9 100644 (file)
@@ -1058,6 +1058,11 @@ static int jpeg_v5_0_1_ras_late_init(struct amdgpu_device *adev, struct ras_comm
        if (r)
                return r;
 
+       r = amdgpu_ras_bind_aca(adev, AMDGPU_RAS_BLOCK__JPEG,
+                               &jpeg_v5_0_1_aca_info, NULL);
+       if (r)
+               goto late_fini;
+
        if (amdgpu_ras_is_supported(adev, ras_block->block) &&
                adev->jpeg.inst->ras_poison_irq.funcs) {
                r = amdgpu_irq_get(adev, &adev->jpeg.inst->ras_poison_irq, 0);
@@ -1065,11 +1070,6 @@ static int jpeg_v5_0_1_ras_late_init(struct amdgpu_device *adev, struct ras_comm
                        goto late_fini;
        }
 
-       r = amdgpu_ras_bind_aca(adev, AMDGPU_RAS_BLOCK__JPEG,
-                               &jpeg_v5_0_1_aca_info, NULL);
-       if (r)
-               goto late_fini;
-
        return 0;
 
 late_fini:
index d8bbb937673180c74b047f9a56388516687b8afc..cb560d64da08c0202ad7373356b14d7f708fb8bb 100644 (file)
@@ -1608,6 +1608,13 @@ static int vcn_v5_0_1_ras_late_init(struct amdgpu_device *adev, struct ras_commo
        if (r)
                goto late_fini;
 
+       if (amdgpu_ras_is_supported(adev, ras_block->block) &&
+               adev->vcn.inst->ras_poison_irq.funcs) {
+               r = amdgpu_irq_get(adev, &adev->vcn.inst->ras_poison_irq, 0);
+               if (r)
+                       goto late_fini;
+       }
+
        return 0;
 
 late_fini: