mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-10-02 23:27:06 +00:00
drm/amdkfd: Fix EXT_COHERENT memory allocation crash
If there is no VRAM domain, bo_node is NULL and this causes crash.
Refactor the change, and use the module parameter as higher privilege.
Need another patch to support override PTE flag on APU.
Fixes: 5f248462c6
("drm/amdgpu: Add EXT_COHERENT memory allocation flags")
Signed-off-by: Philip Yang <Philip.Yang@amd.com>
Reviewed-by: Felix Kuehling <Felix.Kuehling@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
This commit is contained in:
parent
fdac890966
commit
23de7616f3
1 changed files with 7 additions and 11 deletions
|
@ -1250,26 +1250,22 @@ svm_range_get_pte_flags(struct kfd_node *node,
|
|||
break;
|
||||
case IP_VERSION(9, 4, 3):
|
||||
mtype_local = amdgpu_mtype_local == 1 ? AMDGPU_VM_MTYPE_NC :
|
||||
(amdgpu_mtype_local == 2 ? AMDGPU_VM_MTYPE_CC : AMDGPU_VM_MTYPE_RW);
|
||||
(amdgpu_mtype_local == 2 || ext_coherent ?
|
||||
AMDGPU_VM_MTYPE_CC : AMDGPU_VM_MTYPE_RW);
|
||||
snoop = true;
|
||||
if (uncached) {
|
||||
mapping_flags |= AMDGPU_VM_MTYPE_UC;
|
||||
} else if (ext_coherent) {
|
||||
/* local HBM region close to partition */
|
||||
if (bo_node->adev == node->adev &&
|
||||
(!bo_node->xcp || !node->xcp || bo_node->xcp->mem_id == node->xcp->mem_id))
|
||||
mapping_flags |= AMDGPU_VM_MTYPE_CC;
|
||||
else
|
||||
mapping_flags |= AMDGPU_VM_MTYPE_UC;
|
||||
} else if (domain == SVM_RANGE_VRAM_DOMAIN) {
|
||||
/* local HBM region close to partition */
|
||||
if (bo_node->adev == node->adev &&
|
||||
(!bo_node->xcp || !node->xcp || bo_node->xcp->mem_id == node->xcp->mem_id))
|
||||
mapping_flags |= mtype_local;
|
||||
/* local HBM region far from partition or remote XGMI GPU */
|
||||
else if (svm_nodes_in_same_hive(bo_node, node))
|
||||
/* local HBM region far from partition or remote XGMI GPU
|
||||
* with regular system scope coherence
|
||||
*/
|
||||
else if (svm_nodes_in_same_hive(bo_node, node) && !ext_coherent)
|
||||
mapping_flags |= AMDGPU_VM_MTYPE_NC;
|
||||
/* PCIe P2P */
|
||||
/* PCIe P2P or extended system scope coherence */
|
||||
else
|
||||
mapping_flags |= AMDGPU_VM_MTYPE_UC;
|
||||
/* system memory accessed by the APU */
|
||||
|
|
Loading…
Reference in a new issue