The drop_caches sysctl has a max value of 4, so writing 7 to it just
fails. Avoid the earlier two-writes problem by opening the fd twice.

v2: Don't lseek(), open() twice. (Chris)

Signed-off-by: Petri Latvala <[email protected]>
---
 lib/intel_os.c | 13 +++++++++++--
 1 file changed, 11 insertions(+), 2 deletions(-)

diff --git a/lib/intel_os.c b/lib/intel_os.c
index b9f970d..e448bb4 100644
--- a/lib/intel_os.c
+++ b/lib/intel_os.c
@@ -299,11 +299,20 @@ void intel_purge_vm_caches(void)
        if (fd < 0)
                return;
 
+       /* 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);
+
+       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);
 }
 
-- 
2.9.3

_______________________________________________
Intel-gfx mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

Reply via email to