drm/amd/display: Fix access timeout to DPIA AUX at boot time
authorStylon Wang <stylon.wang@amd.com>
Mon, 24 Oct 2022 07:36:16 +0000 (15:36 +0800)
committerAlex Deucher <alexander.deucher@amd.com>
Tue, 15 Nov 2022 16:51:49 +0000 (11:51 -0500)
[Why]
Since introduction of patch "Query DPIA HPD status.", link detection at
boot could be accessing DPIA AUX, which will not succeed until
DMUB outbox messaging is enabled and results in below dmesg logs:

[  160.840227] [drm:amdgpu_dm_process_dmub_aux_transfer_sync [amdgpu]] *ERROR* wait_for_completion_timeout timeout!

[How]
Enable DMUB outbox messaging before link detection at boot time.

Reviewed-by: Wayne Lin <Wayne.Lin@amd.com>
Acked-by: Tom Chung <chiahsuan.chung@amd.com>
Signed-off-by: Stylon Wang <stylon.wang@amd.com>
Tested-by: Daniel Wheeler <daniel.wheeler@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
Cc: stable@vger.kernel.org # 6.0.x
drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c

index 123c235..2dc75b1 100644 (file)
@@ -1636,12 +1636,6 @@ static int amdgpu_dm_init(struct amdgpu_device *adev)
                }
        }
 
-       if (amdgpu_dm_initialize_drm_device(adev)) {
-               DRM_ERROR(
-               "amdgpu: failed to initialize sw for display support.\n");
-               goto error;
-       }
-
        /* Enable outbox notification only after IRQ handlers are registered and DMUB is alive.
         * It is expected that DMUB will resend any pending notifications at this point, for
         * example HPD from DPIA.
@@ -1649,6 +1643,12 @@ static int amdgpu_dm_init(struct amdgpu_device *adev)
        if (dc_is_dmub_outbox_supported(adev->dm.dc))
                dc_enable_dmub_outbox(adev->dm.dc);
 
+       if (amdgpu_dm_initialize_drm_device(adev)) {
+               DRM_ERROR(
+               "amdgpu: failed to initialize sw for display support.\n");
+               goto error;
+       }
+
        /* create fake encoders for MST */
        dm_dp_create_fake_mst_encoders(adev);