From: Mukul Joshi <[email protected]>

On GFX 12.1, we need to set the atomics bit (PTE.B) always for
device memory.

Signed-off-by: Mukul Joshi <[email protected]>
Reviewed-by: Alex Sierra <[email protected]>
Signed-off-by: Alex Deucher <[email protected]>
---
 drivers/gpu/drm/amd/amdgpu/gmc_v12_1.c | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/drivers/gpu/drm/amd/amdgpu/gmc_v12_1.c 
b/drivers/gpu/drm/amd/amdgpu/gmc_v12_1.c
index 695f3cf05b6f6..bef28aedfb93b 100644
--- a/drivers/gpu/drm/amd/amdgpu/gmc_v12_1.c
+++ b/drivers/gpu/drm/amd/amdgpu/gmc_v12_1.c
@@ -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);
 }
-- 
2.52.0

Reply via email to