]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
drm/amdgpu: Always set PTE.B for device memory on GFX 12.1
authorMukul Joshi <mukul.joshi@amd.com>
Thu, 14 Aug 2025 19:23:16 +0000 (15:23 -0400)
committerAlex Deucher <alexander.deucher@amd.com>
Mon, 5 Jan 2026 21:59:55 +0000 (16:59 -0500)
On GFX 12.1, we need to set the atomics bit (PTE.B) always for
device memory.

Signed-off-by: Mukul Joshi <mukul.joshi@amd.com>
Reviewed-by: Alex Sierra <alex.sierra@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
drivers/gpu/drm/amd/amdgpu/gmc_v12_1.c

index 695f3cf05b6f68c7423edaca48a79845f4fd293e..bef28aedfb93b79babe32831ef1d3a57647c4d9b 100644 (file)
@@ -496,7 +496,7 @@ static void gmc_v12_1_get_coherence_flags(struct amdgpu_device *adev,
        bool uncached = bo->flags & AMDGPU_GEM_CREATE_UNCACHED;
        unsigned int mtype, mtype_local;
        bool snoop = false;
-       bool is_local;
+       bool is_local = false;
 
        switch (gc_ip_version) {
        case IP_VERSION(12, 1, 0):
@@ -533,6 +533,9 @@ static void gmc_v12_1_get_coherence_flags(struct amdgpu_device *adev,
        if (mtype != MTYPE_NC)
                *flags = AMDGPU_PTE_MTYPE_GFX12(*flags, mtype);
 
+       if (is_local || adev->have_atomics_support)
+               *flags |= AMDGPU_PTE_BUS_ATOMICS;
+
        *flags |= snoop ? AMDGPU_PTE_SNOOPED : 0;
 }
 
@@ -577,9 +580,6 @@ static void gmc_v12_1_get_vm_pte(struct amdgpu_device *adev,
                               AMDGPU_GEM_CREATE_UNCACHED))
                *flags = AMDGPU_PTE_MTYPE_NV10(*flags, MTYPE_UC);
 
-       if (adev->have_atomics_support)
-               *flags |= AMDGPU_PTE_BUS_ATOMICS;
-
        if ((*flags & AMDGPU_PTE_VALID) && bo)
                gmc_v12_1_get_coherence_flags(adev, bo, flags);
 }