diff options
author | Deepak Nibade <dnibade@nvidia.com> | 2017-04-05 03:00:53 -0400 |
---|---|---|
committer | mobile promotions <svcmobile_promotions@nvidia.com> | 2017-04-10 02:54:31 -0400 |
commit | a89d168202ceb8fdb317cd977cc71cd4efab8c19 (patch) | |
tree | 56ad904d419fe3aaff62776ae3336fa7fbcfce98 /drivers/gpu/nvgpu/gk20a/dbg_gpu_gk20a.c | |
parent | e4464fd552d0bee2ca149c6a51fbf88b0fafb531 (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.c | 33 |
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); |
1561 | clean_up: | 1561 | clean_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), |