ib_umem_odp
umem = kzalloc(sizeof(struct ib_umem_odp), GFP_KERNEL);
static int ib_umem_notifier_release_trampoline(struct ib_umem_odp *umem_odp,
static int invalidate_page_trampoline(struct ib_umem_odp *item, u64 start,
static int invalidate_range_start_trampoline(struct ib_umem_odp *item,
static int invalidate_range_end_trampoline(struct ib_umem_odp *item, u64 start,
static void add_umem_to_per_mm(struct ib_umem_odp *umem_odp)
static void remove_umem_from_per_mm(struct ib_umem_odp *umem_odp)
static int get_per_mm(struct ib_umem_odp *umem_odp)
void put_per_mm(struct ib_umem_odp *umem_odp)
struct ib_umem_odp *ib_alloc_odp_umem(struct ib_ucontext_per_mm *per_mm,
struct ib_umem_odp *odp_data;
int ib_umem_odp_get(struct ib_umem_odp *umem_odp, int access)
void ib_umem_odp_release(struct ib_umem_odp *umem_odp)
struct ib_umem_odp *umem_odp,
struct ib_umem_odp *umem_odp =
container_of(n, struct ib_umem_odp, interval_tree);
int ib_umem_odp_map_dma_pages(struct ib_umem_odp *umem_odp, u64 user_virt,
struct ib_umem_odp *umem_odp =
void ib_umem_odp_unmap_dma_pages(struct ib_umem_odp *umem_odp, u64 virt,
container_of(n, struct ib_umem_odp, interval_tree);
struct ib_umem_odp *umem;
umem = container_of(node, struct ib_umem_odp, interval_tree);
struct ib_umem_odp *rbt_ib_umem_lookup(struct rb_root_cached *root,
static void ib_umem_notifier_start_account(struct ib_umem_odp *umem_odp)
return container_of(node, struct ib_umem_odp, interval_tree);
static void ib_umem_notifier_end_account(struct ib_umem_odp *umem_odp)
struct ib_umem_odp;
int ib_umem_odp_get(struct ib_umem_odp *umem_odp, int access);
struct ib_umem_odp *ib_alloc_odp_umem(struct ib_ucontext_per_mm *per_mm,
void ib_umem_odp_release(struct ib_umem_odp *umem_odp);
int ib_umem_odp_map_dma_pages(struct ib_umem_odp *umem_odp, u64 start_offset,
void ib_umem_odp_unmap_dma_pages(struct ib_umem_odp *umem_odp, u64 start_offset,
typedef int (*umem_call_back)(struct ib_umem_odp *item, u64 start, u64 end,
struct ib_umem_odp *rbt_ib_umem_lookup(struct rb_root_cached *root,
static inline int ib_umem_mmu_notifier_retry(struct ib_umem_odp *umem_odp,
static inline int ib_umem_odp_get(struct ib_umem_odp *umem_odp, int access)
static inline struct ib_umem_odp *
static inline void ib_umem_odp_release(struct ib_umem_odp *umem_odp) {}
static inline struct ib_umem_odp *to_ib_umem_odp(struct ib_umem *umem)
return container_of(umem, struct ib_umem_odp, umem);
void (*invalidate_range)(struct ib_umem_odp *umem_odp,