mirror of
https://github.com/torvalds/linux.git
synced 2026-05-31 02:24:24 +02:00
drm/xe: Handle mixed mappings and existing VRAM on atomic faults
Moving to VRAM will fail if mixed mappings are present or if the page is already located in VRAM. Atomic faults that require a move to VRAM currently retry without attempting to evict mixed mappings or locate existing VRAM mappings. This patch fixes the issue by attempting to evict mixed mappings or find existing VRAM pages when a move to VRAM fails during atomic fault handling. Fixes:a9ac0fa455("drm/xe: Strict migration policy for atomic SVM faults") Signed-off-by: Matthew Brost <matthew.brost@intel.com> Reviewed-by: Himal Prasad Ghimiray <himal.prasad.ghimiray@intel.com> Link: https://lore.kernel.org/r/20251009130629.3531962-1-matthew.brost@intel.com (cherry picked from commit75188605c5) Signed-off-by: Lucas De Marchi <lucas.demarchi@intel.com>
This commit is contained in:
parent
1117e7d1e8
commit
7413e9f2be
|
|
@ -1073,7 +1073,17 @@ static int __xe_svm_handle_pagefault(struct xe_vm *vm, struct xe_vma *vma,
|
|||
drm_dbg(&vm->xe->drm,
|
||||
"VRAM allocation failed, falling back to retrying fault, asid=%u, errno=%pe\n",
|
||||
vm->usm.asid, ERR_PTR(err));
|
||||
goto retry;
|
||||
|
||||
/*
|
||||
* In the devmem-only case, mixed mappings may
|
||||
* be found. The get_pages function will fix
|
||||
* these up to a single location, allowing the
|
||||
* page fault handler to make forward progress.
|
||||
*/
|
||||
if (ctx.devmem_only)
|
||||
goto get_pages;
|
||||
else
|
||||
goto retry;
|
||||
} else {
|
||||
drm_err(&vm->xe->drm,
|
||||
"VRAM allocation failed, retry count exceeded, asid=%u, errno=%pe\n",
|
||||
|
|
@ -1083,6 +1093,7 @@ static int __xe_svm_handle_pagefault(struct xe_vm *vm, struct xe_vma *vma,
|
|||
}
|
||||
}
|
||||
|
||||
get_pages:
|
||||
get_pages_start = xe_svm_stats_ktime_get();
|
||||
|
||||
range_debug(range, "GET PAGES");
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user