svm_range
svm_migrate_get_vram_page(struct svm_range *prange, unsigned long pfn)
svm_migrate_copy_to_vram(struct kfd_node *node, struct svm_range *prange,
svm_migrate_vma_to_vram(struct kfd_node *node, struct svm_range *prange,
svm_migrate_ram_to_vram(struct svm_range *prange, uint32_t best_loc,
svm_migrate_copy_to_ram(struct amdgpu_device *adev, struct svm_range *prange,
svm_migrate_vma_to_ram(struct kfd_node *node, struct svm_range *prange,
int svm_migrate_vram_to_ram(struct svm_range *prange, struct mm_struct *mm,
svm_migrate_vram_to_vram(struct svm_range *prange, uint32_t best_loc,
svm_migrate_to_vram(struct svm_range *prange, uint32_t best_loc,
struct svm_range *prange;
int svm_migrate_to_vram(struct svm_range *prange, uint32_t best_loc,
int svm_migrate_vram_to_ram(struct svm_range *prange, struct mm_struct *mm,
struct svm_range *prange, *pchild;
prange = container_of(node, struct svm_range, it_node);
struct svm_range *prange;
svm_range_split_nodes(struct svm_range *new, struct svm_range *old,
svm_range_split_adjust(struct svm_range *new, struct svm_range *old,
svm_range_add_notifier_locked(struct mm_struct *mm, struct svm_range *prange)
svm_range_split(struct svm_range *prange, uint64_t start, uint64_t last,
struct svm_range **new)
svm_range_split_tail(struct svm_range *prange, uint64_t new_last,
struct svm_range *tail = NULL;
svm_range_split_head(struct svm_range *prange, uint64_t new_start,
struct svm_range *head = NULL;
svm_range_add_child(struct svm_range *prange, struct svm_range *pchild, enum svm_work_list_ops op)
struct svm_range *prange, int domain)
static void svm_range_add_to_svms(struct svm_range *prange)
svm_range_unmap_from_gpus(struct svm_range *prange, unsigned long start,
static void svm_range_remove_notifier(struct svm_range *prange)
svm_range_map_to_gpu(struct kfd_process_device *pdd, struct svm_range *prange,
svm_range_map_to_gpus(struct svm_range *prange, unsigned long offset,
struct svm_range *prange;
svm_range_dma_map_dev(struct amdgpu_device *adev, struct svm_range *prange,
struct svm_range *prange, int32_t gpuidx,
struct svm_range *prange;
svm_range_evict(struct svm_range *prange, struct mm_struct *mm,
struct svm_range *pchild;
svm_range_dma_map(struct svm_range *prange, unsigned long *bitmap,
static struct svm_range *svm_range_clone(struct svm_range *old)
struct svm_range *new;
struct svm_range *prange;
struct svm_range *prange;
struct svm_range *tmp;
prange = container_of(node, struct svm_range, it_node);
struct svm_range *old = prange;
struct svm_range *prange)
svm_range_handle_list_op(struct svm_range_list *svms, struct svm_range *prange,
struct svm_range *prange;
struct svm_range, deferred_list);
struct svm_range *pchild;
struct svm_range, child_list);
svm_range_add_list_work(struct svm_range_list *svms, struct svm_range *prange,
svm_range_unmap_split(struct svm_range *parent, struct svm_range *prange, unsigned long start,
struct svm_range *head;
struct svm_range *tail;
svm_range_unmap_from_cpu(struct mm_struct *mm, struct svm_range *prange,
void svm_range_dma_unmap(struct svm_range *prange)
struct svm_range *pchild;
struct svm_range *prange;
prange = container_of(mni, struct svm_range, notifier);
struct svm_range *
struct svm_range **parent)
struct svm_range *prange;
struct svm_range *pchild;
prange = container_of(node, struct svm_range, it_node);
svm_range_best_restore_location(struct svm_range *prange,
static void svm_range_free(struct svm_range *prange, bool do_unmap)
svm_range *svm_range_create_unregistered_range(struct kfd_node *node,
struct svm_range *prange = NULL;
static bool svm_range_skip_recover(struct svm_range *prange)
struct svm_range *prange;
svm_range *svm_range_new(struct svm_range_list *svms, uint64_t start,
struct svm_range *prange, *pchild;
struct svm_range *prange;
struct svm_range *prange;
struct svm_range *next;
svm_range_best_prefetch_location(struct svm_range *prange)
svm_range_trigger_migration(struct mm_struct *mm, struct svm_range *prange,
struct svm_range *prange =
struct svm_range, svm_bo_list);
struct svm_range *prange;
struct svm_range *next;
struct svm_range *prange;
struct svm_range *prange =
struct svm_range, svm_bo_list);
prange = container_of(node, struct svm_range, it_node);
struct svm_range *prange;
struct svm_range *prange;
svm_range_validate_svm_bo(struct kfd_node *node, struct svm_range *prange)
svm_range_vram_node_new(struct kfd_node *node, struct svm_range *prange,
void svm_range_vram_node_free(struct svm_range *prange)
svm_range_get_node_by_id(struct svm_range *prange, uint32_t gpu_id)
svm_range_get_pdd_by_node(struct svm_range *prange, struct kfd_node *node)
svm_range_apply_attrs(struct kfd_process *p, struct svm_range *prange,
svm_range_is_same_attrs(struct kfd_process *p, struct svm_range *prange,
struct svm_range *prange;
prange = container_of(node, struct svm_range, it_node);
static void svm_range_unlink(struct svm_range *prange)
svm_range_copy_dma_addrs(struct svm_range *dst, struct svm_range *src)
svm_range_split_pages(struct svm_range *new, struct svm_range *old,
static inline void svm_range_lock(struct svm_range *prange)
static inline void svm_range_unlock(struct svm_range *prange)
struct svm_range *svm_range_from_addr(struct svm_range_list *svms,
struct svm_range **parent);
struct kfd_node *svm_range_get_node_by_id(struct svm_range *prange,
int svm_range_vram_node_new(struct kfd_node *node, struct svm_range *prange,
void svm_range_vram_node_free(struct svm_range *prange);
struct svm_range *prange, struct mm_struct *mm,
void svm_range_dma_unmap(struct svm_range *prange);
svm_range_get_pdd_by_node(struct svm_range *prange, struct kfd_node *node);
struct xe_svm_range *svm_range;
svm_range = xe_svm_range_find_or_insert(vm, addr, vma, &ctx);
if (PTR_ERR(svm_range) == -ENOENT) {
if (IS_ERR(svm_range)) {
err = PTR_ERR(svm_range);
if (xe_svm_range_validate(vm, svm_range, tile_mask, dpagemap)) {
xe_svm_range_debug(svm_range, "PREFETCH - RANGE IS VALID");
&i, svm_range, xa_limit_32b,
xe_svm_range_debug(svm_range, "PREFETCH - RANGE CREATED");
if (range_end > xe_svm_range_end(svm_range) &&
xe_svm_range_end(svm_range) < xe_vma_end(vma)) {
addr = xe_svm_range_end(svm_range);
struct xe_svm_range *svm_range;
xa_for_each(&op->prefetch_range.range, i, svm_range) {
xe_svm_range_migrate_to_smem(vm, svm_range);
xe_svm_range_start(svm_range), xe_svm_range_end(svm_range));
if (xe_svm_range_needs_migrate_to_vram(svm_range, vma, dpagemap)) {
err = xe_svm_alloc_vram(svm_range, &ctx, dpagemap);
xe_svm_range_debug(svm_range, "PREFETCH - RANGE MIGRATED TO VRAM");
err = xe_svm_range_get_pages(vm, svm_range, &ctx);
xe_svm_range_debug(svm_range, "PREFETCH - RANGE GET PAGES DONE");