From 13093eff52d0ef9071bb09cade01ea064c99468d Mon Sep 17 00:00:00 2001 From: Thomas Fleury Date: Mon, 23 Oct 2017 15:52:00 -0700 Subject: 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 Reviewed-on: https://git-master.nvidia.com/r/1586551 Reviewed-by: mobile promotions Tested-by: mobile promotions --- drivers/gpu/nvgpu/boardobj/boardobjgrp.c | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) (limited to 'drivers/gpu/nvgpu/boardobj/boardobjgrp.c') 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 { u32 success; }; -u32 boardobjgrp_construct_super(struct boardobjgrp *pboardobjgrp) +u32 boardobjgrp_construct_super(struct gk20a *g, struct boardobjgrp *pboardobjgrp) { gk20a_dbg_info(""); @@ -57,6 +57,7 @@ u32 boardobjgrp_construct_super(struct boardobjgrp *pboardobjgrp) if (pboardobjgrp->mask == NULL) return -EINVAL; + pboardobjgrp->g = g; pboardobjgrp->objmask = 0; pboardobjgrp->classid = 0; @@ -104,6 +105,7 @@ u32 boardobjgrp_destruct_impl(struct boardobjgrp *pboardobjgrp) u32 boardobjgrp_destruct_super(struct boardobjgrp *pboardobjgrp) { struct boardobj *pboardobj; + struct gk20a *g = pboardobjgrp->g; u32 status = 0; u32 stat; u8 index; @@ -134,11 +136,11 @@ u32 boardobjgrp_destruct_super(struct boardobjgrp *pboardobjgrp) } /* Destroy the PMU CMD data */ - stat = boardobjgrp_pmucmd_destroy_impl(&pboardobjgrp->pmu.set); + stat = boardobjgrp_pmucmd_destroy_impl(g, &pboardobjgrp->pmu.set); if (status == 0) status = stat; - stat = boardobjgrp_pmucmd_destroy_impl(&pboardobjgrp->pmu.getstatus); + stat = boardobjgrp_pmucmd_destroy_impl(g, &pboardobjgrp->pmu.getstatus); if (status == 0) status = stat; @@ -163,9 +165,12 @@ u32 boardobjgrp_pmucmd_construct_impl(struct gk20a *g, struct boardobjgrp return 0; } - -u32 boardobjgrp_pmucmd_destroy_impl(struct boardobjgrp_pmu_cmd *cmd) +u32 boardobjgrp_pmucmd_destroy_impl(struct gk20a *g, + struct boardobjgrp_pmu_cmd *cmd) { + struct nvgpu_mem *mem = &cmd->surf.sysmem_desc; + + nvgpu_pmu_surface_free(g, mem); return 0; } -- cgit v1.2.2