mirror of
				https://github.com/tiagovignatti/intel-gpu-tools.git
				synced 2025-11-03 19:47:15 +00:00 
			
		
		
		
	igt/gem_concurrent_blit: Allocate a private batch cache for the child
We have to avoid the COW alias for the intel_bufmgr and intel_batch cache as the child may close the object (in its local cache) leaving an alias in the parent cache pointing to a stale object. Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
This commit is contained in:
		
							parent
							
								
									3eae640b81
								
							
						
					
					
						commit
						69ecedea73
					
				@ -1135,9 +1135,21 @@ static void run_child(struct buffers *buffers,
 | 
				
			|||||||
		      do_hang do_hang_func)
 | 
							      do_hang do_hang_func)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	igt_fork(child, 1)
 | 
						/* We inherit the buffers from the parent, but the bufmgr/batch
 | 
				
			||||||
 | 
						 * needs to be local as the cache of reusable itself will be COWed,
 | 
				
			||||||
 | 
						 * leading to the child closing an object without the parent knowing.
 | 
				
			||||||
 | 
						 */
 | 
				
			||||||
 | 
						igt_fork(child, 1) {
 | 
				
			||||||
 | 
							buffers->bufmgr = drm_intel_bufmgr_gem_init(fd, 4096);
 | 
				
			||||||
 | 
							drm_intel_bufmgr_gem_enable_reuse(buffers->bufmgr);
 | 
				
			||||||
 | 
							batch = intel_batchbuffer_alloc(buffers->bufmgr, devid);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		do_test_func(buffers, do_copy_func, do_hang_func);
 | 
							do_test_func(buffers, do_copy_func, do_hang_func);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							intel_batchbuffer_free(batch);
 | 
				
			||||||
 | 
							drm_intel_bufmgr_destroy(buffers->bufmgr);
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	igt_waitchildren();
 | 
						igt_waitchildren();
 | 
				
			||||||
	igt_assert_eq(intel_detect_and_clear_missed_interrupts(fd), 0);
 | 
						igt_assert_eq(intel_detect_and_clear_missed_interrupts(fd), 0);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user