summaryrefslogtreecommitdiff
path: root/lib/intel_os.c
diff options
context:
space:
mode:
Diffstat (limited to 'lib/intel_os.c')
-rw-r--r--lib/intel_os.c16
1 files changed, 14 insertions, 2 deletions
diff --git a/lib/intel_os.c b/lib/intel_os.c
index b9f970df..0f9af634 100644
--- a/lib/intel_os.c
+++ b/lib/intel_os.c
@@ -296,14 +296,26 @@ void intel_purge_vm_caches(void)
int fd;
fd = open("/proc/sys/vm/drop_caches", O_WRONLY);
+ if (fd >= 0) {
+ /* BIT(2): Be quiet. Cannot be combined with other operations,
+ * the sysctl has a max value of 4.
+ */
+ igt_ignore_warn(write(fd, "4\n", 2));
+ close(fd);
+ }
+
+ /* Reset write position back to start. Do as a seperate write to keep
+ * the stages segregated and avoid failure from the squelching stopping
+ * the purge.
+ */
+ fd = open("/proc/sys/vm/drop_caches", O_WRONLY);
if (fd < 0)
return;
/* BIT(0): Drop page cache
* BIT(1): Drop slab cache
- * BIT(2): Be quiet in future
*/
- igt_ignore_warn(write(fd, "7\n", 2));
+ igt_ignore_warn(write(fd, "3\n", 2));
close(fd);
}