Get PAGE_SIZE from system configuration

Change-Id: I87f383c443b873e13d36e80bfa034665bf493520
Signed-off-by: Harish Kasiviswanathan <Harish.Kasiviswanathan@amd.com>


[ROCm/ROCR-Runtime commit: 3b2f064cbc]
This commit is contained in:
Harish Kasiviswanathan
2017-04-28 16:55:52 -04:00
parent 0d55f4a1f7
commit 49805f82b1
5 ha cambiato i file con 31 aggiunte e 9 eliminazioni
+8 -5
Vedi File
@@ -40,7 +40,7 @@
#define INIT_MANAGEBLE_APERTURE(base_value, limit_value) { \
.base = (void *) base_value, \
.limit = (void *) limit_value, \
.align = PAGE_SIZE, \
.align = 0, \
.guard_pages = 1, \
.vm_ranges = NULL, \
.vm_objects = NULL, \
@@ -1392,11 +1392,14 @@ static int fmm_set_memory_policy(uint32_t gpu_id, int default_policy, int alt_po
static uint32_t get_vm_alignment(uint32_t device_id)
{
int page_size = 0;
if (device_id >= 0x6920 && device_id <= 0x6939) /* Tonga */
return TONGA_PAGE_SIZE;
if (device_id >= 0x9870 && device_id <= 0x9877) /* Carrizo */
return TONGA_PAGE_SIZE;
return PAGE_SIZE;
page_size = TONGA_PAGE_SIZE;
else if (device_id >= 0x9870 && device_id <= 0x9877) /* Carrizo */
page_size = TONGA_PAGE_SIZE;
return MAX(PAGE_SIZE, page_size);
}
HSAKMT_STATUS fmm_init_process_apertures(unsigned int NumNodes)
+2
Vedi File
@@ -32,3 +32,5 @@ unsigned long kfd_open_count;
unsigned long system_properties_count;
pthread_mutex_t hsakmt_mutex = PTHREAD_MUTEX_INITIALIZER;
bool is_dgpu = false;
int PAGE_SIZE;
int PAGE_SHIFT;
+11 -2
Vedi File
@@ -49,8 +49,9 @@ extern bool is_dgpu;
#define CHECK_KFD_OPEN() \
do { if (kfd_open_count == 0) return HSAKMT_STATUS_KERNEL_IO_CHANNEL_NOT_OPENED; } while (0)
#define PAGE_SIZE 4096
#define PAGE_SHIFT 12
extern int PAGE_SIZE;
extern int PAGE_SHIFT;
/* VI HW bug requires this virtual address alignment */
#define TONGA_PAGE_SIZE 0x8000
@@ -111,6 +112,14 @@ extern int kmtIoctl(int fd, unsigned long request, void *arg);
#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*/
#define MIN(a, b) ({ \
typeof(a) tmp1 = (a), tmp2 = (b); \
tmp1 < tmp2 ? tmp1 : tmp2; })
#define MAX(a, b) ({ \
typeof(a) tmp1 = (a), tmp2 = (b); \
tmp1 > tmp2 ? tmp1 : tmp2; })
void clear_events_page(void);
void fmm_clear_all_mem(void);
void clear_process_doorbells(void);
+9
Vedi File
@@ -31,6 +31,7 @@
#include <fcntl.h>
#include <unistd.h>
#include <stdio.h>
#include <strings.h>
#include "fmm.h"
static const char kfd_device_name[] = "/dev/kfd";
@@ -69,6 +70,12 @@ static void clear_after_fork(void)
kfd_open_count = 0;
}
static inline void init_page_size(void)
{
PAGE_SIZE = sysconf(_SC_PAGESIZE);
PAGE_SHIFT = ffs(PAGE_SIZE) - 1;
}
HSAKMT_STATUS
HSAKMTAPI
hsaKmtOpenKFD(void)
@@ -99,6 +106,8 @@ hsaKmtOpenKFD(void)
goto open_failed;
}
init_page_size();
result = topology_sysfs_get_system_props(&sys_props);
if (result != HSAKMT_STATUS_SUCCESS)
goto topology_sysfs_failed;
+1 -2
Vedi File
@@ -38,8 +38,7 @@
#include "libhsakmt.h"
#include "fmm.h"
#define PAGE_SIZE 4096
#define MIN(X,Y) ((X) < (Y) ? (X) : (Y))
/* Number of memory banks added by thunk on top of topology */
#define NUM_OF_IGPU_HEAPS 3
#define NUM_OF_DGPU_HEAPS 3