aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLokesh Batra <lbatra@codeaurora.org>2013-09-17 16:27:45 -0700
committerLokesh Batra <lbatra@codeaurora.org>2013-09-23 17:07:08 -0700
commit75c5cb0a2f90035c757531afcd3722288857c965 (patch)
treedef698cfbe2939110d028bb75cf5ad422b786fd0
parent9f8f4c98cddf50cc7c367e0758506ef0fb377952 (diff)
msm: kgsl: Force KGSL Per Process Page Table to be False for A310
KGSL Per Process Page Table is not working for A310. So we disable it for now. Change-Id: I74f8034b3240a9c1f686cb1f87b961d7f41ffbb1 Signed-off-by: Lokesh Batra <lbatra@codeaurora.org>
-rw-r--r--drivers/gpu/msm/adreno.c6
-rw-r--r--drivers/gpu/msm/kgsl_iommu.c6
2 files changed, 9 insertions, 3 deletions
diff --git a/drivers/gpu/msm/adreno.c b/drivers/gpu/msm/adreno.c
index 84f30e89442..7960ae52982 100644
--- a/drivers/gpu/msm/adreno.c
+++ b/drivers/gpu/msm/adreno.c
@@ -1601,6 +1601,9 @@ adreno_probe(struct platform_device *pdev)
if (status != 0)
goto error;
+ /* Identify the specific GPU */
+ adreno_identify_gpu(adreno_dev);
+
status = kgsl_device_platform_probe(device);
if (status)
goto error_close_rb;
@@ -1675,9 +1678,6 @@ static int adreno_init(struct kgsl_device *device)
/* Power up the device */
kgsl_pwrctrl_enable(device);
- /* Identify the specific GPU */
- adreno_identify_gpu(adreno_dev);
-
if (adreno_ringbuffer_read_pm4_ucode(device)) {
KGSL_DRV_ERR(device, "Reading pm4 microcode failed %s\n",
adreno_dev->pm4_fwfile);
diff --git a/drivers/gpu/msm/kgsl_iommu.c b/drivers/gpu/msm/kgsl_iommu.c
index a359d8743b5..a15fed1a0ae 100644
--- a/drivers/gpu/msm/kgsl_iommu.c
+++ b/drivers/gpu/msm/kgsl_iommu.c
@@ -1349,6 +1349,8 @@ static int kgsl_iommu_init(struct kgsl_mmu *mmu)
*/
int status = 0;
struct kgsl_iommu *iommu;
+ struct kgsl_device *device = mmu->device;
+ struct adreno_device *adreno_dev = ADRENO_DEVICE(device);
atomic_set(&mmu->fault, 0);
iommu = kzalloc(sizeof(struct kgsl_iommu), GFP_KERNEL);
@@ -1375,6 +1377,10 @@ static int kgsl_iommu_init(struct kgsl_mmu *mmu)
(msm_soc_version_supports_iommu_v0() ||
iommu->iommu_units[0].iommu_halt_enable);
+ /* KGSL Per Process Page Table is broken for A310*/
+ if (adreno_is_a310(adreno_dev))
+ mmu->pt_per_process = 0;
+
/*
* For IOMMU per-process pagetables, the allocatable range
* and the kernel global range must both be outside