lib: Add igt_drop_caches_set()

This is basically a "drop cache" interface to the igt_debugfs
facilities. Also, update existing users.

Signed-off-by: Oscar Mateo <oscar.mateo@intel.com>
Cc: Damien Lespiau <damien.lespiau@intel.com>
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
This commit is contained in:
Oscar Mateo
2013-11-04 16:30:47 +00:00
committed by Daniel Vetter
parent a97402e89a
commit 5f0ab94c3f
4 changed files with 51 additions and 22 deletions
+4 -11
View File
@@ -42,6 +42,7 @@
#include "intel_bufmgr.h"
#include "intel_batchbuffer.h"
#include "intel_gpu_tools.h"
#include "igt_debugfs.h"
/*
* Testcase: Persistent relocations as used by uxa/libva
@@ -287,21 +288,13 @@ static void do_forked_test(int fd, unsigned flags)
struct igt_helper_process thrasher = {};
if (flags & (THRASH | THRASH_INACTIVE)) {
char fname[FILENAME_MAX];
int drop_caches_fd;
const char *data = (flags & THRASH_INACTIVE) ? "0x7" : "0xf";
snprintf(fname, FILENAME_MAX, "%s/%i/%s",
"/sys/kernel/debug/dri", drm_get_card(),
"i915_gem_drop_caches");
drop_caches_fd = open(fname, O_WRONLY);
igt_require(drop_caches_fd >= 0);
uint64_t val = (flags & THRASH_INACTIVE) ?
(DROP_RETIRE | DROP_BOUND | DROP_UNBOUND) : DROP_ALL;
igt_fork_helper(&thrasher) {
while (1) {
usleep(1000);
igt_assert(write(drop_caches_fd, data, strlen(data) + 1) == strlen(data) + 1);
do_or_die(igt_drop_caches_set(val));
}
}
}
+4 -11
View File
@@ -42,6 +42,7 @@
#include "intel_bufmgr.h"
#include "intel_batchbuffer.h"
#include "intel_gpu_tools.h"
#include "igt_debugfs.h"
/*
* Testcase: Kernel relocations vs. gpu races
@@ -282,21 +283,13 @@ static void do_forked_test(int fd, unsigned flags)
struct igt_helper_process thrasher = {};
if (flags & (THRASH | THRASH_INACTIVE)) {
char fname[FILENAME_MAX];
int drop_caches_fd;
const char *data = (flags & THRASH_INACTIVE) ? "0x7" : "0xf";
snprintf(fname, FILENAME_MAX, "%s/%i/%s",
"/sys/kernel/debug/dri", drm_get_card(),
"i915_gem_drop_caches");
drop_caches_fd = open(fname, O_WRONLY);
igt_require(drop_caches_fd >= 0);
uint64_t val = (flags & THRASH_INACTIVE) ?
(DROP_RETIRE | DROP_BOUND | DROP_UNBOUND) : DROP_ALL;
igt_fork_helper(&thrasher) {
while (1) {
usleep(1000);
igt_assert(write(drop_caches_fd, data, strlen(data) + 1) == strlen(data) + 1);
do_or_die(igt_drop_caches_set(val));
}
}
}