From 68f1b375189faf200aa8b00012f705de98b06965 Mon Sep 17 00:00:00 2001 From: Felix Kuehling Date: Thu, 10 Mar 2016 14:37:53 -0500 Subject: [PATCH] Fix lstopo Lstopo doesn't have system memory mappings at low addresses. Make sure we leave enough GPUVM address space for kernel allocations (currently only CWSR) before the start of the user-managed SVM aperture. Change-Id: Ic197f7bd5a3cfb150a0da2bfdbc848664e7869be [ROCm/ROCR-Runtime commit: cac0c0849635e2f7eda286b8bd757cc46678c0c1] --- projects/rocr-runtime/src/fmm.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/projects/rocr-runtime/src/fmm.c b/projects/rocr-runtime/src/fmm.c index a997becb29..71d980696f 100644 --- a/projects/rocr-runtime/src/fmm.c +++ b/projects/rocr-runtime/src/fmm.c @@ -1787,6 +1787,9 @@ err: return ret; } +#define DGPU_APERTURE_ADDR_MIN 0x1000000 /* Leave at least 16MB for kernel */ +#define DGPU_APERTURE_ADDR_INC 0x200000 /* Search in huge-page increments */ + static HSAKMT_STATUS dgpu_mem_init(uint32_t gpu_mem_id, void **base, void **limit) { bool found; @@ -1815,9 +1818,9 @@ static HSAKMT_STATUS dgpu_mem_init(uint32_t gpu_mem_id, void **base, void **limi found = false; for (len = max_vm_limit+1; !found && len >= min_vm_size; len >>= 1) { - for (addr = (void *)TONGA_PAGE_SIZE, ret_addr = NULL; + for (addr = (void *)DGPU_APERTURE_ADDR_MIN, ret_addr = NULL; (HSAuint64)addr + (len >> 1) < max_vm_limit; - addr = (void *)((HSAuint64)addr + TONGA_PAGE_SIZE)) { + addr = (void *)((HSAuint64)addr + DGPU_APERTURE_ADDR_INC)) { ret_addr = reserve_address(addr, len); if (!ret_addr) break;