diff options
author | Thomas Fleury <tfleury@nvidia.com> | 2017-10-23 18:52:00 -0400 |
---|---|---|
committer | mobile promotions <svcmobile_promotions@nvidia.com> | 2017-11-06 16:40:59 -0500 |
commit | 13093eff52d0ef9071bb09cade01ea064c99468d (patch) | |
tree | 3fb71377826a4280fbfdee74957fbae06417bcf9 /drivers/gpu/nvgpu/boardobj/boardobjgrp.c | |
parent | 8bdce5337ee5f4d1e1f6d4c7b2dc0abe4a532893 (diff) |
gpu: nvgpu: add g cross reference in boardobjgrp
Added a pointer to GPU context in boardobjgrp, and updated
constructors. It will be useful to free allocated DMA resources.
JIRA EVLR-1959
Bug 200352099
Change-Id: I006e4f970c9a2525dabdfd6ad417be64e36b7b68
Signed-off-by: Thomas Fleury <tfleury@nvidia.com>
Reviewed-on: https://git-master.nvidia.com/r/1586551
Reviewed-by: mobile promotions <svcmobile_promotions@nvidia.com>
Tested-by: mobile promotions <svcmobile_promotions@nvidia.com>
Diffstat (limited to 'drivers/gpu/nvgpu/boardobj/boardobjgrp.c')
-rw-r--r-- | drivers/gpu/nvgpu/boardobj/boardobjgrp.c | 15 |
1 files changed, 10 insertions, 5 deletions
diff --git a/drivers/gpu/nvgpu/boardobj/boardobjgrp.c b/drivers/gpu/nvgpu/boardobj/boardobjgrp.c index e03dbe8d..66c87e08 100644 --- a/drivers/gpu/nvgpu/boardobj/boardobjgrp.c +++ b/drivers/gpu/nvgpu/boardobj/boardobjgrp.c | |||
@@ -44,7 +44,7 @@ struct boardobjgrp_pmucmdhandler_params { | |||
44 | u32 success; | 44 | u32 success; |
45 | }; | 45 | }; |
46 | 46 | ||
47 | u32 boardobjgrp_construct_super(struct boardobjgrp *pboardobjgrp) | 47 | u32 boardobjgrp_construct_super(struct gk20a *g, struct boardobjgrp *pboardobjgrp) |
48 | { | 48 | { |
49 | gk20a_dbg_info(""); | 49 | gk20a_dbg_info(""); |
50 | 50 | ||
@@ -57,6 +57,7 @@ u32 boardobjgrp_construct_super(struct boardobjgrp *pboardobjgrp) | |||
57 | if (pboardobjgrp->mask == NULL) | 57 | if (pboardobjgrp->mask == NULL) |
58 | return -EINVAL; | 58 | return -EINVAL; |
59 | 59 | ||
60 | pboardobjgrp->g = g; | ||
60 | pboardobjgrp->objmask = 0; | 61 | pboardobjgrp->objmask = 0; |
61 | 62 | ||
62 | pboardobjgrp->classid = 0; | 63 | pboardobjgrp->classid = 0; |
@@ -104,6 +105,7 @@ u32 boardobjgrp_destruct_impl(struct boardobjgrp *pboardobjgrp) | |||
104 | u32 boardobjgrp_destruct_super(struct boardobjgrp *pboardobjgrp) | 105 | u32 boardobjgrp_destruct_super(struct boardobjgrp *pboardobjgrp) |
105 | { | 106 | { |
106 | struct boardobj *pboardobj; | 107 | struct boardobj *pboardobj; |
108 | struct gk20a *g = pboardobjgrp->g; | ||
107 | u32 status = 0; | 109 | u32 status = 0; |
108 | u32 stat; | 110 | u32 stat; |
109 | u8 index; | 111 | u8 index; |
@@ -134,11 +136,11 @@ u32 boardobjgrp_destruct_super(struct boardobjgrp *pboardobjgrp) | |||
134 | } | 136 | } |
135 | 137 | ||
136 | /* Destroy the PMU CMD data */ | 138 | /* Destroy the PMU CMD data */ |
137 | stat = boardobjgrp_pmucmd_destroy_impl(&pboardobjgrp->pmu.set); | 139 | stat = boardobjgrp_pmucmd_destroy_impl(g, &pboardobjgrp->pmu.set); |
138 | if (status == 0) | 140 | if (status == 0) |
139 | status = stat; | 141 | status = stat; |
140 | 142 | ||
141 | stat = boardobjgrp_pmucmd_destroy_impl(&pboardobjgrp->pmu.getstatus); | 143 | stat = boardobjgrp_pmucmd_destroy_impl(g, &pboardobjgrp->pmu.getstatus); |
142 | if (status == 0) | 144 | if (status == 0) |
143 | status = stat; | 145 | status = stat; |
144 | 146 | ||
@@ -163,9 +165,12 @@ u32 boardobjgrp_pmucmd_construct_impl(struct gk20a *g, struct boardobjgrp | |||
163 | return 0; | 165 | return 0; |
164 | } | 166 | } |
165 | 167 | ||
166 | 168 | u32 boardobjgrp_pmucmd_destroy_impl(struct gk20a *g, | |
167 | u32 boardobjgrp_pmucmd_destroy_impl(struct boardobjgrp_pmu_cmd *cmd) | 169 | struct boardobjgrp_pmu_cmd *cmd) |
168 | { | 170 | { |
171 | struct nvgpu_mem *mem = &cmd->surf.sysmem_desc; | ||
172 | |||
173 | nvgpu_pmu_surface_free(g, mem); | ||
169 | return 0; | 174 | return 0; |
170 | } | 175 | } |
171 | 176 | ||