Commit ef75a6ef authored by Rajneesh Bhardwaj's avatar Rajneesh Bhardwaj Committed by Alex Deucher
Browse files

drm/amdkfd: Update coherence settings for svm ranges



Recently introduced commit "drm/amdgpu: Set cache coherency
for GC 9.4.3" did not update the settings applicable for svm ranges.
Add the coherence settings for svm ranges for GFX IP 9.4.3.

Reviewed-by: default avatarAmber Lin <amber.lin@amd.com>
Signed-off-by: default avatarRajneesh Bhardwaj <rajneesh.bhardwaj@amd.com>
Signed-off-by: default avatarAlex Deucher <alexander.deucher@amd.com>
parent a8027fcd
Loading
Loading
Loading
Loading
+17 −0
Original line number Diff line number Diff line
@@ -1159,6 +1159,7 @@ svm_range_get_pte_flags(struct amdgpu_device *adev, struct svm_range *prange,
	uint64_t pte_flags;
	bool snoop = (domain != SVM_RANGE_VRAM_DOMAIN);
	bool coherent = flags & KFD_IOCTL_SVM_FLAG_COHERENT;
	bool uncached = flags & KFD_IOCTL_SVM_FLAG_UNCACHED;

	if (domain == SVM_RANGE_VRAM_DOMAIN)
		bo_adev = amdgpu_ttm_adev(prange->svm_bo->bo->tbo.bdev);
@@ -1198,6 +1199,22 @@ svm_range_get_pte_flags(struct amdgpu_device *adev, struct svm_range *prange,
				AMDGPU_VM_MTYPE_UC : AMDGPU_VM_MTYPE_NC;
		}
		break;
	case IP_VERSION(9, 4, 3):
		//TODO: Need more work for handling multiple memory partitions
		//e.g. NPS4. Current approch is only applicable without memory
		//partitions.
		snoop = true;
		if (uncached)
			mapping_flags |= AMDGPU_VM_MTYPE_UC;
		/* local HBM region close to partition*/
		else if (bo_adev == adev)
			mapping_flags |= AMDGPU_VM_MTYPE_RW;
		/* local HBM region far from partition or remote XGMI GPU or
		 * system memory
		 */
		else
			mapping_flags |= AMDGPU_VM_MTYPE_NC;
		break;
	default:
		mapping_flags |= coherent ?
			AMDGPU_VM_MTYPE_UC : AMDGPU_VM_MTYPE_NC;
+2 −0
Original line number Diff line number Diff line
@@ -623,6 +623,8 @@ enum kfd_mmio_remap {
#define KFD_IOCTL_SVM_FLAG_GPU_READ_MOSTLY     0x00000020
/* Keep GPU memory mapping always valid as if XNACK is disable */
#define KFD_IOCTL_SVM_FLAG_GPU_ALWAYS_MAPPED   0x00000040
/* Uncached access to memory */
#define KFD_IOCTL_SVM_FLAG_UNCACHED 0x00000080

/**
 * kfd_ioctl_svm_op - SVM ioctl operations