From: oscar.mateo@intel.com
To: intel-gfx@lists.freedesktop.org
Subject: [PATCH 2/4] lib: Add igt_drop_caches_set()
Date: Mon, 4 Nov 2013 16:30:47 +0000 [thread overview]
Message-ID: <1383582649-2841-2-git-send-email-oscar.mateo@intel.com> (raw)
In-Reply-To: <1383582649-2841-1-git-send-email-oscar.mateo@intel.com>
From: Oscar Mateo <oscar.mateo@intel.com>
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>
---
lib/igt_debugfs.c | 28 ++++++++++++++++++++++++++++
lib/igt_debugfs.h | 15 +++++++++++++++
tests/gem_persistent_relocs.c | 15 ++++-----------
tests/gem_reloc_vs_gpu.c | 15 ++++-----------
4 files changed, 51 insertions(+), 22 deletions(-)
diff --git a/lib/igt_debugfs.c b/lib/igt_debugfs.c
index 0319eff..fc274fd 100644
--- a/lib/igt_debugfs.c
+++ b/lib/igt_debugfs.c
@@ -316,3 +316,31 @@ igt_pipe_crc_get_crcs(igt_pipe_crc_t *pipe_crc, int n_crcs,
*out_crcs = crcs;
}
+
+/*
+ * Drop caches
+ */
+
+int igt_drop_caches_set(uint64_t val)
+{
+ igt_debugfs_t debugfs;
+ int fd;
+ char data[19];
+ size_t nbytes;
+ int ret = -1;
+
+ sprintf(data, "0x%" PRIx64, val);
+
+ igt_debugfs_init(&debugfs);
+ fd = igt_debugfs_open(&debugfs, "i915_gem_drop_caches", O_WRONLY);
+
+ if (fd >= 0)
+ {
+ nbytes = write(fd, data, strlen(data) + 1);
+ if (nbytes == strlen(data) + 1)
+ ret = 0;
+ close(fd);
+ }
+
+ return ret;
+}
diff --git a/lib/igt_debugfs.h b/lib/igt_debugfs.h
index c2810ee..02f4afa 100644
--- a/lib/igt_debugfs.h
+++ b/lib/igt_debugfs.h
@@ -79,4 +79,19 @@ void igt_pipe_crc_stop(igt_pipe_crc_t *pipe_crc);
void igt_pipe_crc_get_crcs(igt_pipe_crc_t *pipe_crc, int n_crcs,
igt_crc_t **out_crcs);
+/*
+ * Drop caches
+ */
+
+#define DROP_UNBOUND 0x1
+#define DROP_BOUND 0x2
+#define DROP_RETIRE 0x4
+#define DROP_ACTIVE 0x8
+#define DROP_ALL (DROP_UNBOUND | \
+ DROP_BOUND | \
+ DROP_RETIRE | \
+ DROP_ACTIVE)
+
+int igt_drop_caches_set(uint64_t val);
+
#endif /* __IGT_DEBUGFS_H__ */
diff --git a/tests/gem_persistent_relocs.c b/tests/gem_persistent_relocs.c
index 34d8492..863f464 100644
--- a/tests/gem_persistent_relocs.c
+++ b/tests/gem_persistent_relocs.c
@@ -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));
}
}
}
diff --git a/tests/gem_reloc_vs_gpu.c b/tests/gem_reloc_vs_gpu.c
index bbfdc3a..9508b1c 100644
--- a/tests/gem_reloc_vs_gpu.c
+++ b/tests/gem_reloc_vs_gpu.c
@@ -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));
}
}
}
--
1.7.9.5
next prev parent reply other threads:[~2013-11-04 16:35 UTC|newest]
Thread overview: 11+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-11-04 16:30 [PATCH 1/4] tests: Fix "-thrashing" and "-thrash-inactive" distinction oscar.mateo
2013-11-04 16:30 ` oscar.mateo [this message]
2013-11-04 17:06 ` [PATCH 2/4] lib: Add igt_drop_caches_set() Daniel Vetter
2013-11-04 17:22 ` Mateo Lozano, Oscar
2013-11-04 17:41 ` Daniel Vetter
2013-11-04 16:30 ` [PATCH 3/4] prime_self_import: Assure no pending requests before object counting oscar.mateo
2013-11-04 17:09 ` Daniel Vetter
2013-11-05 10:56 ` [PATCH 3/4 v2] " oscar.mateo
2013-11-04 16:30 ` [PATCH 4/4] gem_flink_race: " oscar.mateo
2013-11-05 10:57 ` [PATCH 4/4 v2] " oscar.mateo
2013-11-05 11:47 ` Daniel Vetter
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1383582649-2841-2-git-send-email-oscar.mateo@intel.com \
--to=oscar.mateo@intel.com \
--cc=intel-gfx@lists.freedesktop.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox