struct dma_fence *fence = NULL;
struct dma_fence **fences = NULL;
struct dma_fence_array *cf = NULL;
- int number_tiles = 0, current_fence = 0, n_fence = 0, err;
+ int number_tiles = 0, current_fence = 0, n_fence = 0, err, i;
u8 id;
number_tiles = vm_ops_setup_tile_args(vm, vops);
if (number_tiles == 0)
return ERR_PTR(-ENODATA);
- if (vops->flags & XE_VMA_OPS_FLAG_SKIP_TLB_WAIT) {
- for_each_tile(tile, vm->xe, id)
- ++n_fence;
- } else {
- for_each_tile(tile, vm->xe, id)
- n_fence += (1 + XE_MAX_GT_PER_TILE);
+ for_each_tile(tile, vm->xe, id) {
+ ++n_fence;
+
+ if (!(vops->flags & XE_VMA_OPS_FLAG_SKIP_TLB_WAIT))
+ for_each_tlb_inval(i)
+ ++n_fence;
}
fences = kmalloc_array(n_fence, sizeof(*fences), GFP_KERNEL);
for_each_tile(tile, vm->xe, id) {
struct xe_exec_queue *q = vops->pt_update_ops[tile->id].q;
- int i;
fence = NULL;
if (!vops->pt_update_ops[id].num_ops)