diff options
author | Alex Waterman <alexw@nvidia.com> | 2017-03-08 19:59:03 -0500 |
---|---|---|
committer | mobile promotions <svcmobile_promotions@nvidia.com> | 2017-03-28 12:39:07 -0400 |
commit | 555e44b283175ef740a689442a508b2faf62f247 (patch) | |
tree | 45ecfc2570754676099e3a7ba4355018ef810ddc /drivers/gpu/nvgpu | |
parent | 2e15a2d1accb8303c2363122c638e08ae7b70a50 (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')
-rw-r--r-- | drivers/gpu/nvgpu/gp106/acr_gp106.c | 49 | ||||
-rw-r--r-- | drivers/gpu/nvgpu/gp106/clk_gp106.c | 9 |
2 files changed, 32 insertions, 26 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); |
62 | static int lsfm_add_ucode_img(struct gk20a *g, struct ls_flcn_mgr_v1 *plsfm, | 63 | static 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); |
64 | static void lsfm_free_ucode_img_res(struct flcn_ucode_img_v1 *p_img); | 65 | static void lsfm_free_ucode_img_res(struct gk20a *g, |
65 | static void lsfm_free_nonpmu_ucode_img_res(struct flcn_ucode_img_v1 *p_img); | 66 | struct flcn_ucode_img_v1 *p_img); |
67 | static void lsfm_free_nonpmu_ucode_img_res(struct gk20a *g, | ||
68 | struct flcn_ucode_img_v1 *p_img); | ||
66 | static int lsf_gen_wpr_requirements(struct gk20a *g, | 69 | static int lsf_gen_wpr_requirements(struct gk20a *g, |
67 | struct ls_flcn_mgr_v1 *plsfm); | 70 | struct ls_flcn_mgr_v1 *plsfm); |
68 | static void lsfm_init_wpr_contents(struct gk20a *g, | 71 | 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) | |||
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; |
285 | free_lsf_desc: | 288 | free_lsf_desc: |
286 | kfree(lsf_desc); | 289 | nvgpu_kfree(g, lsf_desc); |
287 | rel_sig: | 290 | rel_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; |
372 | free_lsf_desc: | 375 | free_lsf_desc: |
373 | kfree(lsf_desc); | 376 | nvgpu_kfree(g, lsf_desc); |
374 | rel_sig: | 377 | rel_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. */ |
918 | static void lsfm_free_ucode_img_res(struct flcn_ucode_img_v1 *p_img) | 921 | static 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. */ |
927 | static void lsfm_free_nonpmu_ucode_img_res(struct flcn_ucode_img_v1 *p_img) | 931 | static 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 | } |
diff --git a/drivers/gpu/nvgpu/gp106/clk_gp106.c b/drivers/gpu/nvgpu/gp106/clk_gp106.c index 487ba3c3..8869c94b 100644 --- a/drivers/gpu/nvgpu/gp106/clk_gp106.c +++ b/drivers/gpu/nvgpu/gp106/clk_gp106.c | |||
@@ -22,6 +22,8 @@ | |||
22 | #include <linux/uaccess.h> | 22 | #include <linux/uaccess.h> |
23 | #include <soc/tegra/fuse.h> | 23 | #include <soc/tegra/fuse.h> |
24 | 24 | ||
25 | #include <nvgpu/kmem.h> | ||
26 | |||
25 | #include "gk20a/gk20a.h" | 27 | #include "gk20a/gk20a.h" |
26 | 28 | ||
27 | #include "clk_gp106.h" | 29 | #include "clk_gp106.h" |
@@ -79,16 +81,15 @@ static int gp106_init_clk_support(struct gk20a *g) { | |||
79 | nvgpu_mutex_init(&clk->clk_mutex); | 81 | nvgpu_mutex_init(&clk->clk_mutex); |
80 | 82 | ||
81 | clk->clk_namemap = (struct namemap_cfg *) | 83 | clk->clk_namemap = (struct namemap_cfg *) |
82 | kzalloc(sizeof(struct namemap_cfg) * NUM_NAMEMAPS, GFP_KERNEL); | 84 | nvgpu_kzalloc(g, sizeof(struct namemap_cfg) * NUM_NAMEMAPS); |
83 | 85 | ||
84 | if (!clk->clk_namemap) | 86 | if (!clk->clk_namemap) |
85 | return -ENOMEM; | 87 | return -ENOMEM; |
86 | 88 | ||
87 | clk->namemap_xlat_table = kcalloc(NUM_NAMEMAPS, sizeof(u32), | 89 | clk->namemap_xlat_table = nvgpu_kcalloc(g, NUM_NAMEMAPS, sizeof(u32)); |
88 | GFP_KERNEL); | ||
89 | 90 | ||
90 | if (!clk->namemap_xlat_table) { | 91 | if (!clk->namemap_xlat_table) { |
91 | kfree(clk->clk_namemap); | 92 | nvgpu_kfree(g, clk->clk_namemap); |
92 | return -ENOMEM; | 93 | return -ENOMEM; |
93 | } | 94 | } |
94 | 95 | ||