summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKonsta Holtta <kholtta@nvidia.com>2016-09-20 06:30:53 -0400
committermobile promotions <svcmobile_promotions@nvidia.com>2016-10-14 11:12:26 -0400
commit6fb5481a6b64530474bb378f3a7b1e2b5516fc2c (patch)
tree7de9c002058cb646602634a0dee4b43d996e5c9f
parenta4e4466a0cb3cf3bca369ca09013d68fe8102baf (diff)
gpu: nvgpu: support free space query in allocators
Add gk20a_alloc_space() to query the amount of free memory in bytes in gk20a_allocator. Bug 1787771 Bug 200233138 Change-Id: Ia381cafd5d2dbf394072d07be96991974f9289ae Signed-off-by: Konsta Holtta <kholtta@nvidia.com> Reviewed-on: http://git-master/r/1223760 (cherry picked from commit 0c7fd96acc3e3d581bd25ccbe40b0821a310760f) Reviewed-on: http://git-master/r/1235978 GVS: Gerrit_Virtual_Submit Reviewed-by: Terje Bergstrom <tbergstrom@nvidia.com>
-rw-r--r--drivers/gpu/nvgpu/gk20a/gk20a_allocator.c8
-rw-r--r--drivers/gpu/nvgpu/gk20a/gk20a_allocator.h2
2 files changed, 10 insertions, 0 deletions
diff --git a/drivers/gpu/nvgpu/gk20a/gk20a_allocator.c b/drivers/gpu/nvgpu/gk20a/gk20a_allocator.c
index f8e55788..15d5b732 100644
--- a/drivers/gpu/nvgpu/gk20a/gk20a_allocator.c
+++ b/drivers/gpu/nvgpu/gk20a/gk20a_allocator.c
@@ -59,6 +59,14 @@ u64 gk20a_alloc_end(struct gk20a_allocator *a)
59 return 0; 59 return 0;
60} 60}
61 61
62u64 gk20a_alloc_space(struct gk20a_allocator *a)
63{
64 if (a->ops->space)
65 return a->ops->space(a);
66
67 return 0;
68}
69
62u64 gk20a_alloc(struct gk20a_allocator *a, u64 len) 70u64 gk20a_alloc(struct gk20a_allocator *a, u64 len)
63{ 71{
64 return a->ops->alloc(a, len); 72 return a->ops->alloc(a, len);
diff --git a/drivers/gpu/nvgpu/gk20a/gk20a_allocator.h b/drivers/gpu/nvgpu/gk20a/gk20a_allocator.h
index 40388ef8..dc065ffa 100644
--- a/drivers/gpu/nvgpu/gk20a/gk20a_allocator.h
+++ b/drivers/gpu/nvgpu/gk20a/gk20a_allocator.h
@@ -61,6 +61,7 @@ struct gk20a_allocator_ops {
61 u64 (*length)(struct gk20a_allocator *allocator); 61 u64 (*length)(struct gk20a_allocator *allocator);
62 u64 (*end)(struct gk20a_allocator *allocator); 62 u64 (*end)(struct gk20a_allocator *allocator);
63 int (*inited)(struct gk20a_allocator *allocator); 63 int (*inited)(struct gk20a_allocator *allocator);
64 u64 (*space)(struct gk20a_allocator *allocator);
64 65
65 /* Destructor. */ 66 /* Destructor. */
66 void (*fini)(struct gk20a_allocator *allocator); 67 void (*fini)(struct gk20a_allocator *allocator);
@@ -223,6 +224,7 @@ u64 gk20a_alloc_base(struct gk20a_allocator *a);
223u64 gk20a_alloc_length(struct gk20a_allocator *a); 224u64 gk20a_alloc_length(struct gk20a_allocator *a);
224u64 gk20a_alloc_end(struct gk20a_allocator *a); 225u64 gk20a_alloc_end(struct gk20a_allocator *a);
225u64 gk20a_alloc_initialized(struct gk20a_allocator *a); 226u64 gk20a_alloc_initialized(struct gk20a_allocator *a);
227u64 gk20a_alloc_space(struct gk20a_allocator *a);
226 228
227void gk20a_alloc_destroy(struct gk20a_allocator *allocator); 229void gk20a_alloc_destroy(struct gk20a_allocator *allocator);
228 230