summaryrefslogtreecommitdiffstats
path: root/drivers/gpu/nvgpu/gk20a/tsg_gk20a.c
diff options
context:
space:
mode:
authorAlex Waterman <alexw@nvidia.com>2017-03-08 20:07:45 -0500
committermobile promotions <svcmobile_promotions@nvidia.com>2017-03-22 21:37:10 -0400
commit4a94c135f062ab41bc99376aa1a4bd64d33e47d9 (patch)
tree7c2e4033833001b355d9b4c793c137582e52c69b /drivers/gpu/nvgpu/gk20a/tsg_gk20a.c
parent14188ba419b980b74d964ee7d2de5fc3dd9f9a90 (diff)
gpu: nvgpu: Use new kmem API functions (channel)
Use the new kmem API functions in the channel and channel related code. Also delete the usage of kasprintf() since that must be paired with a kfree(). Since the kasprintf() doesn't use the nvgpu kmem machinery (and is Linux specific) instead use a small buffer statically allocated on the stack. Bug 1799159 Bug 1823380 Change-Id: Ied0183f57372632264e55608f56539861cc0f24f Signed-off-by: Alex Waterman <alexw@nvidia.com> Reviewed-on: http://git-master/r/1318312 Reviewed-by: mobile promotions <svcmobile_promotions@nvidia.com> Tested-by: mobile promotions <svcmobile_promotions@nvidia.com>
Diffstat (limited to 'drivers/gpu/nvgpu/gk20a/tsg_gk20a.c')
-rw-r--r--drivers/gpu/nvgpu/gk20a/tsg_gk20a.c17
1 files changed, 9 insertions, 8 deletions
diff --git a/drivers/gpu/nvgpu/gk20a/tsg_gk20a.c b/drivers/gpu/nvgpu/gk20a/tsg_gk20a.c
index 270fed85..21b50700 100644
--- a/drivers/gpu/nvgpu/gk20a/tsg_gk20a.c
+++ b/drivers/gpu/nvgpu/gk20a/tsg_gk20a.c
@@ -22,6 +22,8 @@
22#include <uapi/linux/nvgpu.h> 22#include <uapi/linux/nvgpu.h>
23#include <linux/anon_inodes.h> 23#include <linux/anon_inodes.h>
24 24
25#include <nvgpu/kmem.h>
26
25#include "gk20a.h" 27#include "gk20a.h"
26 28
27#include <nvgpu/hw/gk20a/hw_ccsr_gk20a.h> 29#include <nvgpu/hw/gk20a/hw_ccsr_gk20a.h>
@@ -257,7 +259,7 @@ static int gk20a_tsg_event_id_enable(struct tsg_gk20a *tsg,
257 int err = 0; 259 int err = 0;
258 int local_fd; 260 int local_fd;
259 struct file *file; 261 struct file *file;
260 char *name; 262 char name[64];
261 struct gk20a_event_id_data *event_id_data; 263 struct gk20a_event_id_data *event_id_data;
262 struct gk20a *g; 264 struct gk20a *g;
263 265
@@ -278,18 +280,17 @@ static int gk20a_tsg_event_id_enable(struct tsg_gk20a *tsg,
278 goto free_ref; 280 goto free_ref;
279 local_fd = err; 281 local_fd = err;
280 282
281 name = kasprintf(GFP_KERNEL, "nvgpu-event%d-fd%d", 283 snprintf(name, sizeof(name), "nvgpu-event%d-fd%d",
282 event_id, local_fd); 284 event_id, local_fd);
283 285
284 file = anon_inode_getfile(name, &gk20a_event_id_ops, 286 file = anon_inode_getfile(name, &gk20a_event_id_ops,
285 NULL, O_RDWR); 287 NULL, O_RDWR);
286 kfree(name);
287 if (IS_ERR(file)) { 288 if (IS_ERR(file)) {
288 err = PTR_ERR(file); 289 err = PTR_ERR(file);
289 goto clean_up; 290 goto clean_up;
290 } 291 }
291 292
292 event_id_data = kzalloc(sizeof(*event_id_data), GFP_KERNEL); 293 event_id_data = nvgpu_kzalloc(tsg->g, sizeof(*event_id_data));
293 if (!event_id_data) { 294 if (!event_id_data) {
294 err = -ENOMEM; 295 err = -ENOMEM;
295 goto clean_up_file; 296 goto clean_up_file;
@@ -428,7 +429,7 @@ int gk20a_tsg_open(struct gk20a *g, struct file *filp)
428 429
429 gk20a_dbg(gpu_dbg_fn, "tsg: %s", dev_name(dev)); 430 gk20a_dbg(gpu_dbg_fn, "tsg: %s", dev_name(dev));
430 431
431 priv = kmalloc(sizeof(*priv), GFP_KERNEL); 432 priv = nvgpu_kmalloc(g, sizeof(*priv));
432 if (!priv) { 433 if (!priv) {
433 err = -ENOMEM; 434 err = -ENOMEM;
434 goto free_ref; 435 goto free_ref;
@@ -436,7 +437,7 @@ int gk20a_tsg_open(struct gk20a *g, struct file *filp)
436 437
437 tsg = acquire_unused_tsg(&g->fifo); 438 tsg = acquire_unused_tsg(&g->fifo);
438 if (!tsg) { 439 if (!tsg) {
439 kfree(priv); 440 nvgpu_kfree(g, priv);
440 err = -ENOMEM; 441 err = -ENOMEM;
441 goto free_ref; 442 goto free_ref;
442 } 443 }
@@ -533,7 +534,7 @@ int gk20a_tsg_dev_release(struct inode *inode, struct file *filp)
533 struct tsg_gk20a *tsg = priv->tsg; 534 struct tsg_gk20a *tsg = priv->tsg;
534 535
535 kref_put(&tsg->refcount, gk20a_tsg_release); 536 kref_put(&tsg->refcount, gk20a_tsg_release);
536 kfree(priv); 537 nvgpu_kfree(tsg->g, priv);
537 return 0; 538 return 0;
538} 539}
539 540