summaryrefslogtreecommitdiffstats
path: root/drivers/gpu/nvgpu/gk20a/gk20a_allocator.h
diff options
context:
space:
mode:
authorTerje Bergstrom <tbergstrom@nvidia.com>2014-06-27 08:23:40 -0400
committerDan Willemsen <dwillemsen@nvidia.com>2015-03-18 15:12:08 -0400
commit4c021b1dfbb5e422d82370087f0813997e864f00 (patch)
tree836bda5e770c039c27787e8dae62debae45804ee /drivers/gpu/nvgpu/gk20a/gk20a_allocator.h
parentcc6ccd2e3fc1b097465e093a6294748113ab2cc7 (diff)
gpu: nvgpu: Replace allocator with bitmap alloc
Replace gk20a allocator with Linux bitmap allocator. Change-Id: Iba5e28f68ab5cf19e2c033005efd7f9da6e4a5b6 Signed-off-by: Terje Bergstrom <tbergstrom@nvidia.com> Reviewed-on: http://git-master/r/554184
Diffstat (limited to 'drivers/gpu/nvgpu/gk20a/gk20a_allocator.h')
-rw-r--r--drivers/gpu/nvgpu/gk20a/gk20a_allocator.h25
1 files changed, 2 insertions, 23 deletions
diff --git a/drivers/gpu/nvgpu/gk20a/gk20a_allocator.h b/drivers/gpu/nvgpu/gk20a/gk20a_allocator.h
index 5621800e..154f953a 100644
--- a/drivers/gpu/nvgpu/gk20a/gk20a_allocator.h
+++ b/drivers/gpu/nvgpu/gk20a/gk20a_allocator.h
@@ -33,6 +33,8 @@ struct gk20a_allocator {
33 u32 limit; /* max value = limit - 1 */ 33 u32 limit; /* max value = limit - 1 */
34 u32 align; /* alignment size, power of 2 */ 34 u32 align; /* alignment size, power of 2 */
35 35
36 unsigned long *bitmap; /* bitmap */
37
36 struct gk20a_alloc_block *block_first; /* first block in list */ 38 struct gk20a_alloc_block *block_first; /* first block in list */
37 struct gk20a_alloc_block *block_recent; /* last visited block */ 39 struct gk20a_alloc_block *block_recent; /* last visited block */
38 40
@@ -62,29 +64,6 @@ struct gk20a_allocator {
62 64
63}; 65};
64 66
65/* a block of linear space range [start, end) */
66struct gk20a_alloc_block {
67 struct gk20a_allocator *allocator; /* parent allocator */
68 struct rb_node rb; /* rb tree node */
69
70 u32 start; /* linear space range
71 [start, end) */
72 u32 end;
73
74 void *priv; /* backing structure for this
75 linear space block
76 page table, comp tag, etc */
77
78 struct gk20a_alloc_block *prev; /* prev block with lower address */
79 struct gk20a_alloc_block *next; /* next block with higher address */
80
81 bool nc_block;
82 struct gk20a_alloc_block *nc_prev; /* prev block for
83 non-contiguous allocation */
84 struct gk20a_alloc_block *nc_next; /* next block for
85 non-contiguous allocation */
86};
87
88int gk20a_allocator_init(struct gk20a_allocator *allocator, 67int gk20a_allocator_init(struct gk20a_allocator *allocator,
89 const char *name, u32 base, u32 size, u32 align); 68 const char *name, u32 base, u32 size, u32 align);
90void gk20a_allocator_destroy(struct gk20a_allocator *allocator); 69void gk20a_allocator_destroy(struct gk20a_allocator *allocator);