[Intel-gfx] [PATCH i-g-t] tests/gem_cpu_reloc: Fix gem_cpu_reloc OOM failure
Derek Morton
derek.j.morton at intel.com
Tue May 12 05:09:37 PDT 2015
On android with small memory footprints gem_cpu_reloc can fail
due to OOM.
Refactor gem_cpu_reloc into 2 tests, a basic test which performs
10 relocations and a full test which skips if there is insufficient
memory.
Changed the memory required test to better estimate the actual
RAM used.
Signed-off-by: Derek Morton <derek.j.morton at intel.com>
---
tests/gem_cpu_reloc.c | 48 ++++++++++++++++++++++++++++++++++++------------
1 file changed, 36 insertions(+), 12 deletions(-)
diff --git a/tests/gem_cpu_reloc.c b/tests/gem_cpu_reloc.c
index 058089c..2f5fc60 100644
--- a/tests/gem_cpu_reloc.c
+++ b/tests/gem_cpu_reloc.c
@@ -159,16 +159,14 @@ uint32_t gen8_batch[] = {
uint32_t *batch = gen6_batch;
uint32_t batch_size = sizeof(gen6_batch);
-igt_simple_main
+void run_test(int fd, int count)
{
const uint32_t hang[] = {-1, -1, -1, -1};
const uint32_t end[] = {MI_BATCH_BUFFER_END, 0};
- uint64_t aper_size;
uint32_t noop;
uint32_t *handles;
- int fd, i, count;
+ int i;
- fd = drm_open_any();
noop = intel_get_drm_devid(fd);
use_blt = 0;
@@ -180,13 +178,6 @@ igt_simple_main
batch_size += 2 * 4;
}
- aper_size = gem_mappable_aperture_size();
- count = aper_size / 4096 * 2;
- if (igt_run_in_simulation())
- count = 10;
-
- intel_require_memory(1+count, 4096, CHECK_RAM);
-
handles = malloc (count * sizeof(uint32_t));
igt_assert(handles);
@@ -246,6 +237,39 @@ igt_simple_main
igt_progress("gem_cpu_reloc: ", 2*count+i, 3*count);
}
- igt_info("Test suceeded, cleanup up - this might take a while.\n");
+ igt_info("Subtest suceeded, cleanup up - this might take a while.\n");
+ for (i = 0; i < count; i++) {
+ gem_close(fd, handles[i]);
+ }
+ gem_close(fd, noop);
+ free(handles);
+}
+
+igt_main
+{
+ uint64_t aper_size;
+ int fd, count;
+
+ igt_fixture {
+ fd = drm_open_any();
+ }
+
+ igt_subtest("basic") {
+ run_test (fd, 10);
+ }
+
+ igt_skip_on_simulation();
+
+ igt_subtest("full") {
+ aper_size = gem_mappable_aperture_size();
+ count = aper_size / 4096 * 2;
+
+ /* count + 2 (noop & bad) buffers. A gem object appears to
+ require about 2kb + buffer + kernel overhead */
+ intel_require_memory(2+count, 2048+4096, CHECK_RAM);
+
+ run_test (fd, count);
+ }
+
close(fd);
}
--
1.9.1
More information about the Intel-gfx
mailing list