From f01c36986e22de0f4a049bf6897dd276b17a18ba Mon Sep 17 00:00:00 2001 From: Alex Waterman Date: Wed, 8 Mar 2017 16:52:26 -0800 Subject: gpu: nvgpu: Use new kmem API functions (boardobj/*) Use the new kmem API functions in boardobj/*. Add a struct gk20a pointer to the boardobj struct to provide the necessary gk20a pointer for freeing the boardobj. Bug 1799159 Bug 1823380 Change-Id: I62d93681bed2671f19435ad64343a44791a1d766 Signed-off-by: Alex Waterman Reviewed-on: http://git-master/r/1318317 Reviewed-by: svccoveritychecker Reviewed-by: Konsta Holtta GVS: Gerrit_Virtual_Submit Reviewed-by: Terje Bergstrom --- drivers/gpu/nvgpu/boardobj/boardobj.c | 10 +++++++--- drivers/gpu/nvgpu/boardobj/boardobj.h | 2 ++ 2 files changed, 9 insertions(+), 3 deletions(-) (limited to 'drivers/gpu/nvgpu') diff --git a/drivers/gpu/nvgpu/boardobj/boardobj.c b/drivers/gpu/nvgpu/boardobj/boardobj.c index 0fa8f6b6..b955f2b4 100644 --- a/drivers/gpu/nvgpu/boardobj/boardobj.c +++ b/drivers/gpu/nvgpu/boardobj/boardobj.c @@ -11,10 +11,13 @@ * more details. */ -#include "gk20a/gk20a.h" #include #include #include + +#include + +#include "gk20a/gk20a.h" #include "boardobj.h" #include "ctrl/ctrlboardobj.h" @@ -30,12 +33,13 @@ u32 boardobj_construct_super(struct gk20a *g, struct boardobj **ppboardobj, return -EINVAL; if (*ppboardobj == NULL) { - *ppboardobj = kzalloc(size, GFP_KERNEL); + *ppboardobj = nvgpu_kzalloc(g, size); if (*ppboardobj == NULL) return -ENOMEM; } pboardobj = *ppboardobj; + pboardobj->g = g; pboardobj->type = devtmp->type; pboardobj->idx = CTRL_BOARDOBJ_IDX_INVALID; pboardobj->type_mask = BIT(pboardobj->type) | devtmp->type_mask; @@ -52,7 +56,7 @@ u32 boardobj_destruct_super(struct boardobj *pboardobj) gk20a_dbg_info(""); if (pboardobj == NULL) return -EINVAL; - kfree(pboardobj); + nvgpu_kfree(pboardobj->g, pboardobj); return 0; } diff --git a/drivers/gpu/nvgpu/boardobj/boardobj.h b/drivers/gpu/nvgpu/boardobj/boardobj.h index 138b3acc..16dbf6b4 100644 --- a/drivers/gpu/nvgpu/boardobj/boardobj.h +++ b/drivers/gpu/nvgpu/boardobj/boardobj.h @@ -60,6 +60,8 @@ typedef u32 boardobj_destruct(struct boardobj *pboardobj); */ struct boardobj { + struct gk20a *g; + u8 type; /*type of the device*/ u8 idx; /*index of boardobj within in its group*/ u32 type_mask; /*mask of types this boardobjimplements*/ -- cgit v1.2.2