From 4901f1a5284eb6f9bb295ab74e3e2bd1651ec840 Mon Sep 17 00:00:00 2001 From: Kent Russell Date: Tue, 17 Sep 2024 09:29:27 -0400 Subject: [PATCH] hsakmt: Undo HSAKMT prefix for PAGE_SHIFT We had skipped doing it for PAGE_SIZE, but it should be left as the regular PAGE_SHIFT name, especially for users who are using different headers. We want PAGE_SHIFT and PAGE_SIZE to be consistent with one another, so set them both explicitly to the same value if either of them is undefined Change-Id: I121d81c48409dd77351b59a192d824e2419a2410 Signed-off-by: Kent Russell [ROCm/ROCR-Runtime commit: daad183bf8a3e1153a652b9e8fda06306b7c94ef] --- projects/rocr-runtime/libhsakmt/src/fmm.c | 14 +++++++------- projects/rocr-runtime/libhsakmt/src/globals.c | 7 ++----- projects/rocr-runtime/libhsakmt/src/libhsakmt.h | 8 ++++++-- projects/rocr-runtime/libhsakmt/src/openclose.c | 6 ++---- .../tests/kfdtest/src/KFDSVMEvictTest.cpp | 8 ++++---- .../tests/kfdtest/src/KFDSVMRangeTest.cpp | 4 ++-- .../libhsakmt/tests/kfdtest/src/OSWrapper.hpp | 6 +++++- .../libhsakmt/tests/rdma/simple/drv/amdp2ptest.c | 4 ++-- 8 files changed, 30 insertions(+), 27 deletions(-) diff --git a/projects/rocr-runtime/libhsakmt/src/fmm.c b/projects/rocr-runtime/libhsakmt/src/fmm.c index 40793cf6fc..305054ca18 100644 --- a/projects/rocr-runtime/libhsakmt/src/fmm.c +++ b/projects/rocr-runtime/libhsakmt/src/fmm.c @@ -3748,7 +3748,7 @@ HSAKMT_STATUS hsakmt_fmm_share_memory(void *MemoryAddress, HsaSharedMemoryStruct *SharedMemoryStruct = to_hsa_shared_memory_struct(SharedMemoryHandle); - if (SizeInBytes >= (1ULL << ((sizeof(HSAuint32) * 8) + HSAKMT_PAGE_SHIFT))) + if (SizeInBytes >= (1ULL << ((sizeof(HSAuint32) * 8) + PAGE_SHIFT))) return HSAKMT_STATUS_INVALID_PARAMETER; aperture = fmm_find_aperture(MemoryAddress, &ApeInfo); @@ -3784,7 +3784,7 @@ HSAKMT_STATUS hsakmt_fmm_share_memory(void *MemoryAddress, memcpy(SharedMemoryStruct->ShareHandle, exportArgs.share_handle, sizeof(SharedMemoryStruct->ShareHandle)); SharedMemoryStruct->ApeInfo = ApeInfo; - SharedMemoryStruct->SizeInPages = (HSAuint32) (SizeInBytes >> HSAKMT_PAGE_SHIFT); + SharedMemoryStruct->SizeInPages = (HSAuint32) (SizeInBytes >> PAGE_SHIFT); SharedMemoryStruct->ExportGpuId = gpu_id; return HSAKMT_STATUS_SUCCESS; @@ -3821,7 +3821,7 @@ HSAKMT_STATUS hsakmt_fmm_register_shared_memory(const HsaSharedMemoryHandle *Sha pthread_mutex_lock(&aperture->fmm_mutex); reservedMem = aperture_allocate_area(aperture, NULL, - (SizeInPages << HSAKMT_PAGE_SHIFT)); + (SizeInPages << PAGE_SHIFT)); pthread_mutex_unlock(&aperture->fmm_mutex); if (!reservedMem) { err = HSAKMT_STATUS_NO_MEMORY; @@ -3838,7 +3838,7 @@ HSAKMT_STATUS hsakmt_fmm_register_shared_memory(const HsaSharedMemoryHandle *Sha pthread_mutex_lock(&aperture->fmm_mutex); mflags.Value = importArgs.flags; obj = aperture_allocate_object(aperture, reservedMem, importArgs.handle, - (SizeInPages << HSAKMT_PAGE_SHIFT), mflags); + (SizeInPages << PAGE_SHIFT), mflags); if (!obj) { err = HSAKMT_STATUS_NO_MEMORY; goto err_free_mem; @@ -3854,7 +3854,7 @@ HSAKMT_STATUS hsakmt_fmm_register_shared_memory(const HsaSharedMemoryHandle *Sha goto err_free_obj; } obj->node_id = gpu_mem[gpu_mem_id].node_id; - ret = fmm_map_to_cpu(reservedMem, (SizeInPages << HSAKMT_PAGE_SHIFT), + ret = fmm_map_to_cpu(reservedMem, (SizeInPages << PAGE_SHIFT), true, gpu_mem[gpu_mem_id].drm_render_fd, importArgs.mmap_offset); @@ -3865,7 +3865,7 @@ HSAKMT_STATUS hsakmt_fmm_register_shared_memory(const HsaSharedMemoryHandle *Sha } *MemoryAddress = reservedMem; - *SizeInBytes = (SizeInPages << HSAKMT_PAGE_SHIFT); + *SizeInBytes = (SizeInPages << PAGE_SHIFT); if (gpu_id_array_size > 0) { obj->registered_device_id_array = gpu_id_array; @@ -3878,7 +3878,7 @@ err_free_obj: pthread_mutex_lock(&aperture->fmm_mutex); vm_remove_object(aperture, obj); err_free_mem: - aperture_release_area(aperture, reservedMem, (SizeInPages << HSAKMT_PAGE_SHIFT)); + aperture_release_area(aperture, reservedMem, (SizeInPages << PAGE_SHIFT)); pthread_mutex_unlock(&aperture->fmm_mutex); err_free_buffer: freeArgs.handle = importArgs.handle; diff --git a/projects/rocr-runtime/libhsakmt/src/globals.c b/projects/rocr-runtime/libhsakmt/src/globals.c index 8eb73fca67..88cfe57ccb 100644 --- a/projects/rocr-runtime/libhsakmt/src/globals.c +++ b/projects/rocr-runtime/libhsakmt/src/globals.c @@ -33,11 +33,8 @@ unsigned long hsakmt_system_properties_count; pthread_mutex_t hsakmt_mutex = PTHREAD_MUTEX_INITIALIZER; bool hsakmt_is_dgpu; -#ifndef PAGE_SIZE -int PAGE_SIZE; -#endif - -int HSAKMT_PAGE_SHIFT; +int hsakmt_page_size; +int hsakmt_page_shift; /* whether to check all dGPUs in the topology support SVM API */ bool hsakmt_is_svm_api_supported; diff --git a/projects/rocr-runtime/libhsakmt/src/libhsakmt.h b/projects/rocr-runtime/libhsakmt/src/libhsakmt.h index a53ea02f23..63ef17d96c 100644 --- a/projects/rocr-runtime/libhsakmt/src/libhsakmt.h +++ b/projects/rocr-runtime/libhsakmt/src/libhsakmt.h @@ -67,9 +67,13 @@ extern HsaVersionInfo hsakmt_kfd_version_info; /* Might be defined in limits.h on platforms where it is constant (used by musl) */ /* See also: https://pubs.opengroup.org/onlinepubs/7908799/xsh/limits.h.html */ #ifndef PAGE_SIZE -extern int PAGE_SIZE; +extern int hsakmt_page_size; +#define PAGE_SIZE hsakmt_page_size +#endif +#ifndef PAGE_SHIFT +extern int hsakmt_page_shift; +#define PAGE_SHIFT hsakmt_page_shift #endif -extern int HSAKMT_PAGE_SHIFT; /* VI HW bug requires this virtual address alignment */ #define TONGA_PAGE_SIZE 0x8000 diff --git a/projects/rocr-runtime/libhsakmt/src/openclose.c b/projects/rocr-runtime/libhsakmt/src/openclose.c index 86dcc9b23a..a02804893f 100644 --- a/projects/rocr-runtime/libhsakmt/src/openclose.c +++ b/projects/rocr-runtime/libhsakmt/src/openclose.c @@ -114,10 +114,8 @@ static void clear_after_fork(void) static inline void init_page_size(void) { -#ifndef PAGE_SIZE - PAGE_SIZE = sysconf(_SC_PAGESIZE); -#endif - HSAKMT_PAGE_SHIFT = ffs(PAGE_SIZE) - 1; + hsakmt_page_size = sysconf(_SC_PAGESIZE); + hsakmt_page_shift = ffs(hsakmt_page_size) - 1; } static HSAKMT_STATUS init_vars_from_env(void) diff --git a/projects/rocr-runtime/libhsakmt/tests/kfdtest/src/KFDSVMEvictTest.cpp b/projects/rocr-runtime/libhsakmt/tests/kfdtest/src/KFDSVMEvictTest.cpp index 9387055ac0..63c667f070 100644 --- a/projects/rocr-runtime/libhsakmt/tests/kfdtest/src/KFDSVMEvictTest.cpp +++ b/projects/rocr-runtime/libhsakmt/tests/kfdtest/src/KFDSVMEvictTest.cpp @@ -57,7 +57,7 @@ void KFDSVMEvictTest::TearDown() { } HSAint32 KFDSVMEvictTest::GetBufferCounter(HSAuint64 vramSize, HSAuint64 vramBufSize) { - HSAuint64 vramBufSizeInPages = vramBufSize >> HSAKMT_PAGE_SHIFT; + HSAuint64 vramBufSizeInPages = vramBufSize >> PAGE_SHIFT; HSAuint64 sysMemSize = GetSysMemSize(); HSAuint64 size, sizeInPages; HSAuint32 count; @@ -79,7 +79,7 @@ HSAint32 KFDSVMEvictTest::GetBufferCounter(HSAuint64 vramSize, HSAuint64 vramBuf if (!xnack_enable && size > (sysMemSize - (sysMemSize >> 4))) return 0; - sizeInPages = size >> HSAKMT_PAGE_SHIFT; + sizeInPages = size >> PAGE_SHIFT; count = sizeInPages / (vramBufSizeInPages * N_PROCESSES); return count; @@ -105,10 +105,10 @@ HSAint64 KFDSVMEvictTest::GetBufferSize(HSAuint64 vramSize, HSAuint32 count, if (!xnack_enable && size > (sysMemSize - (sysMemSize >> 4))) return 0; - sizeInPages = size >> HSAKMT_PAGE_SHIFT; + sizeInPages = size >> PAGE_SHIFT; vramBufSizeInPages = sizeInPages / (count * N_PROCESSES); - return vramBufSizeInPages << HSAKMT_PAGE_SHIFT; + return vramBufSizeInPages << PAGE_SHIFT; } void KFDSVMEvictTest::AllocBuffers(HSAuint32 defaultGPUNode, HSAuint32 count, HSAuint64 vramBufSize, diff --git a/projects/rocr-runtime/libhsakmt/tests/kfdtest/src/KFDSVMRangeTest.cpp b/projects/rocr-runtime/libhsakmt/tests/kfdtest/src/KFDSVMRangeTest.cpp index 805ac09742..77673f4661 100644 --- a/projects/rocr-runtime/libhsakmt/tests/kfdtest/src/KFDSVMRangeTest.cpp +++ b/projects/rocr-runtime/libhsakmt/tests/kfdtest/src/KFDSVMRangeTest.cpp @@ -1452,8 +1452,8 @@ unsigned int ReadSMIEventThread(void* p) { EXPECT_EQ(sscanf(msg, "%x %ld -%d @%lx(%d) %d->%x %x:%d %d\n", &event_id, ×tamp, &pid, &addr, &size, &unused, &unused, &unused, &unused, &trigger), 10); EXPECT_EQ(event_id, HSA_SMI_EVENT_MIGRATE_START); - EXPECT_EQ((HSAuint64 *)(addr << HSAKMT_PAGE_SHIFT), pArgs->pBuf); - EXPECT_EQ(size << HSAKMT_PAGE_SHIFT, pArgs->BufSize); + EXPECT_EQ((HSAuint64 *)(addr << PAGE_SHIFT), pArgs->pBuf); + EXPECT_EQ(size << PAGE_SHIFT, pArgs->BufSize); EXPECT_EQ(pid, getpid()); EXPECT_EQ(trigger, HSA_MIGRATE_TRIGGER_PREFETCH); close(fd); diff --git a/projects/rocr-runtime/libhsakmt/tests/kfdtest/src/OSWrapper.hpp b/projects/rocr-runtime/libhsakmt/tests/kfdtest/src/OSWrapper.hpp index 42b9be01d3..6c3b24f1d1 100644 --- a/projects/rocr-runtime/libhsakmt/tests/kfdtest/src/OSWrapper.hpp +++ b/projects/rocr-runtime/libhsakmt/tests/kfdtest/src/OSWrapper.hpp @@ -33,7 +33,11 @@ #ifndef PAGE_SIZE #define PAGE_SIZE (1<<12) -#define HSAKMT_PAGE_SHIFT (12) +#define PAGE_SHIFT (12) +#endif +#ifndef PAGE_SHIFT +#define PAGE_SIZE (1<<12) +#define PAGE_SHIFT (12) #endif enum TEXTCOLOR { diff --git a/projects/rocr-runtime/libhsakmt/tests/rdma/simple/drv/amdp2ptest.c b/projects/rocr-runtime/libhsakmt/tests/rdma/simple/drv/amdp2ptest.c index 0a6614c529..9612864f7c 100644 --- a/projects/rocr-runtime/libhsakmt/tests/rdma/simple/drv/amdp2ptest.c +++ b/projects/rocr-runtime/libhsakmt/tests/rdma/simple/drv/amdp2ptest.c @@ -304,7 +304,7 @@ static int amdp2ptest_mmap(struct file *filp, struct vm_area_struct *vma) struct va_pages_node *va_pages = NULL; struct amdp2ptest_pages_list *list = filp->private_data; struct list_head *p, *n; - uint64_t gpu_va = vma->vm_pgoff << HSAKMT_PAGE_SHIFT; + uint64_t gpu_va = vma->vm_pgoff << PAGE_SHIFT; MSG_INFO("Mapping to CPU user space\n"); MSG_INFO("Begin vm_start 0x%lx, vm_end 0x%lx\n", vma->vm_start, vma->vm_end); @@ -340,7 +340,7 @@ static int amdp2ptest_mmap(struct file *filp, struct vm_area_struct *vma) addr, sg->dma_address, size); ret = remap_pfn_range(vma, addr, - sg->dma_address >> HSAKMT_PAGE_SHIFT, + sg->dma_address >> PAGE_SHIFT, size, vma->vm_page_prot); if (ret) {