[Intel-gfx] [PATCH] igt/gem_exec_big: Increase stress

Daniel Vetter daniel at ffwll.ch
Tue Nov 18 11:33:23 CET 2014


On Tue, Nov 18, 2014 at 09:50:23AM +0000, Chris Wilson wrote:
> We should be able to execute batches up to the full GTT size (give or
> take fragmentation), so let's try!
> 
> Signed-off-by: Chris Wilson <chris at chris-wilson.co.uk>
> ---
>  tests/gem_exec_big.c | 28 ++++++++++++++++++----------
>  1 file changed, 18 insertions(+), 10 deletions(-)
> 
> diff --git a/tests/gem_exec_big.c b/tests/gem_exec_big.c
> index b82774f..b5ec71c 100644
> --- a/tests/gem_exec_big.c
> +++ b/tests/gem_exec_big.c
> @@ -46,10 +46,9 @@
>  #include "drm.h"
>  #include "ioctl_wrappers.h"
>  #include "drmtest.h"
> +#include "igt_aux.h"
>  
> -#define BATCH_SIZE		(1024*1024)
> -
> -static void exec(int fd, uint32_t handle, uint32_t reloc_ofs)
> +static void exec(int fd, uint32_t handle, uint32_t reloc_ofs, unsigned flags)
>  {
>  	struct drm_i915_gem_execbuffer2 execbuf;
>  	struct drm_i915_gem_exec_object2 gem_exec[1];
> @@ -80,7 +79,7 @@ static void exec(int fd, uint32_t handle, uint32_t reloc_ofs)
>  	execbuf.num_cliprects = 0;
>  	execbuf.DR1 = 0;
>  	execbuf.DR4 = 0;
> -	execbuf.flags = 0;
> +	execbuf.flags = flags;
>  	i915_execbuffer2_set_context_id(execbuf, 0);
>  	execbuf.rsvd2 = 0;
>  
> @@ -100,27 +99,36 @@ static void exec(int fd, uint32_t handle, uint32_t reloc_ofs)
>  igt_simple_main
>  {
>  	uint32_t batch[2] = {MI_BATCH_BUFFER_END};
> -	uint32_t handle;
>  	int fd;
>  	uint32_t reloc_ofs;
>  	unsigned batch_size;
> +	int max;
>  
>  	igt_skip_on_simulation();
>  
>  	fd = drm_open_any();
> +	max = 3 * gem_aperture_size(fd) / 4;
> +
> +	igt_require(intel_check_memory(1, max, CHECK_RAM));

This might result in the testcase skipping and us loosing the coverage -
our QA tends to have puny machines. Better to have two subtests?
-Daniel

>  
> -	for (batch_size = BATCH_SIZE/4; batch_size <= BATCH_SIZE; batch_size += 4096) {
> -		handle = gem_create(fd, batch_size);
> +	for (batch_size = 4096; batch_size <= max; ) {
> +		uint32_t handle = gem_create(fd, batch_size);
>  		gem_write(fd, handle, 0, batch, sizeof(batch));
>  
>  		for (reloc_ofs = 4096; reloc_ofs < batch_size; reloc_ofs += 4096) {
>  			igt_debug("batch_size %u, reloc_ofs %u\n",
>  				  batch_size, reloc_ofs);
> -			exec(fd, handle, reloc_ofs);
> +			exec(fd, handle, reloc_ofs, 0);
> +			exec(fd, handle, reloc_ofs, I915_EXEC_SECURE);
>  		}
> -	}
>  
> -	gem_close(fd, handle);
> +		gem_madvise(fd, handle, I915_MADV_DONTNEED);
> +
> +		if (batch_size < max && 2*batch_size > max)
> +			batch_size = max;
> +		else
> +			batch_size *= 2;
> +	}
>  
>  	close(fd);
>  }
> -- 
> 2.1.3
> 
> _______________________________________________
> Intel-gfx mailing list
> Intel-gfx at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/intel-gfx

-- 
Daniel Vetter
Software Engineer, Intel Corporation
+41 (0) 79 365 57 48 - http://blog.ffwll.ch



More information about the Intel-gfx mailing list