From 04f620de392d003405617bb9ea239b93e0053932 Mon Sep 17 00:00:00 2001 From: Shubhraprakash Das Date: Sat, 11 Aug 2012 18:26:29 -0700 Subject: [PATCH] msm: kgsl: Map ebi memory to kernel Implement the function to map ebi memory to the kernel. This function is used when from postmortem or snapshot when there is a hang and we are allocating memory from kernel ebi space Change-Id: I4f3e8b3fcb8c0107599ce3d3636c0ed33ace725a Signed-off-by: Shubhraprakash Das --- drivers/gpu/msm/kgsl_sharedmem.c | 15 +++++++++++++++ 1 file changed, 15 insertions(+) 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 = {