mirror of
https://github.com/torvalds/linux.git
synced 2026-05-28 17:13:52 +02:00
drm/xe: Avoid the OOM killer on buffer object memory allocation
Rather than invoking the OOM killer on buffer object memory allocations and validations, have the allocations fail and pass the error to user-space if applicable. Cc: Maarten Lankhorst <maarten.lankhorst@linux.intel.com> Link: https://gitlab.freedesktop.org/drm/xe/kernel/-/issues/2701 Signed-off-by: Thomas Hellström <thomas.hellstrom@linux.intel.com> Reviewed-by: Matthew Brost <matthew.brost@intel.com> Link: https://patchwork.freedesktop.org/patch/msgid/20241031153732.164995-2-thomas.hellstrom@linux.intel.com
This commit is contained in:
parent
e1f6fa5566
commit
6bd49cc1a8
|
|
@ -876,6 +876,7 @@ int xe_bo_evict_pinned(struct xe_bo *bo)
|
|||
};
|
||||
struct ttm_operation_ctx ctx = {
|
||||
.interruptible = false,
|
||||
.gfp_retry_mayfail = true,
|
||||
};
|
||||
struct ttm_resource *new_mem;
|
||||
int ret;
|
||||
|
|
@ -937,6 +938,7 @@ int xe_bo_restore_pinned(struct xe_bo *bo)
|
|||
{
|
||||
struct ttm_operation_ctx ctx = {
|
||||
.interruptible = false,
|
||||
.gfp_retry_mayfail = false,
|
||||
};
|
||||
struct ttm_resource *new_mem;
|
||||
int ret;
|
||||
|
|
@ -1099,7 +1101,8 @@ static void xe_ttm_bo_purge(struct ttm_buffer_object *ttm_bo, struct ttm_operati
|
|||
static void xe_ttm_bo_swap_notify(struct ttm_buffer_object *ttm_bo)
|
||||
{
|
||||
struct ttm_operation_ctx ctx = {
|
||||
.interruptible = false
|
||||
.interruptible = false,
|
||||
.gfp_retry_mayfail = false,
|
||||
};
|
||||
|
||||
if (ttm_bo->ttm) {
|
||||
|
|
@ -1294,6 +1297,7 @@ struct xe_bo *___xe_bo_create_locked(struct xe_device *xe, struct xe_bo *bo,
|
|||
struct ttm_operation_ctx ctx = {
|
||||
.interruptible = true,
|
||||
.no_wait_gpu = false,
|
||||
.gfp_retry_mayfail = true,
|
||||
};
|
||||
struct ttm_placement *placement;
|
||||
uint32_t alignment;
|
||||
|
|
@ -1897,6 +1901,7 @@ int xe_bo_validate(struct xe_bo *bo, struct xe_vm *vm, bool allow_res_evict)
|
|||
struct ttm_operation_ctx ctx = {
|
||||
.interruptible = true,
|
||||
.no_wait_gpu = false,
|
||||
.gfp_retry_mayfail = true,
|
||||
};
|
||||
|
||||
if (vm) {
|
||||
|
|
@ -2240,6 +2245,7 @@ int xe_bo_migrate(struct xe_bo *bo, u32 mem_type)
|
|||
struct ttm_operation_ctx ctx = {
|
||||
.interruptible = true,
|
||||
.no_wait_gpu = false,
|
||||
.gfp_retry_mayfail = true,
|
||||
};
|
||||
struct ttm_placement placement;
|
||||
struct ttm_place requested;
|
||||
|
|
@ -2290,6 +2296,7 @@ int xe_bo_evict(struct xe_bo *bo, bool force_alloc)
|
|||
.interruptible = false,
|
||||
.no_wait_gpu = false,
|
||||
.force_alloc = force_alloc,
|
||||
.gfp_retry_mayfail = true,
|
||||
};
|
||||
struct ttm_placement placement;
|
||||
int ret;
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user