From 555e44b283175ef740a689442a508b2faf62f247 Mon Sep 17 00:00:00 2001 From: Alex Waterman Date: Wed, 8 Mar 2017 16:59:03 -0800 Subject: gpu: nvgpu: Use new kmem API functions (gp106/*) Use the new kmem API functions in gp106/*. Update lsfm_free_ucode_img_res() lsfm_free_nonpmu_ucode_img_res() to take a struct gk20a pointer so that the free can be done with nvgpu_kfree(). Bug 1799159 Bug 1823380 Change-Id: I101f5b87db6cfc7c47d88c8fb158e21947502e3a Signed-off-by: Alex Waterman Reviewed-on: http://git-master/r/1318319 Reviewed-by: Automatic_Commit_Validation_User Reviewed-by: svccoveritychecker GVS: Gerrit_Virtual_Submit Reviewed-by: Terje Bergstrom --- drivers/gpu/nvgpu/gp106/acr_gp106.c | 49 ++++++++++++++++++++----------------- 1 file changed, 27 insertions(+), 22 deletions(-) (limited to 'drivers/gpu/nvgpu/gp106/acr_gp106.c') diff --git a/drivers/gpu/nvgpu/gp106/acr_gp106.c b/drivers/gpu/nvgpu/gp106/acr_gp106.c index afb9ebe2..c7638d3e 100644 --- a/drivers/gpu/nvgpu/gp106/acr_gp106.c +++ b/drivers/gpu/nvgpu/gp106/acr_gp106.c @@ -19,6 +19,7 @@ #include #include +#include #include #include "gk20a/gk20a.h" @@ -61,8 +62,10 @@ static int lsfm_discover_ucode_images(struct gk20a *g, struct ls_flcn_mgr_v1 *plsfm); static int lsfm_add_ucode_img(struct gk20a *g, struct ls_flcn_mgr_v1 *plsfm, struct flcn_ucode_img_v1 *ucode_image, u32 falcon_id); -static void lsfm_free_ucode_img_res(struct flcn_ucode_img_v1 *p_img); -static void lsfm_free_nonpmu_ucode_img_res(struct flcn_ucode_img_v1 *p_img); +static void lsfm_free_ucode_img_res(struct gk20a *g, + struct flcn_ucode_img_v1 *p_img); +static void lsfm_free_nonpmu_ucode_img_res(struct gk20a *g, + struct flcn_ucode_img_v1 *p_img); static int lsf_gen_wpr_requirements(struct gk20a *g, struct ls_flcn_mgr_v1 *plsfm); static void lsfm_init_wpr_contents(struct gk20a *g, @@ -178,7 +181,7 @@ static int pmu_ucode_details(struct gk20a *g, struct flcn_ucode_img_v1 *p_img) goto release_sig; } - lsf_desc = kzalloc(sizeof(struct lsf_ucode_desc_v1), GFP_KERNEL); + lsf_desc = nvgpu_kzalloc(g, sizeof(struct lsf_ucode_desc_v1)); if (!lsf_desc) { err = -ENOMEM; goto release_sig; @@ -232,7 +235,7 @@ static int fecs_ucode_details(struct gk20a *g, struct flcn_ucode_img_v1 *p_img) gk20a_err(dev_from_gk20a(g), "failed to load fecs sig"); return -ENOENT; } - lsf_desc = kzalloc(sizeof(struct lsf_ucode_desc_v1), GFP_KERNEL); + lsf_desc = nvgpu_kzalloc(g, sizeof(struct lsf_ucode_desc_v1)); if (!lsf_desc) { err = -ENOMEM; goto rel_sig; @@ -240,7 +243,7 @@ static int fecs_ucode_details(struct gk20a *g, struct flcn_ucode_img_v1 *p_img) memcpy(lsf_desc, (void *)fecs_sig->data, sizeof(struct lsf_ucode_desc_v1)); lsf_desc->falcon_id = LSF_FALCON_ID_FECS; - p_img->desc = kzalloc(sizeof(struct pmu_ucode_desc_v1), GFP_KERNEL); + p_img->desc = nvgpu_kzalloc(g, sizeof(struct pmu_ucode_desc_v1)); if (p_img->desc == NULL) { err = -ENOMEM; goto free_lsf_desc; @@ -283,7 +286,7 @@ static int fecs_ucode_details(struct gk20a *g, struct flcn_ucode_img_v1 *p_img) release_firmware(fecs_sig); return 0; free_lsf_desc: - kfree(lsf_desc); + nvgpu_kfree(g, lsf_desc); rel_sig: release_firmware(fecs_sig); return err; @@ -318,7 +321,7 @@ static int gpccs_ucode_details(struct gk20a *g, struct flcn_ucode_img_v1 *p_img) gk20a_err(dev_from_gk20a(g), "failed to load gpccs sig"); return -ENOENT; } - lsf_desc = kzalloc(sizeof(struct lsf_ucode_desc_v1), GFP_KERNEL); + lsf_desc = nvgpu_kzalloc(g, sizeof(struct lsf_ucode_desc_v1)); if (!lsf_desc) { err = -ENOMEM; goto rel_sig; @@ -327,7 +330,7 @@ static int gpccs_ucode_details(struct gk20a *g, struct flcn_ucode_img_v1 *p_img) sizeof(struct lsf_ucode_desc_v1)); lsf_desc->falcon_id = LSF_FALCON_ID_GPCCS; - p_img->desc = kzalloc(sizeof(struct pmu_ucode_desc_v1), GFP_KERNEL); + p_img->desc = nvgpu_kzalloc(g, sizeof(struct pmu_ucode_desc_v1)); if (p_img->desc == NULL) { err = -ENOMEM; goto free_lsf_desc; @@ -370,7 +373,7 @@ static int gpccs_ucode_details(struct gk20a *g, struct flcn_ucode_img_v1 *p_img) release_firmware(gpccs_sig); return 0; free_lsf_desc: - kfree(lsf_desc); + nvgpu_kfree(g, lsf_desc); rel_sig: release_firmware(gpccs_sig); return err; @@ -481,7 +484,7 @@ static int lsfm_discover_ucode_images(struct gk20a *g, /*Free any ucode image resources if not managing this falcon*/ if (!(pmu->pmu_mode & PMU_LSFM_MANAGED)) { gp106_dbg_pmu("pmu is not LSFM managed\n"); - lsfm_free_ucode_img_res(&ucode_img); + lsfm_free_ucode_img_res(g, &ucode_img); } /* Enumerate all constructed falcon objects, @@ -513,7 +516,7 @@ static int lsfm_discover_ucode_images(struct gk20a *g, } else { gp106_dbg_pmu("not managed %d\n", ucode_img.lsf_desc->falcon_id); - lsfm_free_nonpmu_ucode_img_res( + lsfm_free_nonpmu_ucode_img_res(g, &ucode_img); } } @@ -889,7 +892,7 @@ static int lsfm_add_ucode_img(struct gk20a *g, struct ls_flcn_mgr_v1 *plsfm, { struct lsfm_managed_ucode_img_v2 *pnode; - pnode = kzalloc(sizeof(struct lsfm_managed_ucode_img_v2), GFP_KERNEL); + pnode = nvgpu_kzalloc(g, sizeof(struct lsfm_managed_ucode_img_v2)); if (pnode == NULL) return -ENOMEM; @@ -914,24 +917,26 @@ static int lsfm_add_ucode_img(struct gk20a *g, struct ls_flcn_mgr_v1 *plsfm, return 0; } -/* Free any ucode image structure resources*/ -static void lsfm_free_ucode_img_res(struct flcn_ucode_img_v1 *p_img) +/* Free any ucode image structure resources. */ +static void lsfm_free_ucode_img_res(struct gk20a *g, + struct flcn_ucode_img_v1 *p_img) { if (p_img->lsf_desc != NULL) { - kfree(p_img->lsf_desc); + nvgpu_kfree(g, p_img->lsf_desc); p_img->lsf_desc = NULL; } } -/* Free any ucode image structure resources*/ -static void lsfm_free_nonpmu_ucode_img_res(struct flcn_ucode_img_v1 *p_img) +/* Free any ucode image structure resources. */ +static void lsfm_free_nonpmu_ucode_img_res(struct gk20a *g, + struct flcn_ucode_img_v1 *p_img) { if (p_img->lsf_desc != NULL) { - kfree(p_img->lsf_desc); + nvgpu_kfree(g, p_img->lsf_desc); p_img->lsf_desc = NULL; } if (p_img->desc != NULL) { - kfree(p_img->desc); + nvgpu_kfree(g, p_img->desc); p_img->desc = NULL; } } @@ -945,12 +950,12 @@ static void free_acr_resources(struct gk20a *g, struct ls_flcn_mgr_v1 *plsfm) mg_ucode_img = plsfm->ucode_img_list; if (mg_ucode_img->ucode_img.lsf_desc->falcon_id == LSF_FALCON_ID_PMU) - lsfm_free_ucode_img_res(&mg_ucode_img->ucode_img); + lsfm_free_ucode_img_res(g, &mg_ucode_img->ucode_img); else - lsfm_free_nonpmu_ucode_img_res( + lsfm_free_nonpmu_ucode_img_res(g, &mg_ucode_img->ucode_img); plsfm->ucode_img_list = mg_ucode_img->next; - kfree(mg_ucode_img); + nvgpu_kfree(g, mg_ucode_img); cnt--; } } -- cgit v1.2.2