diff options
author | Thomas Fleury <tfleury@nvidia.com> | 2017-04-12 14:31:51 -0400 |
---|---|---|
committer | mobile promotions <svcmobile_promotions@nvidia.com> | 2017-04-14 15:14:24 -0400 |
commit | 1d95b96652c48a85a59daca9ab05397ded785a66 (patch) | |
tree | 97bd30a6fa122fe503ce0bdd8ecd7de7f36f6283 /drivers | |
parent | 4aec9b0233c85496ecf3fe0c564b0019b8673410 (diff) |
gpu: nvgpu: fix pid mapping for dGPU FECS traces
For dGPU, instance block is in vidmem, and context_ptr
was not properly computed, leading to reporting pid=0 in
FECS traces.
Use gk20a_mm_inst_block_addr, which handles all cases
to determine instance block physical address.
Bug 1899195
Change-Id: If003d9f00aff66d808e66c06baf6ded38699981a
Signed-off-by: Thomas Fleury <tfleury@nvidia.com>
Reviewed-on: http://git-master/r/1461646
(cherry picked from commit 0a58c5ace036cdf53e3555afe33f694b801f2629)
Reviewed-on: http://git-master/r/1462396
Reviewed-by: mobile promotions <svcmobile_promotions@nvidia.com>
Tested-by: mobile promotions <svcmobile_promotions@nvidia.com>
Diffstat (limited to 'drivers')
-rw-r--r-- | drivers/gpu/nvgpu/gk20a/fecs_trace_gk20a.c | 8 |
1 files changed, 4 insertions, 4 deletions
diff --git a/drivers/gpu/nvgpu/gk20a/fecs_trace_gk20a.c b/drivers/gpu/nvgpu/gk20a/fecs_trace_gk20a.c index 316dcda4..ffc5f9f5 100644 --- a/drivers/gpu/nvgpu/gk20a/fecs_trace_gk20a.c +++ b/drivers/gpu/nvgpu/gk20a/fecs_trace_gk20a.c | |||
@@ -77,9 +77,9 @@ static inline u64 gk20a_fecs_trace_record_ts_timestamp_v(u64 ts) | |||
77 | } | 77 | } |
78 | 78 | ||
79 | 79 | ||
80 | static u32 gk20a_fecs_trace_fecs_context_ptr(struct channel_gk20a *ch) | 80 | static u32 gk20a_fecs_trace_fecs_context_ptr(struct gk20a *g, struct channel_gk20a *ch) |
81 | { | 81 | { |
82 | return (u32) (sg_phys(ch->inst_block.sgt->sgl) >> 12LL); | 82 | return (u32) (gk20a_mm_inst_block_addr(g, &ch->inst_block) >> 12LL); |
83 | } | 83 | } |
84 | 84 | ||
85 | static inline int gk20a_fecs_trace_num_ts(void) | 85 | static inline int gk20a_fecs_trace_num_ts(void) |
@@ -619,7 +619,7 @@ static int gk20a_fecs_trace_bind_channel(struct gk20a *g, | |||
619 | struct channel_ctx_gk20a *ch_ctx = &ch->ch_ctx; | 619 | struct channel_ctx_gk20a *ch_ctx = &ch->ch_ctx; |
620 | struct gk20a_fecs_trace *trace = g->fecs_trace; | 620 | struct gk20a_fecs_trace *trace = g->fecs_trace; |
621 | struct nvgpu_mem *mem = &ch_ctx->gr_ctx->mem; | 621 | struct nvgpu_mem *mem = &ch_ctx->gr_ctx->mem; |
622 | u32 context_ptr = gk20a_fecs_trace_fecs_context_ptr(ch); | 622 | u32 context_ptr = gk20a_fecs_trace_fecs_context_ptr(g, ch); |
623 | pid_t pid; | 623 | pid_t pid; |
624 | u32 aperture; | 624 | u32 aperture; |
625 | 625 | ||
@@ -675,7 +675,7 @@ static int gk20a_fecs_trace_bind_channel(struct gk20a *g, | |||
675 | 675 | ||
676 | static int gk20a_fecs_trace_unbind_channel(struct gk20a *g, struct channel_gk20a *ch) | 676 | static int gk20a_fecs_trace_unbind_channel(struct gk20a *g, struct channel_gk20a *ch) |
677 | { | 677 | { |
678 | u32 context_ptr = gk20a_fecs_trace_fecs_context_ptr(ch); | 678 | u32 context_ptr = gk20a_fecs_trace_fecs_context_ptr(g, ch); |
679 | 679 | ||
680 | gk20a_dbg(gpu_dbg_fn|gpu_dbg_ctxsw, | 680 | gk20a_dbg(gpu_dbg_fn|gpu_dbg_ctxsw, |
681 | "ch=%p context_ptr=%x", ch, context_ptr); | 681 | "ch=%p context_ptr=%x", ch, context_ptr); |