My Project
mali_kbase_mem_linux.h
Go to the documentation of this file.
1 /*
2  *
3  * (C) COPYRIGHT 2010, 2012-2016 ARM Limited. All rights reserved.
4  *
5  * This program is free software and is provided to you under the terms of the
6  * GNU General Public License version 2 as published by the Free Software
7  * Foundation, and any use by you of this program is subject to the terms
8  * of such GNU licence.
9  *
10  * A copy of the licence is included with the program, and can also be obtained
11  * from Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
12  * Boston, MA 02110-1301, USA.
13  *
14  */
15 
16 
17 
18 
19 
25 #ifndef _KBASE_MEM_LINUX_H_
26 #define _KBASE_MEM_LINUX_H_
27 
30  void *cpu_va;
31  dma_addr_t dma_pa;
32  size_t size;
33 };
34 
35 struct kbase_va_region *kbase_mem_alloc(struct kbase_context *kctx,
36  u64 va_pages, u64 commit_pages, u64 extent, u64 *flags,
37  u64 *gpu_va);
38 int kbase_mem_query(struct kbase_context *kctx, u64 gpu_addr, int query, u64 *const pages);
39 int kbase_mem_import(struct kbase_context *kctx, enum base_mem_import_type type,
40  void __user *phandle, u64 *gpu_va, u64 *va_pages,
41  u64 *flags);
42 u64 kbase_mem_alias(struct kbase_context *kctx, u64 *flags, u64 stride, u64 nents, struct base_mem_aliasing_info *ai, u64 *num_pages);
43 int kbase_mem_flags_change(struct kbase_context *kctx, u64 gpu_addr, unsigned int flags, unsigned int mask);
44 int kbase_mem_commit(struct kbase_context *kctx, u64 gpu_addr, u64 new_pages, enum base_backing_threshold_status *failure_reason);
45 int kbase_mmap(struct file *file, struct vm_area_struct *vma);
46 
54 int kbase_mem_evictable_init(struct kbase_context *kctx);
55 
61 void kbase_mem_evictable_deinit(struct kbase_context *kctx);
62 
78  struct kbase_va_region *reg,
79  u64 new_pages, u64 old_pages);
80 
95 int kbase_mem_evictable_make(struct kbase_mem_phy_alloc *gpu_alloc);
96 
112 
114  u64 gpu_addr;
115  struct kbase_mem_phy_alloc *cpu_alloc;
116  struct kbase_mem_phy_alloc *gpu_alloc;
117  phys_addr_t *cpu_pages;
118  phys_addr_t *gpu_pages;
119  void *addr;
120  size_t size;
121  bool is_cached;
122 };
123 
124 
162 void *kbase_vmap_prot(struct kbase_context *kctx, u64 gpu_addr, size_t size,
163  unsigned long prot_request, struct kbase_vmap_struct *map);
164 
185 void *kbase_vmap(struct kbase_context *kctx, u64 gpu_addr, size_t size,
186  struct kbase_vmap_struct *map);
187 
200 void kbase_vunmap(struct kbase_context *kctx, struct kbase_vmap_struct *map);
201 
209 void *kbase_va_alloc(struct kbase_context *kctx, u32 size, struct kbase_hwc_dma_mapping *handle);
210 
216 void kbase_va_free(struct kbase_context *kctx, struct kbase_hwc_dma_mapping *handle);
217 
218 extern const struct vm_operations_struct kbase_vm_ops;
219 #endif /* _KBASE_MEM_LINUX_H_ */
Definition: mali_kbase_mem_linux.h:113
Definition: mali_kbase_defs.h:1340
base_mem_import_type
Definition: mali_base_kernel.h:233
bool kbase_mem_evictable_unmake(struct kbase_mem_phy_alloc *alloc)
Definition: mali_kbase_mem_linux.c:667
void * kbase_vmap_prot(struct kbase_context *kctx, u64 gpu_addr, size_t size, unsigned long prot_request, struct kbase_vmap_struct *map)
Definition: mali_kbase_mem_linux.c:2251
int kbase_mem_evictable_make(struct kbase_mem_phy_alloc *gpu_alloc)
Definition: mali_kbase_mem_linux.c:642
Memory aliasing info.
Definition: mali_base_kernel.h:398
Definition: mali_kbase_mem.h:108
base_backing_threshold_status
Result codes of changing the size of the backing store allocated to a tmem region.
Definition: mali_base_kernel.h:297
int kbase_mem_grow_gpu_mapping(struct kbase_context *kctx, struct kbase_va_region *reg, u64 new_pages, u64 old_pages)
Definition: mali_kbase_mem_linux.c:1518
void kbase_vunmap(struct kbase_context *kctx, struct kbase_vmap_struct *map)
Definition: mali_kbase_mem_linux.c:2385
int kbase_mem_evictable_init(struct kbase_context *kctx)
Definition: mali_kbase_mem_linux.c:434
void * kbase_va_alloc(struct kbase_context *kctx, u32 size, struct kbase_hwc_dma_mapping *handle)
Allocate memory from kernel space and map it onto the GPU.
Definition: mali_kbase_mem_linux.c:2519
Definition: mali_kbase_mem.h:206
void kbase_mem_evictable_deinit(struct kbase_context *kctx)
Definition: mali_kbase_mem_linux.c:456
Definition: mali_kbase_mem_linux.h:29
void * kbase_vmap(struct kbase_context *kctx, u64 gpu_addr, size_t size, struct kbase_vmap_struct *map)
Definition: mali_kbase_mem_linux.c:2373
void kbase_va_free(struct kbase_context *kctx, struct kbase_hwc_dma_mapping *handle)
Free/unmap memory allocated by kbase_va_alloc.
Definition: mali_kbase_mem_linux.c:2612