summaryrefslogtreecommitdiff
path: root/tests/gem_mmap_gtt.c
diff options
context:
space:
mode:
Diffstat (limited to 'tests/gem_mmap_gtt.c')
-rw-r--r--tests/gem_mmap_gtt.c54
1 files changed, 2 insertions, 52 deletions
diff --git a/tests/gem_mmap_gtt.c b/tests/gem_mmap_gtt.c
index 7f3ca68d..292216ce 100644
--- a/tests/gem_mmap_gtt.c
+++ b/tests/gem_mmap_gtt.c
@@ -253,56 +253,6 @@ test_write_gtt(int fd)
munmap(src, OBJECT_SIZE);
}
-static unsigned int clflush_size;
-static int setup_clflush(void)
-{
- FILE *file;
- char *line = NULL;
- size_t size = 0;
- int first_stanza = 1;
- int has_clflush = 0;
-
- file = fopen("/proc/cpuinfo", "r");
- if (file == NULL)
- return 0;
-
- while (getline(&line, &size, file) != -1) {
- if (strncmp(line, "processor", 9) == 0) {
- if (!first_stanza)
- break;
- first_stanza = 0;
- }
-
- if (strncmp(line, "flags", 5) == 0) {
- if (strstr(line, "clflush"))
- has_clflush = 1;
- }
-
- if (strncmp(line, "clflush size", 12) == 0) {
- char *colon = strchr(line, ':');
- if (colon)
- clflush_size = atoi(colon + 1);
- }
- }
- free(line);
- fclose(file);
-
- return has_clflush && clflush_size;
-}
-
-static void clflush(void *addr, int size)
-{
- char *p, *end;
-
- end = (char *)addr + size;
- p = (char *)((uintptr_t)addr & ~((uintptr_t)clflush_size - 1));
-
- asm volatile("mfence" ::: "memory");
- for (; p < end; p += clflush_size)
- asm volatile("clflush %0" : "+m" (*(volatile char *)p));
- asm volatile("mfence" ::: "memory");
-}
-
static void
test_coherency(int fd)
{
@@ -310,7 +260,7 @@ test_coherency(int fd)
uint32_t *gtt, *cpu;
int i;
- igt_require(setup_clflush());
+ igt_require(igt_setup_clflush());
handle = gem_create(fd, OBJECT_SIZE);
@@ -321,7 +271,7 @@ test_coherency(int fd)
for (i = 0; i < OBJECT_SIZE / 64; i++) {
int x = 16*i + (i%16);
gtt[x] = i;
- clflush(&cpu[x], sizeof(cpu[x]));
+ igt_clflush_range(&cpu[x], sizeof(cpu[x]));
igt_assert_eq(cpu[x], i);
}