msm: kgsl: Allocate setstate memory when no MMU is used
Setstate memory should be allocated even when no MMU is used
because it is used when submitting workaround commands.
Change-Id: Ia8217cec9507bff82680e737b4328c2611f5f917
Signed-off-by: Shubhraprakash Das <sadas@codeaurora.org>
diff --git a/drivers/gpu/msm/kgsl_mmu.c b/drivers/gpu/msm/kgsl_mmu.c
index 2c63bb6..234841d 100644
--- a/drivers/gpu/msm/kgsl_mmu.c
+++ b/drivers/gpu/msm/kgsl_mmu.c
@@ -340,9 +340,15 @@
mmu->device = device;
if (KGSL_MMU_TYPE_NONE == kgsl_mmu_type) {
- dev_info(device->dev, "|%s| MMU type set for device is "
- "NOMMU\n", __func__);
- return 0;
+ int status = 0;
+ status = kgsl_allocate_contiguous(&mmu->setstate_memory, 64);
+ if (!status) {
+ kgsl_sharedmem_set(&mmu->setstate_memory, 0, 0,
+ mmu->setstate_memory.size);
+ dev_info(device->dev, "|%s| MMU type set for device is "
+ "NOMMU\n", __func__);
+ }
+ return status;
} else if (KGSL_MMU_TYPE_GPU == kgsl_mmu_type)
mmu->mmu_ops = &gpummu_ops;
else if (KGSL_MMU_TYPE_IOMMU == kgsl_mmu_type)
@@ -748,9 +754,10 @@
{
struct kgsl_mmu *mmu = &device->mmu;
- if (kgsl_mmu_type == KGSL_MMU_TYPE_NONE)
+ if (kgsl_mmu_type == KGSL_MMU_TYPE_NONE) {
+ kgsl_sharedmem_free(&mmu->setstate_memory);
return 0;
- else
+ } else
return mmu->mmu_ops->mmu_close(device);
}
EXPORT_SYMBOL(kgsl_mmu_close);