We must use migrate engine for page fault binds in order to avoid a
deadlock as the migrate engine has a reserved BCS instance which cannot
be stuck on a fault. To use the migrate engine the engine argument to
xe_migrate_update_pgtables must be NULL, this was incorrectly wired up
so vm->eng[tile_id] was always being used. Fix this.
Reviewed-by: Rodrigo Vivi <rodrigo.vivi@intel.com>
Signed-off-by: Matthew Brost <matthew.brost@intel.com>
Signed-off-by: Rodrigo Vivi <rodrigo.vivi@intel.com>
}
fence = xe_migrate_update_pgtables(tile->migrate,
- vm, xe_vma_bo(vma),
- e ? e : vm->eng[tile->id],
+ vm, xe_vma_bo(vma), e,
entries, num_entries,
syncs, num_syncs,
&bind_pt_update.base);
if (!(vma->tile_mask & BIT(id)))
goto next;
- fence = __xe_pt_bind_vma(tile, vma, e, first_op ? syncs : NULL,
+ fence = __xe_pt_bind_vma(tile, vma, e ? e : vm->eng[id],
+ first_op ? syncs : NULL,
first_op ? num_syncs : 0,
vma->tile_present & BIT(id));
if (IS_ERR(fence)) {