summaryrefslogtreecommitdiffstats
path: root/drivers/gpu/nvgpu/boardobj
diff options
context:
space:
mode:
authorAlex Waterman <alexw@nvidia.com>2017-03-08 19:52:26 -0500
committermobile promotions <svcmobile_promotions@nvidia.com>2017-03-26 12:55:10 -0400
commitf01c36986e22de0f4a049bf6897dd276b17a18ba (patch)
tree2aad915347ee4312027d10c79625756ec997676d /drivers/gpu/nvgpu/boardobj
parentf403208306c100f16daf8577b585528124f9f004 (diff)
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 <alexw@nvidia.com> Reviewed-on: http://git-master/r/1318317 Reviewed-by: svccoveritychecker <svccoveritychecker@nvidia.com> Reviewed-by: Konsta Holtta <kholtta@nvidia.com> GVS: Gerrit_Virtual_Submit Reviewed-by: Terje Bergstrom <tbergstrom@nvidia.com>
Diffstat (limited to 'drivers/gpu/nvgpu/boardobj')
-rw-r--r--drivers/gpu/nvgpu/boardobj/boardobj.c10
-rw-r--r--drivers/gpu/nvgpu/boardobj/boardobj.h2
2 files changed, 9 insertions, 3 deletions
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 @@
11 * more details. 11 * more details.
12 */ 12 */
13 13
14#include "gk20a/gk20a.h"
15#include <linux/firmware.h> 14#include <linux/firmware.h>
16#include <linux/module.h> 15#include <linux/module.h>
17#include <linux/uaccess.h> 16#include <linux/uaccess.h>
17
18#include <nvgpu/kmem.h>
19
20#include "gk20a/gk20a.h"
18#include "boardobj.h" 21#include "boardobj.h"
19#include "ctrl/ctrlboardobj.h" 22#include "ctrl/ctrlboardobj.h"
20 23
@@ -30,12 +33,13 @@ u32 boardobj_construct_super(struct gk20a *g, struct boardobj **ppboardobj,
30 return -EINVAL; 33 return -EINVAL;
31 34
32 if (*ppboardobj == NULL) { 35 if (*ppboardobj == NULL) {
33 *ppboardobj = kzalloc(size, GFP_KERNEL); 36 *ppboardobj = nvgpu_kzalloc(g, size);
34 if (*ppboardobj == NULL) 37 if (*ppboardobj == NULL)
35 return -ENOMEM; 38 return -ENOMEM;
36 } 39 }
37 40
38 pboardobj = *ppboardobj; 41 pboardobj = *ppboardobj;
42 pboardobj->g = g;
39 pboardobj->type = devtmp->type; 43 pboardobj->type = devtmp->type;
40 pboardobj->idx = CTRL_BOARDOBJ_IDX_INVALID; 44 pboardobj->idx = CTRL_BOARDOBJ_IDX_INVALID;
41 pboardobj->type_mask = BIT(pboardobj->type) | devtmp->type_mask; 45 pboardobj->type_mask = BIT(pboardobj->type) | devtmp->type_mask;
@@ -52,7 +56,7 @@ u32 boardobj_destruct_super(struct boardobj *pboardobj)
52 gk20a_dbg_info(""); 56 gk20a_dbg_info("");
53 if (pboardobj == NULL) 57 if (pboardobj == NULL)
54 return -EINVAL; 58 return -EINVAL;
55 kfree(pboardobj); 59 nvgpu_kfree(pboardobj->g, pboardobj);
56 return 0; 60 return 0;
57} 61}
58 62
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);
60*/ 60*/
61 61
62struct boardobj { 62struct boardobj {
63 struct gk20a *g;
64
63 u8 type; /*type of the device*/ 65 u8 type; /*type of the device*/
64 u8 idx; /*index of boardobj within in its group*/ 66 u8 idx; /*index of boardobj within in its group*/
65 u32 type_mask; /*mask of types this boardobjimplements*/ 67 u32 type_mask; /*mask of types this boardobjimplements*/