summaryrefslogtreecommitdiffstats
path: root/drivers/gpu/nvgpu/gk20a/dbg_gpu_gk20a.c
diff options
context:
space:
mode:
authorDeepak Nibade <dnibade@nvidia.com>2017-04-05 03:00:53 -0400
committermobile promotions <svcmobile_promotions@nvidia.com>2017-04-10 02:54:31 -0400
commita89d168202ceb8fdb317cd977cc71cd4efab8c19 (patch)
tree56ad904d419fe3aaff62776ae3336fa7fbcfce98 /drivers/gpu/nvgpu/gk20a/dbg_gpu_gk20a.c
parente4464fd552d0bee2ca149c6a51fbf88b0fafb531 (diff)
gpu: nvgpu: use nvgpu list for profiler objects
Use nvgpu list APIs instead of linux list APIs to store profiler objects Jira NVGPU-13 Change-Id: I2a2715b3a86c6e526bbdbb040c283a3ddd7b24ba Signed-off-by: Deepak Nibade <dnibade@nvidia.com> Reviewed-on: http://git-master/r/1454691 Reviewed-by: mobile promotions <svcmobile_promotions@nvidia.com> Tested-by: mobile promotions <svcmobile_promotions@nvidia.com>
Diffstat (limited to 'drivers/gpu/nvgpu/gk20a/dbg_gpu_gk20a.c')
-rw-r--r--drivers/gpu/nvgpu/gk20a/dbg_gpu_gk20a.c33
1 files changed, 17 insertions, 16 deletions
diff --git a/drivers/gpu/nvgpu/gk20a/dbg_gpu_gk20a.c b/drivers/gpu/nvgpu/gk20a/dbg_gpu_gk20a.c
index 1eaca686..d7f8ceba 100644
--- a/drivers/gpu/nvgpu/gk20a/dbg_gpu_gk20a.c
+++ b/drivers/gpu/nvgpu/gk20a/dbg_gpu_gk20a.c
@@ -430,15 +430,15 @@ int dbg_unbind_single_channel_gk20a(struct dbg_session_gk20a *dbg_s,
430 /* If there's a profiler ctx reservation record associated with this 430 /* If there's a profiler ctx reservation record associated with this
431 * session/channel pair, release it. 431 * session/channel pair, release it.
432 */ 432 */
433 list_for_each_entry_safe(prof_obj, tmp_obj, &g->profiler_objects, 433 nvgpu_list_for_each_entry_safe(prof_obj, tmp_obj, &g->profiler_objects,
434 prof_obj_entry) { 434 dbg_profiler_object_data, prof_obj_entry) {
435 if ((prof_obj->session_id == dbg_s->id) && 435 if ((prof_obj->session_id == dbg_s->id) &&
436 (prof_obj->ch->hw_chid == chid)) { 436 (prof_obj->ch->hw_chid == chid)) {
437 if (prof_obj->has_reservation) { 437 if (prof_obj->has_reservation) {
438 g->ops.dbg_session_ops. 438 g->ops.dbg_session_ops.
439 release_profiler_reservation(dbg_s, prof_obj); 439 release_profiler_reservation(dbg_s, prof_obj);
440 } 440 }
441 list_del(&prof_obj->prof_obj_entry); 441 nvgpu_list_del(&prof_obj->prof_obj_entry);
442 nvgpu_kfree(g, prof_obj); 442 nvgpu_kfree(g, prof_obj);
443 } 443 }
444 } 444 }
@@ -536,13 +536,13 @@ int gk20a_dbg_gpu_dev_release(struct inode *inode, struct file *filp)
536 /* Per-context profiler objects were released when we called 536 /* Per-context profiler objects were released when we called
537 * dbg_unbind_all_channels. We could still have global ones. 537 * dbg_unbind_all_channels. We could still have global ones.
538 */ 538 */
539 list_for_each_entry_safe(prof_obj, tmp_obj, &g->profiler_objects, 539 nvgpu_list_for_each_entry_safe(prof_obj, tmp_obj, &g->profiler_objects,
540 prof_obj_entry) { 540 dbg_profiler_object_data, prof_obj_entry) {
541 if (prof_obj->session_id == dbg_s->id) { 541 if (prof_obj->session_id == dbg_s->id) {
542 if (prof_obj->has_reservation) 542 if (prof_obj->has_reservation)
543 g->ops.dbg_session_ops. 543 g->ops.dbg_session_ops.
544 release_profiler_reservation(dbg_s, prof_obj); 544 release_profiler_reservation(dbg_s, prof_obj);
545 list_del(&prof_obj->prof_obj_entry); 545 nvgpu_list_del(&prof_obj->prof_obj_entry);
546 nvgpu_kfree(g, prof_obj); 546 nvgpu_kfree(g, prof_obj);
547 } 547 }
548 } 548 }
@@ -1555,9 +1555,9 @@ static int nvgpu_ioctl_allocate_profiler_object(
1555 /* Return handle to client */ 1555 /* Return handle to client */
1556 args->profiler_handle = prof_obj->prof_handle; 1556 args->profiler_handle = prof_obj->prof_handle;
1557 1557
1558 INIT_LIST_HEAD(&prof_obj->prof_obj_entry); 1558 nvgpu_init_list_node(&prof_obj->prof_obj_entry);
1559 1559
1560 list_add(&prof_obj->prof_obj_entry, &g->profiler_objects); 1560 nvgpu_list_add(&prof_obj->prof_obj_entry, &g->profiler_objects);
1561clean_up: 1561clean_up:
1562 nvgpu_mutex_release(&g->dbg_sessions_lock); 1562 nvgpu_mutex_release(&g->dbg_sessions_lock);
1563 return err; 1563 return err;
@@ -1578,8 +1578,8 @@ static int nvgpu_ioctl_free_profiler_object(
1578 nvgpu_mutex_acquire(&g->dbg_sessions_lock); 1578 nvgpu_mutex_acquire(&g->dbg_sessions_lock);
1579 1579
1580 /* Remove profiler object from the list, if a match is found */ 1580 /* Remove profiler object from the list, if a match is found */
1581 list_for_each_entry_safe(prof_obj, tmp_obj, &g->profiler_objects, 1581 nvgpu_list_for_each_entry_safe(prof_obj, tmp_obj, &g->profiler_objects,
1582 prof_obj_entry) { 1582 dbg_profiler_object_data, prof_obj_entry) {
1583 if (prof_obj->prof_handle == args->profiler_handle) { 1583 if (prof_obj->prof_handle == args->profiler_handle) {
1584 if (prof_obj->session_id != dbg_s->id) { 1584 if (prof_obj->session_id != dbg_s->id) {
1585 gk20a_err(dev_from_gk20a(g), 1585 gk20a_err(dev_from_gk20a(g),
@@ -1591,7 +1591,7 @@ static int nvgpu_ioctl_free_profiler_object(
1591 if (prof_obj->has_reservation) 1591 if (prof_obj->has_reservation)
1592 g->ops.dbg_session_ops. 1592 g->ops.dbg_session_ops.
1593 release_profiler_reservation(dbg_s, prof_obj); 1593 release_profiler_reservation(dbg_s, prof_obj);
1594 list_del(&prof_obj->prof_obj_entry); 1594 nvgpu_list_del(&prof_obj->prof_obj_entry);
1595 nvgpu_kfree(g, prof_obj); 1595 nvgpu_kfree(g, prof_obj);
1596 obj_found = true; 1596 obj_found = true;
1597 break; 1597 break;
@@ -1614,7 +1614,8 @@ static struct dbg_profiler_object_data *find_matching_prof_obj(
1614 struct gk20a *g = dbg_s->g; 1614 struct gk20a *g = dbg_s->g;
1615 struct dbg_profiler_object_data *prof_obj; 1615 struct dbg_profiler_object_data *prof_obj;
1616 1616
1617 list_for_each_entry(prof_obj, &g->profiler_objects, prof_obj_entry) { 1617 nvgpu_list_for_each_entry(prof_obj, &g->profiler_objects,
1618 dbg_profiler_object_data, prof_obj_entry) {
1618 if (prof_obj->prof_handle == profiler_handle) { 1619 if (prof_obj->prof_handle == profiler_handle) {
1619 if (prof_obj->session_id != dbg_s->id) { 1620 if (prof_obj->session_id != dbg_s->id) {
1620 gk20a_err(dev_from_gk20a(g), 1621 gk20a_err(dev_from_gk20a(g),
@@ -1727,8 +1728,8 @@ static int nvgpu_profiler_reserve_acquire(struct dbg_session_gk20a *dbg_s,
1727 */ 1728 */
1728 int my_tsgid = my_prof_obj->ch->tsgid; 1729 int my_tsgid = my_prof_obj->ch->tsgid;
1729 1730
1730 list_for_each_entry(prof_obj, &g->profiler_objects, 1731 nvgpu_list_for_each_entry(prof_obj, &g->profiler_objects,
1731 prof_obj_entry) { 1732 dbg_profiler_object_data, prof_obj_entry) {
1732 if (prof_obj->has_reservation && 1733 if (prof_obj->has_reservation &&
1733 (prof_obj->ch->tsgid == my_tsgid)) { 1734 (prof_obj->ch->tsgid == my_tsgid)) {
1734 gk20a_err(dev_from_gk20a(g), 1735 gk20a_err(dev_from_gk20a(g),
@@ -1751,8 +1752,8 @@ static int nvgpu_profiler_reserve_acquire(struct dbg_session_gk20a *dbg_s,
1751 */ 1752 */
1752 struct channel_gk20a *my_ch = my_prof_obj->ch; 1753 struct channel_gk20a *my_ch = my_prof_obj->ch;
1753 1754
1754 list_for_each_entry(prof_obj, &g->profiler_objects, 1755 nvgpu_list_for_each_entry(prof_obj, &g->profiler_objects,
1755 prof_obj_entry) { 1756 dbg_profiler_object_data, prof_obj_entry) {
1756 if (prof_obj->has_reservation && 1757 if (prof_obj->has_reservation &&
1757 (prof_obj->ch == my_ch)) { 1758 (prof_obj->ch == my_ch)) {
1758 gk20a_err(dev_from_gk20a(g), 1759 gk20a_err(dev_from_gk20a(g),