summaryrefslogtreecommitdiffstats
path: root/drivers/gpu/nvgpu/gk20a/gk20a_allocator_buddy.c
diff options
context:
space:
mode:
authorKonsta Holtta <kholtta@nvidia.com>2016-09-20 06:32:45 -0400
committermobile promotions <svcmobile_promotions@nvidia.com>2016-10-14 11:12:27 -0400
commit4d07572c8279f199c220e7c606cc9ffb73216d83 (patch)
tree78464a1176273b15de005b61ab758d97a111f1ec /drivers/gpu/nvgpu/gk20a/gk20a_allocator_buddy.c
parent6fb5481a6b64530474bb378f3a7b1e2b5516fc2c (diff)
gpu: nvgpu: add space query in page and buddy allocs
Amount of free space in the buddy allocator is computed from the complete capacity minus currently used bytes. The page allocator just queries its underlying allocator. Bug 1787771 Bug 200233138 Change-Id: I9b6f5ef90119236a13de14e14cd0a3ee72144a11 Signed-off-by: Konsta Holtta <kholtta@nvidia.com> Reviewed-on: http://git-master/r/1223761 (cherry picked from commit 0b324a60ebdf67e793ade869c252a8ddd56c04f8) Reviewed-on: http://git-master/r/1235979 GVS: Gerrit_Virtual_Submit Reviewed-by: Terje Bergstrom <tbergstrom@nvidia.com>
Diffstat (limited to 'drivers/gpu/nvgpu/gk20a/gk20a_allocator_buddy.c')
-rw-r--r--drivers/gpu/nvgpu/gk20a/gk20a_allocator_buddy.c14
1 files changed, 14 insertions, 0 deletions
diff --git a/drivers/gpu/nvgpu/gk20a/gk20a_allocator_buddy.c b/drivers/gpu/nvgpu/gk20a/gk20a_allocator_buddy.c
index f9fb48b5..a8a031be 100644
--- a/drivers/gpu/nvgpu/gk20a/gk20a_allocator_buddy.c
+++ b/drivers/gpu/nvgpu/gk20a/gk20a_allocator_buddy.c
@@ -1090,6 +1090,19 @@ static u64 gk20a_buddy_alloc_end(struct gk20a_allocator *a)
1090 return ba->end; 1090 return ba->end;
1091} 1091}
1092 1092
1093static u64 gk20a_buddy_alloc_space(struct gk20a_allocator *a)
1094{
1095 struct gk20a_buddy_allocator *ba = a->priv;
1096 u64 space;
1097
1098 alloc_lock(a);
1099 space = ba->end - ba->start -
1100 (ba->bytes_alloced_real - ba->bytes_freed);
1101 alloc_unlock(a);
1102
1103 return space;
1104}
1105
1093/* 1106/*
1094 * Print the buddy allocator top level stats. If you pass @s as NULL then the 1107 * Print the buddy allocator top level stats. If you pass @s as NULL then the
1095 * stats are printed to the kernel log. This lets this code be used for 1108 * stats are printed to the kernel log. This lets this code be used for
@@ -1180,6 +1193,7 @@ static const struct gk20a_allocator_ops buddy_ops = {
1180 .length = gk20a_buddy_alloc_length, 1193 .length = gk20a_buddy_alloc_length,
1181 .end = gk20a_buddy_alloc_end, 1194 .end = gk20a_buddy_alloc_end,
1182 .inited = gk20a_buddy_alloc_inited, 1195 .inited = gk20a_buddy_alloc_inited,
1196 .space = gk20a_buddy_alloc_space,
1183 1197
1184 .fini = gk20a_buddy_allocator_destroy, 1198 .fini = gk20a_buddy_allocator_destroy,
1185 1199