mtype = MTYPE_RW;
} else {
/* dGPU */
- /*
- if ((mem->alloc_flags & KFD_IOC_ALLOC_MEM_FLAGS_VRAM) &&
- bo_adev == adev)
- mapping_flags |= AMDGPU_VM_MTYPE_RW;
+ if (is_vram && bo_adev == adev)
+ mtype = MTYPE_RW;
+ else if (is_vram)
+ mtype = MTYPE_NC;
else
- */
- /* Temporarily comment out above lines and use MTYPE_NC
- * on both VRAM and system memory access until
- * MTYPE_RW can properly work on VRAM access
- */
- mtype = MTYPE_NC;
+ mtype = MTYPE_UC;
}
break;
if (uncached) {
mapping_flags |= AMDGPU_VM_MTYPE_UC;
} else if (domain == SVM_RANGE_VRAM_DOMAIN) {
- /* local HBM region close to partition with a workaround
- * for Endpoint systems.
- */
+ /* local HBM region close to partition */
if (bo_node == node)
- mapping_flags |=
- (node->adev->flags & AMD_IS_APU) ?
- AMDGPU_VM_MTYPE_RW : AMDGPU_VM_MTYPE_NC;
+ mapping_flags |= AMDGPU_VM_MTYPE_RW;
/* local HBM region far from partition or remote XGMI GPU */
else if (svm_nodes_in_same_hive(bo_node, node))
mapping_flags |= AMDGPU_VM_MTYPE_NC;