Reviewed-by: Aurabindo Pillai <aurabindo.pil...@amd.com>

On 6/26/24 2:31 PM, Marek Olšák wrote:
Checking SWIZZLE_MODE has undefined behavior on gfx12.

Signed-off-by: Marek Olšák <marek.ol...@amd.com>
---
  drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c | 8 +++++---
  1 file changed, 5 insertions(+), 3 deletions(-)

diff --git a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c 
b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c
index 8f99ba6aa6a7..c3347e8bee54 100644
--- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c
+++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c
@@ -10666,12 +10666,14 @@ static int dm_check_cursor_fb(struct amdgpu_crtc 
*new_acrtc,
         * check tiling flags when the FB doesn't have a modifier.
         */
        if (!(fb->flags & DRM_MODE_FB_MODIFIERS)) {
-               if (adev->family < AMDGPU_FAMILY_AI) {
+               if (adev->family >= AMDGPU_FAMILY_GC_12_0_0) {
+                       linear = AMDGPU_TILING_GET(afb->tiling_flags, 
GFX12_SWIZZLE_MODE) == 0;
+               } else if (adev->family >= AMDGPU_FAMILY_AI) {
+                       linear = AMDGPU_TILING_GET(afb->tiling_flags, 
SWIZZLE_MODE) == 0;
+               } else {
                        linear = AMDGPU_TILING_GET(afb->tiling_flags, ARRAY_MODE) != 
DC_ARRAY_2D_TILED_THIN1 &&
                                 AMDGPU_TILING_GET(afb->tiling_flags, ARRAY_MODE) != 
DC_ARRAY_1D_TILED_THIN1 &&
                                 AMDGPU_TILING_GET(afb->tiling_flags, 
MICRO_TILE_MODE) == 0;
-               } else {
-                       linear = AMDGPU_TILING_GET(afb->tiling_flags, 
SWIZZLE_MODE) == 0;
                }
                if (!linear) {
                        DRM_DEBUG_ATOMIC("Cursor FB not linear");

--
--

Thanks & Regards,
Aurabindo Pillai

Reply via email to