summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--lib/intel_os.c28
1 files changed, 26 insertions, 2 deletions
diff --git a/lib/intel_os.c b/lib/intel_os.c
index bb2c16bf..f7ad05ac 100644
--- a/lib/intel_os.c
+++ b/lib/intel_os.c
@@ -51,6 +51,7 @@
#include "drmtest.h"
#include "igt_aux.h"
#include "igt_debugfs.h"
+#include "igt_sysfs.h"
/**
* intel_get_total_ram_mb:
@@ -280,9 +281,32 @@ int __intel_check_memory(uint64_t count, uint64_t size, unsigned mode,
void intel_require_memory(uint64_t count, uint64_t size, unsigned mode)
{
uint64_t required, total;
+ bool sufficient_memory;
+
+ sufficient_memory = __intel_check_memory(count, size, mode,
+ &required, &total);
+ if (!sufficient_memory) {
+ int dir = open("/proc", O_RDONLY);
+ char *info;
+
+ info = igt_sysfs_get(dir, "meminfo");
+ if (info) {
+ igt_debug("Insufficient free memory; /proc/meminfo:\n%s",
+ info);
+ free(info);
+ }
+
+ info = igt_sysfs_get(dir, "slabinfo");
+ if (info) {
+ igt_debug("Insuffucient free memory; /proc/slabinfo:\n%s",
+ info);
+ free(info);
+ }
+
+ close(dir);
+ }
- igt_require_f(__intel_check_memory(count, size, mode,
- &required, &total),
+ igt_require_f(sufficient_memory,
"Estimated that we need %'llu objects and %'llu MiB for the test, but only have %'llu MiB available (%s%s) and a maximum of %'llu objects\n",
(long long)count,
(long long)((required + ((1<<20) - 1)) >> 20),