mirror of
				https://github.com/tiagovignatti/intel-gpu-tools.git
				synced 2025-11-04 12:07:12 +00:00 
			
		
		
		
	igt/gem_evict_everything: Simplify mlocked_evictions
igt_fork/igt_waitchildren already perform the magic required to raise errors based on the exit error code of the child, so take advantage of that and kill the overlycomplicated message passing! Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
This commit is contained in:
		
							parent
							
								
									9c6e6db03d
								
							
						
					
					
						commit
						af3e32cee2
					
				@ -135,12 +135,9 @@ static void mlocked_evictions(int fd, struct igt_eviction_test_ops *ops,
 | 
			
		||||
			      int surface_count)
 | 
			
		||||
{
 | 
			
		||||
	size_t sz, pin;
 | 
			
		||||
	int result[2];
 | 
			
		||||
	void *locked;
 | 
			
		||||
	int ret = -1;
 | 
			
		||||
 | 
			
		||||
	intel_require_memory(surface_count, surface_size, CHECK_RAM);
 | 
			
		||||
	igt_assert(pipe(result) == 0);
 | 
			
		||||
 | 
			
		||||
	sz = surface_size*surface_count;
 | 
			
		||||
	pin = intel_get_avail_ram_mb();
 | 
			
		||||
@ -163,26 +160,23 @@ static void mlocked_evictions(int fd, struct igt_eviction_test_ops *ops,
 | 
			
		||||
 | 
			
		||||
	igt_fork(child, 1) {
 | 
			
		||||
		uint32_t *bo;
 | 
			
		||||
		int n;
 | 
			
		||||
		int n, ret;
 | 
			
		||||
 | 
			
		||||
		bo = malloc(surface_count*sizeof(*bo));
 | 
			
		||||
		igt_assert(bo);
 | 
			
		||||
 | 
			
		||||
		locked = malloc(pin);
 | 
			
		||||
		if (locked == NULL || mlock(locked, pin)) {
 | 
			
		||||
			ret = ENOSPC;
 | 
			
		||||
			goto out;
 | 
			
		||||
		}
 | 
			
		||||
		if (locked == NULL || mlock(locked, pin))
 | 
			
		||||
			exit(ENOSPC);
 | 
			
		||||
 | 
			
		||||
		for (n = 0; n < surface_count; n++)
 | 
			
		||||
			bo[n] = ops->create(fd, surface_size);
 | 
			
		||||
 | 
			
		||||
		ret = 0;
 | 
			
		||||
		for (n = 0; n < surface_count - 2; n++) {
 | 
			
		||||
			igt_permute_array(bo, surface_count, exchange_uint32_t);
 | 
			
		||||
			ret = ops->copy(fd, bo[0], bo[1], bo, surface_count-n);
 | 
			
		||||
			if (ret)
 | 
			
		||||
				break;
 | 
			
		||||
				exit(ret);
 | 
			
		||||
 | 
			
		||||
			/* Having used the surfaces (and so pulled out of
 | 
			
		||||
			 * our pages into memory), start a memory hog to
 | 
			
		||||
@ -190,28 +184,15 @@ static void mlocked_evictions(int fd, struct igt_eviction_test_ops *ops,
 | 
			
		||||
			 */
 | 
			
		||||
 | 
			
		||||
			locked = malloc(surface_size);
 | 
			
		||||
			if (locked == NULL || mlock(locked, surface_size)) {
 | 
			
		||||
				ret = ENOSPC;
 | 
			
		||||
				goto out;
 | 
			
		||||
			}
 | 
			
		||||
			if (locked == NULL || mlock(locked, surface_size))
 | 
			
		||||
				exit(ENOSPC);
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		for (n = 0; n < surface_count; n++)
 | 
			
		||||
			ops->close(fd, bo[n]);
 | 
			
		||||
 | 
			
		||||
out:
 | 
			
		||||
		write(result[1], &ret, sizeof(ret));
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	igt_waitchildren();
 | 
			
		||||
 | 
			
		||||
	fcntl(result[0], F_SETFL, fcntl(result[0], F_GETFL) | O_NONBLOCK);
 | 
			
		||||
	read(result[0], &ret, sizeof(ret));
 | 
			
		||||
	close(result[0]);
 | 
			
		||||
	close(result[1]);
 | 
			
		||||
 | 
			
		||||
	errno = ret;
 | 
			
		||||
	igt_assert(ret == 0);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static int swapping_evictions(int fd, struct igt_eviction_test_ops *ops,
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user