diff options
author | Konsta Holtta <kholtta@nvidia.com> | 2016-09-20 06:34:52 -0400 |
---|---|---|
committer | mobile promotions <svcmobile_promotions@nvidia.com> | 2016-10-14 11:12:34 -0400 |
commit | fa6ab1943e2977c64f62ba5b9c05b6d7fba234f3 (patch) | |
tree | 6fd04ad08ee38c0cc66ed34e12e21a9ac07e41c9 /drivers/gpu/nvgpu/gk20a/mm_gk20a.c | |
parent | 4d07572c8279f199c220e7c606cc9ffb73216d83 (diff) |
gpu: nvgpu: add ioctl for querying memory state
Add NVGPU_GPU_IOCTL_GET_MEMORY_STATE to read the amount of free
device-local video memory, if applicable.
Some reserved fields are added to support different types of queries in
the future (e.g. context-local free amount).
Bug 1787771
Bug 200233138
Change-Id: Id5ffd02ad4d6ed3a6dc196541938573c27b340ac
Signed-off-by: Konsta Holtta <kholtta@nvidia.com>
Reviewed-on: http://git-master/r/1223762
(cherry picked from commit 96221d96c7972c6387944603e974f7639d6dbe70)
Reviewed-on: http://git-master/r/1235980
Reviewed-by: mobile promotions <svcmobile_promotions@nvidia.com>
Tested-by: mobile promotions <svcmobile_promotions@nvidia.com>
Diffstat (limited to 'drivers/gpu/nvgpu/gk20a/mm_gk20a.c')
-rw-r--r-- | drivers/gpu/nvgpu/gk20a/mm_gk20a.c | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/drivers/gpu/nvgpu/gk20a/mm_gk20a.c b/drivers/gpu/nvgpu/gk20a/mm_gk20a.c index f46f7a81..ff9bb5e2 100644 --- a/drivers/gpu/nvgpu/gk20a/mm_gk20a.c +++ b/drivers/gpu/nvgpu/gk20a/mm_gk20a.c | |||
@@ -2276,6 +2276,26 @@ err_kfree: | |||
2276 | #endif | 2276 | #endif |
2277 | } | 2277 | } |
2278 | 2278 | ||
2279 | int gk20a_vidmem_get_space(struct gk20a *g, u64 *space) | ||
2280 | { | ||
2281 | #if defined(CONFIG_GK20A_VIDMEM) | ||
2282 | struct gk20a_allocator *allocator = &g->mm.vidmem.allocator; | ||
2283 | |||
2284 | gk20a_dbg_fn(""); | ||
2285 | |||
2286 | if (!gk20a_alloc_initialized(allocator)) | ||
2287 | return -ENOSYS; | ||
2288 | |||
2289 | mutex_lock(&g->mm.vidmem.clear_list_mutex); | ||
2290 | *space = gk20a_alloc_space(allocator) + | ||
2291 | atomic64_read(&g->mm.vidmem.bytes_pending); | ||
2292 | mutex_unlock(&g->mm.vidmem.clear_list_mutex); | ||
2293 | return 0; | ||
2294 | #else | ||
2295 | return -ENOSYS; | ||
2296 | #endif | ||
2297 | } | ||
2298 | |||
2279 | static u64 gk20a_mm_get_align(struct gk20a *g, struct scatterlist *sgl, | 2299 | static u64 gk20a_mm_get_align(struct gk20a *g, struct scatterlist *sgl, |
2280 | enum gk20a_aperture aperture) | 2300 | enum gk20a_aperture aperture) |
2281 | { | 2301 | { |