From: Mukul Joshi Date: Thu, 14 Aug 2025 19:23:16 +0000 (-0400) Subject: drm/amdgpu: Always set PTE.B for device memory on GFX 12.1 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=2d70a10dd16a5baa3e977c12311d9d8aa2d13819;p=thirdparty%2Fkernel%2Flinux.git drm/amdgpu: Always set PTE.B for device memory on GFX 12.1 On GFX 12.1, we need to set the atomics bit (PTE.B) always for device memory. Signed-off-by: Mukul Joshi Reviewed-by: Alex Sierra Signed-off-by: Alex Deucher --- diff --git a/drivers/gpu/drm/amd/amdgpu/gmc_v12_1.c b/drivers/gpu/drm/amd/amdgpu/gmc_v12_1.c index 695f3cf05b6f..bef28aedfb93 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); }