diff --git a/drivers/gpu/nvgpu/gm20b/ltc_gm20b.c b/drivers/gpu/nvgpu/gm20b/ltc_gm20b.c index 305e28c2f..07d405b24 100644 --- a/drivers/gpu/nvgpu/gm20b/ltc_gm20b.c +++ b/drivers/gpu/nvgpu/gm20b/ltc_gm20b.c @@ -26,10 +26,6 @@ static int gm20b_ltc_init_comptags(struct gk20a *g, struct gr_gk20a *gr) { - struct device *d = dev_from_gk20a(g); - DEFINE_DMA_ATTRS(attrs); - dma_addr_t iova; - /* max memory size (MB) to cover */ u32 max_size = gr->max_comptag_mem; /* one tag line covers 128KB */ @@ -49,6 +45,8 @@ static int gm20b_ltc_init_comptags(struct gk20a *g, struct gr_gk20a *gr) u32 compbit_backing_size; + int err; + gk20a_dbg_fn(""); if (max_comptag_lines == 0) { @@ -83,17 +81,13 @@ static int gm20b_ltc_init_comptags(struct gk20a *g, struct gr_gk20a *gr) gk20a_dbg_info("max comptag lines : %d", max_comptag_lines); - dma_set_attr(DMA_ATTR_NO_KERNEL_MAPPING, &attrs); - gr->compbit_store.size = compbit_backing_size; - gr->compbit_store.pages = dma_alloc_attrs(d, gr->compbit_store.size, - &iova, GFP_KERNEL, &attrs); - if (!gr->compbit_store.pages) { - gk20a_err(dev_from_gk20a(g), "failed to allocate" - "backing store for compbit : size %d", - compbit_backing_size); - return -ENOMEM; - } - gr->compbit_store.base_iova = iova; + if (IS_ENABLED(CONFIG_GK20A_PHYS_PAGE_TABLES)) + err = gk20a_ltc_alloc_phys_cbc(g, compbit_backing_size); + else + err = gk20a_ltc_alloc_virt_cbc(g, compbit_backing_size); + + if (err) + return err; gk20a_allocator_init(&gr->comp_tags, "comptag", 1, /* start */