diff --git a/globals.cpp b/globals.cpp deleted file mode 100644 index 880dd49cd9..0000000000 --- a/globals.cpp +++ /dev/null @@ -1,35 +0,0 @@ -/* - * Copyright © 2014 Advanced Micro Devices, Inc. - * - * Permission is hereby granted, free of charge, to any person - * obtaining a copy of this software and associated documentation - * files (the "Software"), to deal in the Software without - * restriction, including without limitation the rights to use, copy, - * modify, merge, publish, distribute, sublicense, and/or sell copies - * of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice (including - * the next paragraph) shall be included in all copies or substantial - * portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, - * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF - * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND - * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT - * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, - * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER - * DEALINGS IN THE SOFTWARE. - */ - -#include "libhsakmt.h" - -// HSAKMT global data - -#ifndef PAGE_SIZE -int PAGE_SIZE; -#endif - -int PAGE_SHIFT; - diff --git a/libhsakmt.h b/libhsakmt.h index b857c3b314..28f4b8ae34 100644 --- a/libhsakmt.h +++ b/libhsakmt.h @@ -63,6 +63,8 @@ struct hsakmtRuntime { pthread_mutex_t hsakmt_mutex; const char *dxg_device_name = "/dev/dxg"; + long page_size; + int page_shift; int dxg_fd = -1; pid_t parent_pid = -1; bool is_forked = false; @@ -98,11 +100,6 @@ extern hsakmtRuntime *dxg_runtime; #define CHECK_DXG_OPEN() \ do { if (dxg_runtime->dxg_open_count == 0 || dxg_runtime->is_forked) return HSAKMT_STATUS_KERNEL_IO_CHANNEL_NOT_OPENED; } while (0) -/* 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; -#endif extern int PAGE_SHIFT; /* 64KB BigK fragment size for TLB efficiency */ @@ -112,11 +109,11 @@ extern int PAGE_SHIFT; #define GPU_HUGE_PAGE_SIZE (2 << 20) #define CHECK_PAGE_MULTIPLE(x) \ - do { if ((uint64_t)PORT_VPTR_TO_UINT64(x) % PAGE_SIZE) return HSAKMT_STATUS_INVALID_PARAMETER; } while(0) + do { if ((uint64_t)PORT_VPTR_TO_UINT64(x) % dxg_runtime->page_size) return HSAKMT_STATUS_INVALID_PARAMETER; } while(0) #define ALIGN_UP(x,align) (((uint64_t)(x) + (align) - 1) & ~(uint64_t)((align)-1)) #define ALIGN_UP_32(x,align) (((uint32_t)(x) + (align) - 1) & ~(uint32_t)((align)-1)) -#define PAGE_ALIGN_UP(x) ALIGN_UP(x,PAGE_SIZE) +#define PAGE_ALIGN_UP(x) ALIGN_UP(x,dxg_runtime->page_size) #define BITMASK(n) ((n) ? (UINT64_MAX >> (sizeof(UINT64_MAX) * CHAR_BIT - (n))) : 0) #define ARRAY_LEN(array) (sizeof(array) / sizeof(array[0])) diff --git a/openclose.cpp b/openclose.cpp index 2507276ca6..224a2098ae 100644 --- a/openclose.cpp +++ b/openclose.cpp @@ -81,10 +81,8 @@ static void clear_after_fork(void) { } static inline void init_page_size(void) { -#ifndef PAGE_SIZE - PAGE_SIZE = sysconf(_SC_PAGESIZE); -#endif - PAGE_SHIFT = ffs(PAGE_SIZE) - 1; + dxg_runtime->page_size = sysconf(_SC_PAGESIZE); + dxg_runtime->page_shift = ffs(dxg_runtime->page_size) - 1; } static HSAKMT_STATUS init_vars_from_env(void) { diff --git a/wddm/queue.cpp b/wddm/queue.cpp index 1907603363..31e2686b92 100644 --- a/wddm/queue.cpp +++ b/wddm/queue.cpp @@ -261,7 +261,7 @@ ComputeQueue::ComputeQueue(WDDMDevice *device, assert(ret); GpuMemoryCreateInfo create_info{}; - create_info.size = PAGE_SIZE; + create_info.size = dxg_runtime->page_size; create_info.domain = thunk_proxy::kSystem; GpuMemory *gpu_mem = nullptr; auto code = device->CreateGpuMemory(create_info, &gpu_mem);