Re: [Intel-gfx] [PATCH i-g-t v2] tests/gem_cpu_reloc: Fix gem_cpu_reloc OOM failure

2015-05-15 Thread Thomas Wood
On 14 May 2015 at 09:59, Derek Morton derek.j.mor...@intel.com wrote:
 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.

 v2: Addresed comments from Thomas Wood

Thanks, patch merged.



 Signed-off-by: Derek Morton derek.j.mor...@intel.com
 ---
  tests/gem_cpu_reloc.c | 52 
 ++-
  1 file changed, 39 insertions(+), 13 deletions(-)

 diff --git a/tests/gem_cpu_reloc.c b/tests/gem_cpu_reloc.c
 index 058089c..45449ff 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
 +static 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,41 @@ 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);
 -   close(fd);
 +   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);
 +   }
 +
 +   igt_fixture {
 +   close(fd);
 +   }
  }
 --
 1.9.1

___
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/intel-gfx


[Intel-gfx] [PATCH i-g-t v2] tests/gem_cpu_reloc: Fix gem_cpu_reloc OOM failure

2015-05-14 Thread Derek Morton
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.

v2: Addresed comments from Thomas Wood

Signed-off-by: Derek Morton derek.j.mor...@intel.com
---
 tests/gem_cpu_reloc.c | 52 ++-
 1 file changed, 39 insertions(+), 13 deletions(-)

diff --git a/tests/gem_cpu_reloc.c b/tests/gem_cpu_reloc.c
index 058089c..45449ff 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
+static 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,41 @@ 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);
-   close(fd);
+   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);
+   }
+
+   igt_fixture {
+   close(fd);
+   }
 }
-- 
1.9.1

___
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/intel-gfx