diff --git a/drivers/gpu/msm/kgsl_sharedmem.c b/drivers/gpu/msm/kgsl_sharedmem.c index b341485c6a2..cb33ec8dbac 100644 --- a/drivers/gpu/msm/kgsl_sharedmem.c +++ b/drivers/gpu/msm/kgsl_sharedmem.c @@ -438,6 +438,20 @@ static void kgsl_ebimem_free(struct kgsl_memdesc *memdesc) free_contiguous_memory_by_paddr(memdesc->physaddr); } +static int kgsl_ebimem_map_kernel(struct kgsl_memdesc *memdesc) +{ + if (!memdesc->hostptr) { + memdesc->hostptr = ioremap(memdesc->physaddr, memdesc->size); + if (!memdesc->hostptr) { + KGSL_CORE_ERR("ioremap failed, addr:0x%p, size:0x%x\n", + memdesc->hostptr, memdesc->size); + return -ENOMEM; + } + } + + return 0; +} + static void kgsl_coherent_free(struct kgsl_memdesc *memdesc) { kgsl_driver.stats.coherent -= memdesc->size; @@ -458,6 +472,7 @@ static struct kgsl_memdesc_ops kgsl_ebimem_ops = { .free = kgsl_ebimem_free, .vmflags = kgsl_contiguous_vmflags, .vmfault = kgsl_contiguous_vmfault, + .map_kernel_mem = kgsl_ebimem_map_kernel, }; static struct kgsl_memdesc_ops kgsl_coherent_ops = {