diff options
-rw-r--r-- | queue-6.12/drm-amdgpu-read-back-register-after-written-for-vcn-v4.0.5.patch | 56 | ||||
-rw-r--r-- | queue-6.12/series | 1 |
2 files changed, 57 insertions, 0 deletions
diff --git a/queue-6.12/drm-amdgpu-read-back-register-after-written-for-vcn-v4.0.5.patch b/queue-6.12/drm-amdgpu-read-back-register-after-written-for-vcn-v4.0.5.patch new file mode 100644 index 00000000000..595755ef313 --- /dev/null +++ b/queue-6.12/drm-amdgpu-read-back-register-after-written-for-vcn-v4.0.5.patch @@ -0,0 +1,56 @@ +From ee7360fc27d6045510f8fe459b5649b2af27811a Mon Sep 17 00:00:00 2001 +From: "David (Ming Qiang) Wu" <David.Wu3@amd.com> +Date: Mon, 12 May 2025 15:14:43 -0400 +Subject: drm/amdgpu: read back register after written for VCN v4.0.5 + +From: David (Ming Qiang) Wu <David.Wu3@amd.com> + +commit ee7360fc27d6045510f8fe459b5649b2af27811a upstream. + +On VCN v4.0.5 there is a race condition where the WPTR is not +updated after starting from idle when doorbell is used. Adding +register read-back after written at function end is to ensure +all register writes are done before they can be used. + +Closes: https://gitlab.freedesktop.org/mesa/mesa/-/issues/12528 +Signed-off-by: David (Ming Qiang) Wu <David.Wu3@amd.com> +Reviewed-by: Mario Limonciello <mario.limonciello@amd.com> +Tested-by: Mario Limonciello <mario.limonciello@amd.com> +Reviewed-by: Alex Deucher <alexander.deucher@amd.com> +Reviewed-by: Ruijing Dong <ruijing.dong@amd.com> +Signed-off-by: Alex Deucher <alexander.deucher@amd.com> +(cherry picked from commit 07c9db090b86e5211188e1b351303fbc673378cf) +Cc: stable@vger.kernel.org +(cherry picked from commit ee7360fc27d6045510f8fe459b5649b2af27811a) +Hand modified for contextual changes where there is a for loop +in 6.12 that was dropped later on. +Signed-off-by: Mario Limonciello <mario.limonciello@amd.com> +Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> +--- + drivers/gpu/drm/amd/amdgpu/vcn_v4_0_5.c | 8 ++++++++ + 1 file changed, 8 insertions(+) + +--- a/drivers/gpu/drm/amd/amdgpu/vcn_v4_0_5.c ++++ b/drivers/gpu/drm/amd/amdgpu/vcn_v4_0_5.c +@@ -985,6 +985,10 @@ static int vcn_v4_0_5_start_dpg_mode(str + ring->doorbell_index << VCN_RB1_DB_CTRL__OFFSET__SHIFT | + VCN_RB1_DB_CTRL__EN_MASK); + ++ /* Keeping one read-back to ensure all register writes are done, otherwise ++ * it may introduce race conditions */ ++ RREG32_SOC15(VCN, inst_idx, regVCN_RB1_DB_CTRL); ++ + return 0; + } + +@@ -1167,6 +1171,10 @@ static int vcn_v4_0_5_start(struct amdgp + tmp |= VCN_RB_ENABLE__RB1_EN_MASK; + WREG32_SOC15(VCN, i, regVCN_RB_ENABLE, tmp); + fw_shared->sq.queue_mode &= ~(FW_QUEUE_RING_RESET | FW_QUEUE_DPG_HOLD_OFF); ++ ++ /* Keeping one read-back to ensure all register writes are done, otherwise ++ * it may introduce race conditions */ ++ RREG32_SOC15(VCN, i, regVCN_RB_ENABLE); + } + + return 0; diff --git a/queue-6.12/series b/queue-6.12/series index 3495db89234..23183914f61 100644 --- a/queue-6.12/series +++ b/queue-6.12/series @@ -336,3 +336,4 @@ alsa-hda-realtek-fix-built-in-mic-on-asus-vivobook-x513ea.patch alsa-hda-realtek-add-quirk-for-asus-gu605c.patch iio-accel-fxls8962af-fix-temperature-calculation.patch mm-hugetlb-unshare-page-tables-during-vma-split-not-before.patch +drm-amdgpu-read-back-register-after-written-for-vcn-v4.0.5.patch |