diff options
author | Alex Waterman <alexw@nvidia.com> | 2017-03-08 20:08:50 -0500 |
---|---|---|
committer | mobile promotions <svcmobile_promotions@nvidia.com> | 2017-03-30 15:36:09 -0400 |
commit | 24e1c7e0a729158be36d63b821550d206a8a0436 (patch) | |
tree | cf26c850cc63957f63f3e8f97914268839d8e0de /drivers/gpu/nvgpu/gk20a/pmu_gk20a.c | |
parent | 7010bf88399ea81b2b35844f738baac19dc5a441 (diff) |
gpu: nvgpu: Use new kmem API functions (misc)
Use the new kmem API functions in misc gk20a code. Some additional
modifications were also made:
o Add a struct gk20a pointer to gk20a_fence to enable proper
kmem free usage.
o Add gk20a pointer to alloc_session() in dbg_gpu_gk20a.c to
use kmem API for allocating a session.
o Plumb a gk20a pointer through the fence creation and deletion.
o Use statically allocated buffers for names in file creation.
Bug 1799159
Bug 1823380
Change-Id: I3678080e3ffa1f9bcf6934e3f4819a1bc531689b
Signed-off-by: Alex Waterman <alexw@nvidia.com>
Reviewed-on: http://git-master/r/1318323
Reviewed-by: mobile promotions <svcmobile_promotions@nvidia.com>
Tested-by: mobile promotions <svcmobile_promotions@nvidia.com>
Diffstat (limited to 'drivers/gpu/nvgpu/gk20a/pmu_gk20a.c')
-rw-r--r-- | drivers/gpu/nvgpu/gk20a/pmu_gk20a.c | 32 |
1 files changed, 16 insertions, 16 deletions
diff --git a/drivers/gpu/nvgpu/gk20a/pmu_gk20a.c b/drivers/gpu/nvgpu/gk20a/pmu_gk20a.c index 85fa8ea1..eda4167b 100644 --- a/drivers/gpu/nvgpu/gk20a/pmu_gk20a.c +++ b/drivers/gpu/nvgpu/gk20a/pmu_gk20a.c | |||
@@ -25,6 +25,7 @@ | |||
25 | 25 | ||
26 | #include <nvgpu/nvgpu_common.h> | 26 | #include <nvgpu/nvgpu_common.h> |
27 | #include <nvgpu/timers.h> | 27 | #include <nvgpu/timers.h> |
28 | #include <nvgpu/kmem.h> | ||
28 | 29 | ||
29 | #include "gk20a.h" | 30 | #include "gk20a.h" |
30 | #include "gr_gk20a.h" | 31 | #include "gr_gk20a.h" |
@@ -301,7 +302,7 @@ static void printtrace(struct pmu_gk20a *pmu) | |||
301 | u32 *trace1; | 302 | u32 *trace1; |
302 | 303 | ||
303 | /* allocate system memory to copy pmu trace buffer */ | 304 | /* allocate system memory to copy pmu trace buffer */ |
304 | tracebuffer = kzalloc(GK20A_PMU_TRACE_BUFSIZE, GFP_KERNEL); | 305 | tracebuffer = nvgpu_kzalloc(g, GK20A_PMU_TRACE_BUFSIZE); |
305 | if (tracebuffer == NULL) | 306 | if (tracebuffer == NULL) |
306 | return; | 307 | return; |
307 | 308 | ||
@@ -335,7 +336,7 @@ static void printtrace(struct pmu_gk20a *pmu) | |||
335 | scnprintf((buf + count), 0x40, "%s", (trace+i+20+m)); | 336 | scnprintf((buf + count), 0x40, "%s", (trace+i+20+m)); |
336 | gk20a_err(dev_from_gk20a(g), "%s", buf); | 337 | gk20a_err(dev_from_gk20a(g), "%s", buf); |
337 | } | 338 | } |
338 | kfree(tracebuffer); | 339 | nvgpu_kfree(g, tracebuffer); |
339 | } | 340 | } |
340 | 341 | ||
341 | static void set_pmu_cmdline_args_falctracedmabase_v1(struct pmu_gk20a *pmu) | 342 | static void set_pmu_cmdline_args_falctracedmabase_v1(struct pmu_gk20a *pmu) |
@@ -3163,8 +3164,8 @@ static int gk20a_init_pmu_setup_sw(struct gk20a *g) | |||
3163 | pmu->perfmon_sampling_enabled = true; | 3164 | pmu->perfmon_sampling_enabled = true; |
3164 | 3165 | ||
3165 | pmu->mutex_cnt = pwr_pmu_mutex__size_1_v(); | 3166 | pmu->mutex_cnt = pwr_pmu_mutex__size_1_v(); |
3166 | pmu->mutex = kzalloc(pmu->mutex_cnt * | 3167 | pmu->mutex = nvgpu_kzalloc(g, pmu->mutex_cnt * |
3167 | sizeof(struct pmu_mutex), GFP_KERNEL); | 3168 | sizeof(struct pmu_mutex)); |
3168 | if (!pmu->mutex) { | 3169 | if (!pmu->mutex) { |
3169 | err = -ENOMEM; | 3170 | err = -ENOMEM; |
3170 | goto err; | 3171 | goto err; |
@@ -3175,8 +3176,8 @@ static int gk20a_init_pmu_setup_sw(struct gk20a *g) | |||
3175 | pmu->mutex[i].index = i; | 3176 | pmu->mutex[i].index = i; |
3176 | } | 3177 | } |
3177 | 3178 | ||
3178 | pmu->seq = kzalloc(PMU_MAX_NUM_SEQUENCES * | 3179 | pmu->seq = nvgpu_kzalloc(g, PMU_MAX_NUM_SEQUENCES * |
3179 | sizeof(struct pmu_sequence), GFP_KERNEL); | 3180 | sizeof(struct pmu_sequence)); |
3180 | if (!pmu->seq) { | 3181 | if (!pmu->seq) { |
3181 | err = -ENOMEM; | 3182 | err = -ENOMEM; |
3182 | goto err_free_mutex; | 3183 | goto err_free_mutex; |
@@ -3218,9 +3219,9 @@ skip_init: | |||
3218 | err_free_seq_buf: | 3219 | err_free_seq_buf: |
3219 | gk20a_gmmu_unmap_free(vm, &pmu->seq_buf); | 3220 | gk20a_gmmu_unmap_free(vm, &pmu->seq_buf); |
3220 | err_free_seq: | 3221 | err_free_seq: |
3221 | kfree(pmu->seq); | 3222 | nvgpu_kfree(g, pmu->seq); |
3222 | err_free_mutex: | 3223 | err_free_mutex: |
3223 | kfree(pmu->mutex); | 3224 | nvgpu_kfree(g, pmu->mutex); |
3224 | err: | 3225 | err: |
3225 | gk20a_dbg_fn("fail"); | 3226 | gk20a_dbg_fn("fail"); |
3226 | return err; | 3227 | return err; |
@@ -4060,7 +4061,7 @@ static int pmu_response_handle(struct pmu_gk20a *pmu, | |||
4060 | 4061 | ||
4061 | gk20a_pmu_surface_free(g, seq->out_mem); | 4062 | gk20a_pmu_surface_free(g, seq->out_mem); |
4062 | if (seq->out_mem != seq->in_mem) | 4063 | if (seq->out_mem != seq->in_mem) |
4063 | kfree(seq->out_mem); | 4064 | nvgpu_kfree(g, seq->out_mem); |
4064 | else | 4065 | else |
4065 | seq->out_mem = NULL; | 4066 | seq->out_mem = NULL; |
4066 | } | 4067 | } |
@@ -4072,7 +4073,7 @@ static int pmu_response_handle(struct pmu_gk20a *pmu, | |||
4072 | pv->get_pmu_seq_in_a_ptr(seq))); | 4073 | pv->get_pmu_seq_in_a_ptr(seq))); |
4073 | 4074 | ||
4074 | gk20a_pmu_surface_free(g, seq->in_mem); | 4075 | gk20a_pmu_surface_free(g, seq->in_mem); |
4075 | kfree(seq->in_mem); | 4076 | nvgpu_kfree(g, seq->in_mem); |
4076 | seq->in_mem = NULL; | 4077 | seq->in_mem = NULL; |
4077 | } | 4078 | } |
4078 | 4079 | ||
@@ -4822,8 +4823,7 @@ int gk20a_pmu_cmd_post(struct gk20a *g, struct pmu_cmd *cmd, | |||
4822 | goto clean_up; | 4823 | goto clean_up; |
4823 | 4824 | ||
4824 | if (payload->in.fb_size != 0x0) { | 4825 | if (payload->in.fb_size != 0x0) { |
4825 | seq->in_mem = kzalloc(sizeof(struct mem_desc), | 4826 | seq->in_mem = nvgpu_kzalloc(g, sizeof(struct mem_desc)); |
4826 | GFP_KERNEL); | ||
4827 | if (!seq->in_mem) { | 4827 | if (!seq->in_mem) { |
4828 | err = -ENOMEM; | 4828 | err = -ENOMEM; |
4829 | goto clean_up; | 4829 | goto clean_up; |
@@ -4866,8 +4866,8 @@ int gk20a_pmu_cmd_post(struct gk20a *g, struct pmu_cmd *cmd, | |||
4866 | goto clean_up; | 4866 | goto clean_up; |
4867 | 4867 | ||
4868 | if (payload->out.fb_size != 0x0) { | 4868 | if (payload->out.fb_size != 0x0) { |
4869 | seq->out_mem = kzalloc(sizeof(struct mem_desc), | 4869 | seq->out_mem = nvgpu_kzalloc(g, |
4870 | GFP_KERNEL); | 4870 | sizeof(struct mem_desc)); |
4871 | if (!seq->out_mem) { | 4871 | if (!seq->out_mem) { |
4872 | err = -ENOMEM; | 4872 | err = -ENOMEM; |
4873 | goto clean_up; | 4873 | goto clean_up; |
@@ -5690,7 +5690,7 @@ static int falc_trace_show(struct seq_file *s, void *data) | |||
5690 | u32 *trace1; | 5690 | u32 *trace1; |
5691 | 5691 | ||
5692 | /* allocate system memory to copy pmu trace buffer */ | 5692 | /* allocate system memory to copy pmu trace buffer */ |
5693 | tracebuffer = kzalloc(GK20A_PMU_TRACE_BUFSIZE, GFP_KERNEL); | 5693 | tracebuffer = nvgpu_kzalloc(g, GK20A_PMU_TRACE_BUFSIZE); |
5694 | if (tracebuffer == NULL) | 5694 | if (tracebuffer == NULL) |
5695 | return -ENOMEM; | 5695 | return -ENOMEM; |
5696 | 5696 | ||
@@ -5723,7 +5723,7 @@ static int falc_trace_show(struct seq_file *s, void *data) | |||
5723 | seq_printf(s, "%s", (trace+i+20+m)); | 5723 | seq_printf(s, "%s", (trace+i+20+m)); |
5724 | } | 5724 | } |
5725 | 5725 | ||
5726 | kfree(tracebuffer); | 5726 | nvgpu_kfree(g, tracebuffer); |
5727 | return 0; | 5727 | return 0; |
5728 | } | 5728 | } |
5729 | 5729 | ||