From 1d95b96652c48a85a59daca9ab05397ded785a66 Mon Sep 17 00:00:00 2001 From: Thomas Fleury Date: Wed, 12 Apr 2017 11:31:51 -0700 Subject: 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 Reviewed-on: http://git-master/r/1461646 (cherry picked from commit 0a58c5ace036cdf53e3555afe33f694b801f2629) Reviewed-on: http://git-master/r/1462396 Reviewed-by: mobile promotions Tested-by: mobile promotions --- drivers/gpu/nvgpu/gk20a/fecs_trace_gk20a.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) (limited to 'drivers/gpu/nvgpu/gk20a/fecs_trace_gk20a.c') 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) } -static u32 gk20a_fecs_trace_fecs_context_ptr(struct channel_gk20a *ch) +static u32 gk20a_fecs_trace_fecs_context_ptr(struct gk20a *g, struct channel_gk20a *ch) { - return (u32) (sg_phys(ch->inst_block.sgt->sgl) >> 12LL); + return (u32) (gk20a_mm_inst_block_addr(g, &ch->inst_block) >> 12LL); } static inline int gk20a_fecs_trace_num_ts(void) @@ -619,7 +619,7 @@ static int gk20a_fecs_trace_bind_channel(struct gk20a *g, struct channel_ctx_gk20a *ch_ctx = &ch->ch_ctx; struct gk20a_fecs_trace *trace = g->fecs_trace; struct nvgpu_mem *mem = &ch_ctx->gr_ctx->mem; - u32 context_ptr = gk20a_fecs_trace_fecs_context_ptr(ch); + u32 context_ptr = gk20a_fecs_trace_fecs_context_ptr(g, ch); pid_t pid; u32 aperture; @@ -675,7 +675,7 @@ static int gk20a_fecs_trace_bind_channel(struct gk20a *g, static int gk20a_fecs_trace_unbind_channel(struct gk20a *g, struct channel_gk20a *ch) { - u32 context_ptr = gk20a_fecs_trace_fecs_context_ptr(ch); + u32 context_ptr = gk20a_fecs_trace_fecs_context_ptr(g, ch); gk20a_dbg(gpu_dbg_fn|gpu_dbg_ctxsw, "ch=%p context_ptr=%x", ch, context_ptr); -- cgit v1.2.2