summaryrefslogtreecommitdiffstats
path: root/drivers/gpu/nvgpu/gk20a/ctxsw_trace_gk20a.c
diff options
context:
space:
mode:
authorThomas Fleury <tfleury@nvidia.com>2016-04-21 19:35:44 -0400
committerTerje Bergstrom <tbergstrom@nvidia.com>2016-05-21 14:33:23 -0400
commit47e3d2e90511b1cba68e46233896a918b32b5d33 (patch)
tree2840d2cc820690f27ad881a80774dd26cebc5302 /drivers/gpu/nvgpu/gk20a/ctxsw_trace_gk20a.c
parent4df6cd4a345d9a564f2235bc6a20ebb4614c2b04 (diff)
gpu: nvgpu: fix engine reset in FECS trace
In virtualization case, VM server is the only one allowed to write to ctxsw ring buffer. It will also generate an event in case of engine reset. Only generate a tracepoint on Guest OS side. EVLR-314 Change-Id: I2cb09780a9b41237fe196ef1f3515923f36a24a4 Signed-off-by: Thomas Fleury <tfleury@nvidia.com> Reviewed-on: http://git-master/r/1130743 (cherry picked from commit 4bbf9538e2a3375eb86b2feea6c605c3eec2ca40) Reviewed-on: http://git-master/r/1133614 (cherry picked from commit 2076d944db41b37143c27795b3cffd88e99e0b00) Reviewed-on: http://git-master/r/1150046 Reviewed-by: Terje Bergstrom <tbergstrom@nvidia.com> Tested-by: Terje Bergstrom <tbergstrom@nvidia.com>
Diffstat (limited to 'drivers/gpu/nvgpu/gk20a/ctxsw_trace_gk20a.c')
-rw-r--r--drivers/gpu/nvgpu/gk20a/ctxsw_trace_gk20a.c8
1 files changed, 4 insertions, 4 deletions
diff --git a/drivers/gpu/nvgpu/gk20a/ctxsw_trace_gk20a.c b/drivers/gpu/nvgpu/gk20a/ctxsw_trace_gk20a.c
index 3f39ced1..0fa9e65a 100644
--- a/drivers/gpu/nvgpu/gk20a/ctxsw_trace_gk20a.c
+++ b/drivers/gpu/nvgpu/gk20a/ctxsw_trace_gk20a.c
@@ -626,16 +626,16 @@ void gk20a_ctxsw_trace_channel_reset(struct gk20a *g, struct channel_gk20a *ch)
626#ifdef CONFIG_GK20A_CTXSW_TRACE 626#ifdef CONFIG_GK20A_CTXSW_TRACE
627 struct nvgpu_ctxsw_trace_entry entry = { 627 struct nvgpu_ctxsw_trace_entry entry = {
628 .vmid = 0, 628 .vmid = 0,
629 .tag = NVGPU_CTXSW_TAG_RESET, 629 .tag = NVGPU_CTXSW_TAG_ENGINE_RESET,
630 .timestamp = gk20a_read_ptimer(g), 630 .timestamp = gk20a_read_ptimer(g),
631 .context_id = 0, 631 .context_id = 0,
632 .pid = ch->pid, 632 .pid = ch->pid,
633 }; 633 };
634 634
635 gk20a_ctxsw_trace_write(g, &entry); 635 gk20a_ctxsw_trace_write(g, &entry);
636 gk20a_ctxsw_trace_wake_up(g, 0);
636#endif 637#endif
637 trace_gk20a_channel_reset(ch->hw_chid, ch->tsgid); 638 trace_gk20a_channel_reset(ch->hw_chid, ch->tsgid);
638 gk20a_ctxsw_trace_wake_up(g, 0);
639} 639}
640 640
641void gk20a_ctxsw_trace_tsg_reset(struct gk20a *g, struct tsg_gk20a *tsg) 641void gk20a_ctxsw_trace_tsg_reset(struct gk20a *g, struct tsg_gk20a *tsg)
@@ -643,7 +643,7 @@ void gk20a_ctxsw_trace_tsg_reset(struct gk20a *g, struct tsg_gk20a *tsg)
643#ifdef CONFIG_GK20A_CTXSW_TRACE 643#ifdef CONFIG_GK20A_CTXSW_TRACE
644 struct nvgpu_ctxsw_trace_entry entry = { 644 struct nvgpu_ctxsw_trace_entry entry = {
645 .vmid = 0, 645 .vmid = 0,
646 .tag = NVGPU_CTXSW_TAG_RESET, 646 .tag = NVGPU_CTXSW_TAG_ENGINE_RESET,
647 .timestamp = gk20a_read_ptimer(g), 647 .timestamp = gk20a_read_ptimer(g),
648 .context_id = 0, 648 .context_id = 0,
649 .pid = 0, 649 .pid = 0,
@@ -657,9 +657,9 @@ void gk20a_ctxsw_trace_tsg_reset(struct gk20a *g, struct tsg_gk20a *tsg)
657 entry.pid = ch->pid; 657 entry.pid = ch->pid;
658 658
659 gk20a_ctxsw_trace_write(g, &entry); 659 gk20a_ctxsw_trace_write(g, &entry);
660 gk20a_ctxsw_trace_wake_up(g, 0);
660#endif 661#endif
661 trace_gk20a_channel_reset(~0, tsg->tsgid); 662 trace_gk20a_channel_reset(~0, tsg->tsgid);
662 gk20a_ctxsw_trace_wake_up(g, 0);
663} 663}
664 664
665void gk20a_ctxsw_trace_init_ops(struct gpu_ops *ops) 665void gk20a_ctxsw_trace_init_ops(struct gpu_ops *ops)