From 626eb4bfafb539b50fa4ddbbfbabe931e2cf691a Mon Sep 17 00:00:00 2001 From: Alex Sierra Date: Thu, 4 Jul 2024 10:08:26 -0500 Subject: [PATCH] src/fmm.c: fallback to old userptr reg if SVM fails Fallback to old userptr registration in case SVM method fails. Signed-off-by: Alex Sierra Change-Id: I70c3ec74a8b4f762713e6a0619453642f3fca8e5 Signed-off-by: Chris Freehill --- libhsakmt/src/fmm.c | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/libhsakmt/src/fmm.c b/libhsakmt/src/fmm.c index c54e17719d..65863f45d6 100644 --- a/libhsakmt/src/fmm.c +++ b/libhsakmt/src/fmm.c @@ -3123,7 +3123,7 @@ static HSAKMT_STATUS _fmm_map_to_gpu_userptr(void *addr, uint64_t size, /* Map and return the GPUVM address adjusted by the offset * from the start of the page */ - if (is_svm_api_supported) { + if (!object && is_svm_api_supported) { svm_addr = (void*)((HSAuint64)addr - page_offset); if (!nodes_to_map) { nodes_to_map = all_gpu_id_array; @@ -3518,12 +3518,15 @@ HSAKMT_STATUS fmm_register_memory(void *address, uint64_t size_in_bytes, return HSAKMT_STATUS_SUCCESS; /* Register a new user ptr */ - if (is_svm_api_supported) - return fmm_register_mem_svm_api(address, + if (is_svm_api_supported) { + ret = fmm_register_mem_svm_api(address, size_in_bytes, coarse_grain, ext_coherent); - + if (ret == HSAKMT_STATUS_SUCCESS) + return ret; + pr_debug("SVM failed, falling back to old registration\n"); + } ret = fmm_register_user_memory(address, size_in_bytes, &object,