summaryrefslogtreecommitdiffstats
path: root/drivers/gpu/nvgpu/gp106/acr_gp106.c
diff options
context:
space:
mode:
authorAlex Waterman <alexw@nvidia.com>2017-03-08 19:59:03 -0500
committermobile promotions <svcmobile_promotions@nvidia.com>2017-03-28 12:39:07 -0400
commit555e44b283175ef740a689442a508b2faf62f247 (patch)
tree45ecfc2570754676099e3a7ba4355018ef810ddc /drivers/gpu/nvgpu/gp106/acr_gp106.c
parent2e15a2d1accb8303c2363122c638e08ae7b70a50 (diff)
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 <alexw@nvidia.com> Reviewed-on: http://git-master/r/1318319 Reviewed-by: Automatic_Commit_Validation_User Reviewed-by: svccoveritychecker <svccoveritychecker@nvidia.com> GVS: Gerrit_Virtual_Submit Reviewed-by: Terje Bergstrom <tbergstrom@nvidia.com>
Diffstat (limited to 'drivers/gpu/nvgpu/gp106/acr_gp106.c')
-rw-r--r--drivers/gpu/nvgpu/gp106/acr_gp106.c49
1 files changed, 27 insertions, 22 deletions
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 @@
19#include <linux/io.h> 19#include <linux/io.h>
20 20
21#include <nvgpu/nvgpu_common.h> 21#include <nvgpu/nvgpu_common.h>
22#include <nvgpu/kmem.h>
22#include <nvgpu/acr/nvgpu_acr.h> 23#include <nvgpu/acr/nvgpu_acr.h>
23 24
24#include "gk20a/gk20a.h" 25#include "gk20a/gk20a.h"
@@ -61,8 +62,10 @@ static int lsfm_discover_ucode_images(struct gk20a *g,
61 struct ls_flcn_mgr_v1 *plsfm); 62 struct ls_flcn_mgr_v1 *plsfm);
62static int lsfm_add_ucode_img(struct gk20a *g, struct ls_flcn_mgr_v1 *plsfm, 63static int lsfm_add_ucode_img(struct gk20a *g, struct ls_flcn_mgr_v1 *plsfm,
63 struct flcn_ucode_img_v1 *ucode_image, u32 falcon_id); 64 struct flcn_ucode_img_v1 *ucode_image, u32 falcon_id);
64static void lsfm_free_ucode_img_res(struct flcn_ucode_img_v1 *p_img); 65static void lsfm_free_ucode_img_res(struct gk20a *g,
65static void lsfm_free_nonpmu_ucode_img_res(struct flcn_ucode_img_v1 *p_img); 66 struct flcn_ucode_img_v1 *p_img);
67static void lsfm_free_nonpmu_ucode_img_res(struct gk20a *g,
68 struct flcn_ucode_img_v1 *p_img);
66static int lsf_gen_wpr_requirements(struct gk20a *g, 69static int lsf_gen_wpr_requirements(struct gk20a *g,
67 struct ls_flcn_mgr_v1 *plsfm); 70 struct ls_flcn_mgr_v1 *plsfm);
68static void lsfm_init_wpr_contents(struct gk20a *g, 71static 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)
178 goto release_sig; 181 goto release_sig;
179 } 182 }
180 183
181 lsf_desc = kzalloc(sizeof(struct lsf_ucode_desc_v1), GFP_KERNEL); 184 lsf_desc = nvgpu_kzalloc(g, sizeof(struct lsf_ucode_desc_v1));
182 if (!lsf_desc) { 185 if (!lsf_desc) {
183 err = -ENOMEM; 186 err = -ENOMEM;
184 goto release_sig; 187 goto release_sig;
@@ -232,7 +235,7 @@ static int fecs_ucode_details(struct gk20a *g, struct flcn_ucode_img_v1 *p_img)
232 gk20a_err(dev_from_gk20a(g), "failed to load fecs sig"); 235 gk20a_err(dev_from_gk20a(g), "failed to load fecs sig");
233 return -ENOENT; 236 return -ENOENT;
234 } 237 }
235 lsf_desc = kzalloc(sizeof(struct lsf_ucode_desc_v1), GFP_KERNEL); 238 lsf_desc = nvgpu_kzalloc(g, sizeof(struct lsf_ucode_desc_v1));
236 if (!lsf_desc) { 239 if (!lsf_desc) {
237 err = -ENOMEM; 240 err = -ENOMEM;
238 goto rel_sig; 241 goto rel_sig;
@@ -240,7 +243,7 @@ static int fecs_ucode_details(struct gk20a *g, struct flcn_ucode_img_v1 *p_img)
240 memcpy(lsf_desc, (void *)fecs_sig->data, sizeof(struct lsf_ucode_desc_v1)); 243 memcpy(lsf_desc, (void *)fecs_sig->data, sizeof(struct lsf_ucode_desc_v1));
241 lsf_desc->falcon_id = LSF_FALCON_ID_FECS; 244 lsf_desc->falcon_id = LSF_FALCON_ID_FECS;
242 245
243 p_img->desc = kzalloc(sizeof(struct pmu_ucode_desc_v1), GFP_KERNEL); 246 p_img->desc = nvgpu_kzalloc(g, sizeof(struct pmu_ucode_desc_v1));
244 if (p_img->desc == NULL) { 247 if (p_img->desc == NULL) {
245 err = -ENOMEM; 248 err = -ENOMEM;
246 goto free_lsf_desc; 249 goto free_lsf_desc;
@@ -283,7 +286,7 @@ static int fecs_ucode_details(struct gk20a *g, struct flcn_ucode_img_v1 *p_img)
283 release_firmware(fecs_sig); 286 release_firmware(fecs_sig);
284 return 0; 287 return 0;
285free_lsf_desc: 288free_lsf_desc:
286 kfree(lsf_desc); 289 nvgpu_kfree(g, lsf_desc);
287rel_sig: 290rel_sig:
288 release_firmware(fecs_sig); 291 release_firmware(fecs_sig);
289 return err; 292 return err;
@@ -318,7 +321,7 @@ static int gpccs_ucode_details(struct gk20a *g, struct flcn_ucode_img_v1 *p_img)
318 gk20a_err(dev_from_gk20a(g), "failed to load gpccs sig"); 321 gk20a_err(dev_from_gk20a(g), "failed to load gpccs sig");
319 return -ENOENT; 322 return -ENOENT;
320 } 323 }
321 lsf_desc = kzalloc(sizeof(struct lsf_ucode_desc_v1), GFP_KERNEL); 324 lsf_desc = nvgpu_kzalloc(g, sizeof(struct lsf_ucode_desc_v1));
322 if (!lsf_desc) { 325 if (!lsf_desc) {
323 err = -ENOMEM; 326 err = -ENOMEM;
324 goto rel_sig; 327 goto rel_sig;
@@ -327,7 +330,7 @@ static int gpccs_ucode_details(struct gk20a *g, struct flcn_ucode_img_v1 *p_img)
327 sizeof(struct lsf_ucode_desc_v1)); 330 sizeof(struct lsf_ucode_desc_v1));
328 lsf_desc->falcon_id = LSF_FALCON_ID_GPCCS; 331 lsf_desc->falcon_id = LSF_FALCON_ID_GPCCS;
329 332
330 p_img->desc = kzalloc(sizeof(struct pmu_ucode_desc_v1), GFP_KERNEL); 333 p_img->desc = nvgpu_kzalloc(g, sizeof(struct pmu_ucode_desc_v1));
331 if (p_img->desc == NULL) { 334 if (p_img->desc == NULL) {
332 err = -ENOMEM; 335 err = -ENOMEM;
333 goto free_lsf_desc; 336 goto free_lsf_desc;
@@ -370,7 +373,7 @@ static int gpccs_ucode_details(struct gk20a *g, struct flcn_ucode_img_v1 *p_img)
370 release_firmware(gpccs_sig); 373 release_firmware(gpccs_sig);
371 return 0; 374 return 0;
372free_lsf_desc: 375free_lsf_desc:
373 kfree(lsf_desc); 376 nvgpu_kfree(g, lsf_desc);
374rel_sig: 377rel_sig:
375 release_firmware(gpccs_sig); 378 release_firmware(gpccs_sig);
376 return err; 379 return err;
@@ -481,7 +484,7 @@ static int lsfm_discover_ucode_images(struct gk20a *g,
481 /*Free any ucode image resources if not managing this falcon*/ 484 /*Free any ucode image resources if not managing this falcon*/
482 if (!(pmu->pmu_mode & PMU_LSFM_MANAGED)) { 485 if (!(pmu->pmu_mode & PMU_LSFM_MANAGED)) {
483 gp106_dbg_pmu("pmu is not LSFM managed\n"); 486 gp106_dbg_pmu("pmu is not LSFM managed\n");
484 lsfm_free_ucode_img_res(&ucode_img); 487 lsfm_free_ucode_img_res(g, &ucode_img);
485 } 488 }
486 489
487 /* Enumerate all constructed falcon objects, 490 /* Enumerate all constructed falcon objects,
@@ -513,7 +516,7 @@ static int lsfm_discover_ucode_images(struct gk20a *g,
513 } else { 516 } else {
514 gp106_dbg_pmu("not managed %d\n", 517 gp106_dbg_pmu("not managed %d\n",
515 ucode_img.lsf_desc->falcon_id); 518 ucode_img.lsf_desc->falcon_id);
516 lsfm_free_nonpmu_ucode_img_res( 519 lsfm_free_nonpmu_ucode_img_res(g,
517 &ucode_img); 520 &ucode_img);
518 } 521 }
519 } 522 }
@@ -889,7 +892,7 @@ static int lsfm_add_ucode_img(struct gk20a *g, struct ls_flcn_mgr_v1 *plsfm,
889{ 892{
890 struct lsfm_managed_ucode_img_v2 *pnode; 893 struct lsfm_managed_ucode_img_v2 *pnode;
891 894
892 pnode = kzalloc(sizeof(struct lsfm_managed_ucode_img_v2), GFP_KERNEL); 895 pnode = nvgpu_kzalloc(g, sizeof(struct lsfm_managed_ucode_img_v2));
893 if (pnode == NULL) 896 if (pnode == NULL)
894 return -ENOMEM; 897 return -ENOMEM;
895 898
@@ -914,24 +917,26 @@ static int lsfm_add_ucode_img(struct gk20a *g, struct ls_flcn_mgr_v1 *plsfm,
914 return 0; 917 return 0;
915} 918}
916 919
917/* Free any ucode image structure resources*/ 920/* Free any ucode image structure resources. */
918static void lsfm_free_ucode_img_res(struct flcn_ucode_img_v1 *p_img) 921static void lsfm_free_ucode_img_res(struct gk20a *g,
922 struct flcn_ucode_img_v1 *p_img)
919{ 923{
920 if (p_img->lsf_desc != NULL) { 924 if (p_img->lsf_desc != NULL) {
921 kfree(p_img->lsf_desc); 925 nvgpu_kfree(g, p_img->lsf_desc);
922 p_img->lsf_desc = NULL; 926 p_img->lsf_desc = NULL;
923 } 927 }
924} 928}
925 929
926/* Free any ucode image structure resources*/ 930/* Free any ucode image structure resources. */
927static void lsfm_free_nonpmu_ucode_img_res(struct flcn_ucode_img_v1 *p_img) 931static void lsfm_free_nonpmu_ucode_img_res(struct gk20a *g,
932 struct flcn_ucode_img_v1 *p_img)
928{ 933{
929 if (p_img->lsf_desc != NULL) { 934 if (p_img->lsf_desc != NULL) {
930 kfree(p_img->lsf_desc); 935 nvgpu_kfree(g, p_img->lsf_desc);
931 p_img->lsf_desc = NULL; 936 p_img->lsf_desc = NULL;
932 } 937 }
933 if (p_img->desc != NULL) { 938 if (p_img->desc != NULL) {
934 kfree(p_img->desc); 939 nvgpu_kfree(g, p_img->desc);
935 p_img->desc = NULL; 940 p_img->desc = NULL;
936 } 941 }
937} 942}
@@ -945,12 +950,12 @@ static void free_acr_resources(struct gk20a *g, struct ls_flcn_mgr_v1 *plsfm)
945 mg_ucode_img = plsfm->ucode_img_list; 950 mg_ucode_img = plsfm->ucode_img_list;
946 if (mg_ucode_img->ucode_img.lsf_desc->falcon_id == 951 if (mg_ucode_img->ucode_img.lsf_desc->falcon_id ==
947 LSF_FALCON_ID_PMU) 952 LSF_FALCON_ID_PMU)
948 lsfm_free_ucode_img_res(&mg_ucode_img->ucode_img); 953 lsfm_free_ucode_img_res(g, &mg_ucode_img->ucode_img);
949 else 954 else
950 lsfm_free_nonpmu_ucode_img_res( 955 lsfm_free_nonpmu_ucode_img_res(g,
951 &mg_ucode_img->ucode_img); 956 &mg_ucode_img->ucode_img);
952 plsfm->ucode_img_list = mg_ucode_img->next; 957 plsfm->ucode_img_list = mg_ucode_img->next;
953 kfree(mg_ucode_img); 958 nvgpu_kfree(g, mg_ucode_img);
954 cnt--; 959 cnt--;
955 } 960 }
956} 961}