Mesa (master): vc4: Tell valgrind about BO allocations from mmap time to destroy.

Eric Anholt anholt at kemper.freedesktop.org
Wed Aug 3 17:59:15 UTC 2016


Module: Mesa
Branch: master
Commit: e97e9e62a1de9689ce8a2a77cb9657b387a1d14b
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=e97e9e62a1de9689ce8a2a77cb9657b387a1d14b

Author: Eric Anholt <eric at anholt.net>
Date:   Tue Aug  2 15:01:59 2016 -0700

vc4: Tell valgrind about BO allocations from mmap time to destroy.

This helps in debugging memory pressure.  It would be nice if we could
tell valgrind about it all the way from allocation time to destroy, but we
need a pointer to hand to VALGRIND_MALLOCLIKE_BLOCK.

---

 src/gallium/drivers/vc4/Makefile.am  |  1 +
 src/gallium/drivers/vc4/vc4_bufmgr.c | 10 ++++++++++
 2 files changed, 11 insertions(+)

diff --git a/src/gallium/drivers/vc4/Makefile.am b/src/gallium/drivers/vc4/Makefile.am
index de82c2c..19fc387 100644
--- a/src/gallium/drivers/vc4/Makefile.am
+++ b/src/gallium/drivers/vc4/Makefile.am
@@ -32,6 +32,7 @@ AM_CFLAGS = \
 	$(VC4_CFLAGS) \
 	$(GALLIUM_DRIVER_CFLAGS) \
 	$(SIM_CFLAGS) \
+	$(VALGRIND_CFLAGS) \
 	$()
 
 noinst_LTLIBRARIES = libvc4.la
diff --git a/src/gallium/drivers/vc4/vc4_bufmgr.c b/src/gallium/drivers/vc4/vc4_bufmgr.c
index f6bacfd..cf6a511 100644
--- a/src/gallium/drivers/vc4/vc4_bufmgr.c
+++ b/src/gallium/drivers/vc4/vc4_bufmgr.c
@@ -35,6 +35,14 @@
 #include "vc4_context.h"
 #include "vc4_screen.h"
 
+#ifdef HAVE_VALGRIND
+#include <valgrind.h>
+#include <memcheck.h>
+#define VG(x) x
+#else
+#define VG(x)
+#endif
+
 static bool dump_stats = false;
 
 static void
@@ -209,6 +217,7 @@ vc4_bo_free(struct vc4_bo *bo)
                 }
 #endif
                 munmap(bo->map, bo->size);
+                VG(VALGRIND_FREELIKE_BLOCK(bo->map, 0));
         }
 
         struct drm_gem_close c;
@@ -618,6 +627,7 @@ vc4_bo_map_unsynchronized(struct vc4_bo *bo)
                         bo->handle, (long long)offset, bo->size);
                 abort();
         }
+        VG(VALGRIND_MALLOCLIKE_BLOCK(bo->map, bo->size, 0, false));
 
         return bo->map;
 }




More information about the mesa-commit mailing list