diff options
author | Oded Gabbay <oded.gabbay@amd.com> | 2014-12-29 15:37:42 +0200 |
---|---|---|
committer | Oded Gabbay <oded.gabbay@amd.com> | 2014-12-29 15:37:42 +0200 |
commit | 94c0329fc4f37197a139fbd70cee621299f5036f (patch) | |
tree | fffc44564987ac21794266e5de6a240e870541e6 | |
parent | 9f647b07ff9c355e7e9ff6fd82b82fb87187cfc6 (diff) |
Move from direct call to kfd_ioctl to wrapping kmtIoctl
Signed-off-by: Oded Gabbay <oded.gabbay@amd.com>
-rw-r--r-- | src/Makefile | 3 | ||||
-rw-r--r-- | src/fmm.c | 2 | ||||
-rw-r--r-- | src/libhsakmt.c | 18 | ||||
-rw-r--r-- | src/libhsakmt.h | 3 | ||||
-rw-r--r-- | src/memory.c | 2 | ||||
-rw-r--r-- | src/openclose.c | 5 | ||||
-rw-r--r-- | src/queues.c | 6 | ||||
-rw-r--r-- | src/time.c | 2 | ||||
-rw-r--r-- | src/version.c | 2 |
9 files changed, 28 insertions, 15 deletions
diff --git a/src/Makefile b/src/Makefile index b74312a..5608ab7 100644 --- a/src/Makefile +++ b/src/Makefile @@ -18,7 +18,8 @@ CFLAGS += -std=gnu99 -ggdb -pthread -fvisibility=hidden -O2 LDFLAGS += -lrt -pthread -Wl,--version-script=libhsakmt.ver -Wl,-soname=$(LIB_NAME).$(LIB_MAJOR_VER) OBJS = debug.o globals.o memory.o perfctr.o time.o version.o \ - events.o openclose.o queues.o topology.o fmm.o pmc_table.o + events.o openclose.o queues.o topology.o fmm.o pmc_table.o \ + libhsakmt.o .PHONY: all lnx lnx64a clean @@ -446,7 +446,7 @@ HSAKMT_STATUS fmm_init_process_apertures(){ struct kfd_ioctl_get_process_apertures_args args; uint8_t node_id; - if (0 == kfd_ioctl(AMDKFD_IOC_GET_PROCESS_APERTURES, (void*)&args)){ + if (0 == kmtIoctl(kfd_fd, AMDKFD_IOC_GET_PROCESS_APERTURES, (void*)&args)){ for(node_id = 0; node_id < args.num_of_nodes; node_id++){ gpu_mem[node_id].gpu_id = args.process_apertures[node_id].gpu_id; gpu_mem[node_id].lds_aperture.base = PORT_UINT64_TO_VPTR(args.process_apertures[node_id].lds_base); diff --git a/src/libhsakmt.c b/src/libhsakmt.c new file mode 100644 index 0000000..d7f79d3 --- /dev/null +++ b/src/libhsakmt.c @@ -0,0 +1,18 @@ +#include <errno.h> +#include <sys/ioctl.h> + +#include "libhsakmt.h" + +/** + * Call ioctl, restarting if it is interupted + */ +int +kmtIoctl(int fd, unsigned long request, void *arg) +{ + int ret; + + do { + ret = ioctl(fd, request, arg); + } while (ret == -1 && (errno == EINTR || errno == EAGAIN)); + return ret; +} diff --git a/src/libhsakmt.h b/src/libhsakmt.h index 4d337e6..fa8dc0e 100644 --- a/src/libhsakmt.h +++ b/src/libhsakmt.h @@ -64,7 +64,7 @@ extern pthread_mutex_t hsakmt_mutex; HSAKMT_STATUS validate_nodeid(uint32_t nodeid, uint32_t *gpu_id); uint16_t get_device_id_by_node(HSAuint32 node_id); -extern int kfd_ioctl(int cmdcode, void* data); +extern int kmtIoctl(int fd, unsigned long request, void *arg); /* Void pointer arithmetic (or remove -Wpointer-arith to allow void pointers arithmetic) */ #define VOID_PTR_ADD32(ptr,n) (void*)((uint32_t*)(ptr) + n)/*ptr + offset*/ @@ -72,5 +72,4 @@ extern int kfd_ioctl(int cmdcode, void* data); #define VOID_PTR_SUB(ptr,n) (void*)((uint8_t*)(ptr) - n)/*ptr - offset*/ #define VOID_PTRS_SUB(ptr1,ptr2) (uint64_t)((uint8_t*)(ptr1) - (uint8_t*)(ptr2)) /*ptr1 - ptr2*/ - #endif diff --git a/src/memory.c b/src/memory.c index 0b73b52..d65730a 100644 --- a/src/memory.c +++ b/src/memory.c @@ -68,7 +68,7 @@ hsaKmtSetMemoryPolicy( args.alternate_aperture_base = (uintptr_t)MemoryAddressAlternate; args.alternate_aperture_size = MemorySizeInBytes; - int err = kfd_ioctl(AMDKFD_IOC_SET_MEMORY_POLICY, &args); + int err = kmtIoctl(kfd_fd, AMDKFD_IOC_SET_MEMORY_POLICY, &args); return (err == -1) ? HSAKMT_STATUS_ERROR : HSAKMT_STATUS_SUCCESS; } diff --git a/src/openclose.c b/src/openclose.c index 8290d00..d5b91e2 100644 --- a/src/openclose.c +++ b/src/openclose.c @@ -110,8 +110,3 @@ hsaKmtCloseKFD(void) return result; } - -extern int kfd_ioctl(int cmdcode, void* data) -{ - return ioctl(kfd_fd, cmdcode, data); -} diff --git a/src/queues.c b/src/queues.c index be250a2..1feb9ba 100644 --- a/src/queues.c +++ b/src/queues.c @@ -107,7 +107,7 @@ hsaKmtCreateQueue( args.queue_percentage = QueuePercentage; args.queue_priority = Priority; - err = kfd_ioctl(AMDKFD_IOC_CREATE_QUEUE, &args); + err = kmtIoctl(kfd_fd, AMDKFD_IOC_CREATE_QUEUE, &args); if (err == -1) { @@ -166,7 +166,7 @@ hsaKmtUpdateQueue( arg.queue_percentage = QueuePercentage; arg.queue_priority = Priority; - int err = kfd_ioctl(AMDKFD_IOC_UPDATE_QUEUE, &arg); + int err = kmtIoctl(kfd_fd, AMDKFD_IOC_UPDATE_QUEUE, &arg); if (err == -1) { return HSAKMT_STATUS_ERROR; @@ -193,7 +193,7 @@ hsaKmtDestroyQueue( args.queue_id = q->queue_id; - int err = kfd_ioctl(AMDKFD_IOC_DESTROY_QUEUE, &args); + int err = kmtIoctl(kfd_fd, AMDKFD_IOC_DESTROY_QUEUE, &args); if (err == -1) { @@ -46,7 +46,7 @@ hsaKmtGetClockCounters( args.gpu_id = gpu_id; - err = kfd_ioctl(AMDKFD_IOC_GET_CLOCK_COUNTERS, &args); + err = kmtIoctl(kfd_fd, AMDKFD_IOC_GET_CLOCK_COUNTERS, &args); if (err < 0) { result = HSAKMT_STATUS_ERROR; } else { diff --git a/src/version.c b/src/version.c index 8908b17..95bfec6 100644 --- a/src/version.c +++ b/src/version.c @@ -39,7 +39,7 @@ hsaKmtGetVersion( struct kfd_ioctl_get_version_args args; memset(&args, 0, sizeof(args)); - if (kfd_ioctl(AMDKFD_IOC_GET_VERSION, &args) == -1) + if (kmtIoctl(kfd_fd, AMDKFD_IOC_GET_VERSION, &args) == -1) return HSAKMT_STATUS_ERROR; VersionInfo->KernelInterfaceMajorVersion = args.major_version; |