mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2026-05-10 05:39:42 -04:00
drm/xe: Make xe_svm_alloc_vram public
This function will be used in prefetch too, hence make it public. v2: - Add kernel-doc (Matthew Brost) - Rebase v3: - Move CONFIG_DRM_XE_DEVMEM_MIRROR stub out to xe_svm.c (Matthew Brost) Reviewed-by: Matthew Brost <matthew.brost@intel.com> Acked-by: Thomas Hellström <thomas.hellstrom@linux.intel.com> Link: https://lore.kernel.org/r/20250513040228.470682-3-himal.prasad.ghimiray@intel.com Signed-off-by: Himal Prasad Ghimiray <himal.prasad.ghimiray@intel.com>
This commit is contained in:
@@ -677,9 +677,19 @@ static struct xe_vram_region *tile_to_vr(struct xe_tile *tile)
|
||||
return &tile->mem.vram;
|
||||
}
|
||||
|
||||
static int xe_svm_alloc_vram(struct xe_vm *vm, struct xe_tile *tile,
|
||||
struct xe_svm_range *range,
|
||||
const struct drm_gpusvm_ctx *ctx)
|
||||
/**
|
||||
* xe_svm_alloc_vram()- Allocate device memory pages for range,
|
||||
* migrating existing data.
|
||||
* @vm: The VM.
|
||||
* @tile: tile to allocate vram from
|
||||
* @range: SVM range
|
||||
* @ctx: DRM GPU SVM context
|
||||
*
|
||||
* Return: 0 on success, error code on failure.
|
||||
*/
|
||||
int xe_svm_alloc_vram(struct xe_vm *vm, struct xe_tile *tile,
|
||||
struct xe_svm_range *range,
|
||||
const struct drm_gpusvm_ctx *ctx)
|
||||
{
|
||||
struct mm_struct *mm = vm->svm.gpusvm.mm;
|
||||
struct xe_vram_region *vr = tile_to_vr(tile);
|
||||
@@ -733,13 +743,6 @@ static int xe_svm_alloc_vram(struct xe_vm *vm, struct xe_tile *tile,
|
||||
|
||||
return err;
|
||||
}
|
||||
#else
|
||||
static int xe_svm_alloc_vram(struct xe_vm *vm, struct xe_tile *tile,
|
||||
struct xe_svm_range *range,
|
||||
const struct drm_gpusvm_ctx *ctx)
|
||||
{
|
||||
return -EOPNOTSUPP;
|
||||
}
|
||||
#endif
|
||||
|
||||
static bool supports_4K_migration(struct xe_device *xe)
|
||||
@@ -1025,6 +1028,13 @@ int xe_devm_add(struct xe_tile *tile, struct xe_vram_region *vr)
|
||||
return 0;
|
||||
}
|
||||
#else
|
||||
int xe_svm_alloc_vram(struct xe_vm *vm, struct xe_tile *tile,
|
||||
struct xe_svm_range *range,
|
||||
const struct drm_gpusvm_ctx *ctx)
|
||||
{
|
||||
return -EOPNOTSUPP;
|
||||
}
|
||||
|
||||
int xe_devm_add(struct xe_tile *tile, struct xe_vram_region *vr)
|
||||
{
|
||||
return 0;
|
||||
|
||||
@@ -70,6 +70,9 @@ int xe_svm_bo_evict(struct xe_bo *bo);
|
||||
|
||||
void xe_svm_range_debug(struct xe_svm_range *range, const char *operation);
|
||||
|
||||
int xe_svm_alloc_vram(struct xe_vm *vm, struct xe_tile *tile,
|
||||
struct xe_svm_range *range,
|
||||
const struct drm_gpusvm_ctx *ctx);
|
||||
/**
|
||||
* xe_svm_range_has_dma_mapping() - SVM range has DMA mapping
|
||||
* @range: SVM range
|
||||
@@ -97,6 +100,7 @@ void xe_svm_flush(struct xe_vm *vm);
|
||||
#include <linux/interval_tree.h>
|
||||
|
||||
struct drm_pagemap_device_addr;
|
||||
struct drm_gpusvm_ctx;
|
||||
struct xe_bo;
|
||||
struct xe_gt;
|
||||
struct xe_vm;
|
||||
@@ -167,6 +171,14 @@ void xe_svm_range_debug(struct xe_svm_range *range, const char *operation)
|
||||
{
|
||||
}
|
||||
|
||||
static inline
|
||||
int xe_svm_alloc_vram(struct xe_vm *vm, struct xe_tile *tile,
|
||||
struct xe_svm_range *range,
|
||||
const struct drm_gpusvm_ctx *ctx)
|
||||
{
|
||||
return -EOPNOTSUPP;
|
||||
}
|
||||
|
||||
#define xe_svm_assert_in_notifier(...) do {} while (0)
|
||||
#define xe_svm_range_has_dma_mapping(...) false
|
||||
|
||||
|
||||
Reference in New Issue
Block a user