summaryrefslogtreecommitdiff
path: root/drivers
diff options
context:
space:
mode:
authorZhigang Luo <Zhigang.Luo@amd.com>2026-08-31 15:39:03 -0400
committerAlex Deucher <alexander.deucher@amd.com>2026-10-07 12:04:31 -0400
commita69f4d4076eab6b88901d41fcf129f14c74eb763 (patch)
tree2803ff70ab8fd0c2289a419f62dd1682870759bf /drivers
parent3d3140b5b0d0140dce34bffa6ebe84ad0687c477 (diff)
drm/amdkfd: mark A+A VF VRAM PTEs as system memory
On the A+A VF, VRAM is accessed through the system memory path, so SVM range PTEs that point at VRAM need AMDGPU_PTE_SYSTEM set, matching what the graphics paths already do. v2: - Use (sriov_vf || passthrough) and amdgpu_virt_vram_is_spm() for SVM VRAM PTE_SYSTEM. v3: - Rely on amdgpu_virt_vram_is_spm() without redundant VF/passthrough checks. Signed-off-by: Zhigang Luo <zhigang.luo@amd.com> Signed-off-by: Fangsheng Huang <Fangsheng.Huang@amd.com> Signed-off-by: YuBiao Wang <YuBiao.Wang@amd.com> Reviewed-by: Philip Yang <philip.yang@amd.com> Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
Diffstat (limited to 'drivers')
-rw-r--r--drivers/gpu/drm/amd/amdkfd/kfd_svm.c8
1 files changed, 7 insertions, 1 deletions
diff --git a/drivers/gpu/drm/amd/amdkfd/kfd_svm.c b/drivers/gpu/drm/amd/amdkfd/kfd_svm.c
index 671193fb1203..cfb428c72686 100644
--- a/drivers/gpu/drm/amd/amdkfd/kfd_svm.c
+++ b/drivers/gpu/drm/amd/amdkfd/kfd_svm.c
@@ -1384,7 +1384,13 @@ svm_range_get_pte_flags(struct kfd_node *node, struct amdgpu_vm *vm,
mapping_flags |= AMDGPU_VM_PAGE_EXECUTABLE;
pte_flags = AMDGPU_PTE_VALID;
- pte_flags |= (domain == SVM_RANGE_VRAM_DOMAIN) ? 0 : AMDGPU_PTE_SYSTEM;
+ /* SPM-backed VRAM is accessed through the system memory path and
+ * requires the SYSTEM bit.
+ */
+ if (amdgpu_virt_vram_is_spm(node->adev))
+ pte_flags |= AMDGPU_PTE_SYSTEM;
+ else
+ pte_flags |= (domain == SVM_RANGE_VRAM_DOMAIN) ? 0 : AMDGPU_PTE_SYSTEM;
pte_flags |= snoop ? AMDGPU_PTE_SNOOPED : 0;
if (gc_ip_version >= IP_VERSION(12, 0, 0))
pte_flags |= AMDGPU_PTE_IS_PTE;