From 9b5427da37161c350d28a821652f2bb84bca360f Mon Sep 17 00:00:00 2001 From: Terje Bergstrom Date: Thu, 31 Mar 2016 13:33:02 -0700 Subject: gpu: nvgpu: Support GPUs with no physical mode Support GPUs which cannot choose between SMMU and physical addressing. Change-Id: If3256fa1bc795a84d039ad3aa63ebdccf5cc0afb Signed-off-by: Terje Bergstrom Reviewed-on: http://git-master/r/1120469 GVS: Gerrit_Virtual_Submit Reviewed-by: Alex Waterman --- drivers/gpu/nvgpu/gk20a/fifo_gk20a.c | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) (limited to 'drivers/gpu/nvgpu/gk20a/fifo_gk20a.c') diff --git a/drivers/gpu/nvgpu/gk20a/fifo_gk20a.c b/drivers/gpu/nvgpu/gk20a/fifo_gk20a.c index 4422bca4..44329a53 100644 --- a/drivers/gpu/nvgpu/gk20a/fifo_gk20a.c +++ b/drivers/gpu/nvgpu/gk20a/fifo_gk20a.c @@ -654,17 +654,21 @@ int gk20a_init_fifo_support(struct gk20a *g) static struct channel_gk20a * channel_from_inst_ptr(struct fifo_gk20a *f, u64 inst_ptr) { + struct gk20a *g = f->g; int ci; if (unlikely(!f->channel)) return NULL; for (ci = 0; ci < f->num_channels; ci++) { - struct channel_gk20a *ch = gk20a_channel_get(&f->channel[ci]); + struct channel_gk20a *ch; + u64 ch_inst_ptr; + + ch = gk20a_channel_get(&f->channel[ci]); /* only alive channels are searched */ if (!ch) continue; - if (ch->inst_block.cpu_va && - (inst_ptr == gk20a_mem_phys(&ch->inst_block))) + ch_inst_ptr = gk20a_mm_inst_block_addr(g, &ch->inst_block); + if (ch->inst_block.cpu_va && inst_ptr == ch_inst_ptr) return ch; gk20a_channel_put(ch); @@ -1087,10 +1091,10 @@ static bool gk20a_fifo_handle_mmu_fault( ch->hw_chid); } } else if (f.inst_ptr == - gk20a_mem_phys(&g->mm.bar1.inst_block)) { + gk20a_mm_inst_block_addr(g, &g->mm.bar1.inst_block)) { gk20a_err(dev_from_gk20a(g), "mmu fault from bar1"); } else if (f.inst_ptr == - gk20a_mem_phys(&g->mm.pmu.inst_block)) { + gk20a_mm_inst_block_addr(g, &g->mm.pmu.inst_block)) { gk20a_err(dev_from_gk20a(g), "mmu fault from pmu"); } else gk20a_err(dev_from_gk20a(g), "couldn't locate channel for mmu fault"); -- cgit v1.2.2