Promote eviction memory sizes and buffer counts to uint64_t

References: https://bugs.freedesktop.org/show_bug.cgi?id=93849
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
This commit is contained in:
Chris Wilson 2016-01-25 13:51:00 +00:00
parent beb936f188
commit 0e2071411a
4 changed files with 35 additions and 31 deletions

View File

@ -31,14 +31,13 @@
#include <stdlib.h> #include <stdlib.h>
struct igt_eviction_test_ops struct igt_eviction_test_ops {
{
uint32_t (*create)(int fd, uint64_t size); uint32_t (*create)(int fd, uint64_t size);
void (*flink)(uint32_t old_handle, uint32_t new_handle); void (*flink)(uint32_t old_handle, uint32_t new_handle);
void (*close)(int fd, uint32_t bo); void (*close)(int fd, uint32_t bo);
int (*copy)(int fd, uint32_t dst, uint32_t src, int (*copy)(int fd, uint32_t dst, uint32_t src,
uint32_t *all_bo, int nr_bos); uint32_t *all_bo, int nr_bos);
void (*clear)(int fd, uint32_t bo, int size); void (*clear)(int fd, uint32_t bo, uint64_t size);
}; };
#define FORKING_EVICTIONS_INTERRUPTIBLE (1 << 0) #define FORKING_EVICTIONS_INTERRUPTIBLE (1 << 0)
@ -58,11 +57,12 @@ static void exchange_uint32_t(void *array, unsigned i, unsigned j)
} }
static int minor_evictions(int fd, struct igt_eviction_test_ops *ops, static int minor_evictions(int fd, struct igt_eviction_test_ops *ops,
int surface_size, int nr_surfaces) uint64_t surface_size,
uint64_t nr_surfaces)
{ {
uint32_t *bo, *sel; uint32_t *bo, *sel;
int n, m, pass, fail; uint64_t n, m, total_surfaces;
int total_surfaces; int pass, fail;
/* Make sure nr_surfaces is not divisible by seven /* Make sure nr_surfaces is not divisible by seven
* to avoid duplicates in the selection loop below. * to avoid duplicates in the selection loop below.
@ -102,11 +102,11 @@ static int minor_evictions(int fd, struct igt_eviction_test_ops *ops,
} }
static int major_evictions(int fd, struct igt_eviction_test_ops *ops, static int major_evictions(int fd, struct igt_eviction_test_ops *ops,
int surface_size, int nr_surfaces) uint64_t surface_size, uint64_t nr_surfaces)
{ {
int n, m, loop; uint64_t n, m;
uint32_t *bo; uint32_t *bo;
int ret; int ret, loop;
intel_require_memory(nr_surfaces, surface_size, CHECK_RAM); intel_require_memory(nr_surfaces, surface_size, CHECK_RAM);
@ -130,8 +130,8 @@ static int major_evictions(int fd, struct igt_eviction_test_ops *ops,
} }
static void mlocked_evictions(int fd, struct igt_eviction_test_ops *ops, static void mlocked_evictions(int fd, struct igt_eviction_test_ops *ops,
int surface_size, uint64_t surface_size,
int surface_count) uint64_t surface_count)
{ {
size_t sz, pin; size_t sz, pin;
void *locked; void *locked;
@ -159,7 +159,8 @@ static void mlocked_evictions(int fd, struct igt_eviction_test_ops *ops,
igt_fork(child, 1) { igt_fork(child, 1) {
uint32_t *bo; uint32_t *bo;
int n, ret; uint64_t n;
int ret;
bo = malloc(surface_count*sizeof(*bo)); bo = malloc(surface_count*sizeof(*bo));
igt_assert(bo); igt_assert(bo);
@ -195,12 +196,13 @@ static void mlocked_evictions(int fd, struct igt_eviction_test_ops *ops,
} }
static int swapping_evictions(int fd, struct igt_eviction_test_ops *ops, static int swapping_evictions(int fd, struct igt_eviction_test_ops *ops,
int surface_size, uint64_t surface_size,
int working_surfaces, uint64_t working_surfaces,
int trash_surfaces) uint64_t trash_surfaces)
{ {
uint32_t *bo; uint32_t *bo;
int i, n, pass, ret; uint64_t i, n;
int pass, ret;
intel_require_memory(working_surfaces, surface_size, CHECK_RAM); intel_require_memory(working_surfaces, surface_size, CHECK_RAM);
@ -232,13 +234,15 @@ static int swapping_evictions(int fd, struct igt_eviction_test_ops *ops,
} }
static int forking_evictions(int fd, struct igt_eviction_test_ops *ops, static int forking_evictions(int fd, struct igt_eviction_test_ops *ops,
int surface_size, int working_surfaces, uint64_t surface_size,
int trash_surfaces, unsigned flags) uint64_t working_surfaces,
uint64_t trash_surfaces,
unsigned flags)
{ {
const int num_threads = sysconf(_SC_NPROCESSORS_ONLN);
uint64_t bo_count, n, l;
uint32_t *bo; uint32_t *bo;
int n, pass, l, ret; int pass, ret;
int num_threads = sysconf(_SC_NPROCESSORS_ONLN);
int bo_count;
intel_require_memory(working_surfaces, surface_size, CHECK_RAM); intel_require_memory(working_surfaces, surface_size, CHECK_RAM);

View File

@ -185,11 +185,10 @@ static void major_evictions(int fd, int size, int count)
free(bo); free(bo);
} }
int fd;
igt_main igt_main
{ {
int size, count; uint64_t size, count;
int fd = -1;
igt_fixture { igt_fixture {
fd = drm_open_driver(DRIVER_INTEL); fd = drm_open_driver(DRIVER_INTEL);

View File

@ -130,10 +130,9 @@ copy(int fd, uint32_t dst, uint32_t src, uint32_t *all_bo, int n_bo)
return ret; return ret;
} }
static void clear(int fd, uint32_t handle, int size) static void clear(int fd, uint32_t handle, uint64_t size)
{ {
void *base = gem_mmap__cpu(fd, handle, 0, size, PROT_READ | PROT_WRITE); void *base = gem_mmap__cpu(fd, handle, 0, size, PROT_WRITE);
memset(base, 0, size); memset(base, 0, size);
munmap(base, size); munmap(base, size);
} }
@ -183,7 +182,9 @@ static void test_major_evictions(int fd, int size, int count)
igt_main igt_main
{ {
int size, count, fd; uint64_t size, count;
int fd;
size = count = 0; size = count = 0;
fd = -1; fd = -1;

View File

@ -388,7 +388,7 @@ static void flink_userptr_bo(uint32_t old_handle, uint32_t new_handle)
handle_size_map[old_handle]); handle_size_map[old_handle]);
} }
static void clear(int fd, uint32_t handle, int size) static void clear(int fd, uint32_t handle, uint64_t size)
{ {
void *ptr = get_handle_ptr(handle); void *ptr = get_handle_ptr(handle);
@ -1344,7 +1344,7 @@ static void test_invalidate_close_race(int fd, bool overlap)
free(t_data.ptr); free(t_data.ptr);
} }
unsigned int total_ram; uint64_t total_ram;
uint64_t aperture_size; uint64_t aperture_size;
int fd, count; int fd, count;
@ -1376,7 +1376,7 @@ int main(int argc, char **argv)
count = 2 * aperture_size / (1024*1024) / 3; count = 2 * aperture_size / (1024*1024) / 3;
total_ram = intel_get_total_ram_mb(); total_ram = intel_get_total_ram_mb();
igt_info("Total RAM is %u MiB\n", total_ram); igt_info("Total RAM is %'llu MiB\n", (long long)total_ram);
if (count > total_ram * 3 / 4) { if (count > total_ram * 3 / 4) {
count = intel_get_total_ram_mb() * 3 / 4; count = intel_get_total_ram_mb() * 3 / 4;