]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
drm/amd/display: Shift DMUB AUX reply command if necessary
authorWayne Lin <Wayne.Lin@amd.com>
Fri, 18 Apr 2025 08:31:59 +0000 (16:31 +0800)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Sun, 18 May 2025 06:24:06 +0000 (08:24 +0200)
commit 5a3846648c0523fd850b7f0aec78c0139453ab8b upstream.

[Why]
Defined value of dmub AUX reply command field get updated but didn't
adjust dm receiving side accordingly.

[How]
Check the received reply command value to see if it's updated version
or not. Adjust it if necessary.

Fixes: ead08b95fa50 ("drm/amd/display: Fix race condition in DPIA AUX transfer")
Cc: Mario Limonciello <mario.limonciello@amd.com>
Cc: Alex Deucher <alexander.deucher@amd.com>
Reviewed-by: Ray Wu <ray.wu@amd.com>
Signed-off-by: Wayne Lin <Wayne.Lin@amd.com>
Signed-off-by: Ray Wu <ray.wu@amd.com>
Tested-by: Daniel Wheeler <daniel.wheeler@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
(cherry picked from commit d5c9ade755a9afa210840708a12a8f44c0d532f4)
Cc: stable@vger.kernel.org
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c

index e6bc590533194de64e6d18a902ef954d6198425a..4c731b6c020c15ee31e12e4b176618b79157e3e8 100644 (file)
@@ -11058,8 +11058,11 @@ int amdgpu_dm_process_dmub_aux_transfer_sync(
                goto out;
        }
 
+       payload->reply[0] = adev->dm.dmub_notify->aux_reply.command & 0xF;
+       if (adev->dm.dmub_notify->aux_reply.command & 0xF0)
+               /* The reply is stored in the top nibble of the command. */
+               payload->reply[0] = (adev->dm.dmub_notify->aux_reply.command >> 4) & 0xF;
 
-       payload->reply[0] = adev->dm.dmub_notify->aux_reply.command;
        if (!payload->write && p_notify->aux_reply.length &&
                        (payload->reply[0] == AUX_TRANSACTION_REPLY_AUX_ACK)) {