msm: kgsl: remove *MMU type options from Kconfig
Remove the ability to switch between gpummu and iommu via
kernel config. The new decision path is: if kgsl.mmutype is set,
use that. Otherwise if iommu_found() use iommu, and last
but not least use the gpummu.
Change-Id: I6d34baf72da53e566bfa7081c6741f7fd0180aea
Signed-off-by: Jeremy Gebben <jgebben@codeaurora.org>
diff --git a/drivers/gpu/msm/Kconfig b/drivers/gpu/msm/Kconfig
index 5852e26..ba63fbc 100644
--- a/drivers/gpu/msm/Kconfig
+++ b/drivers/gpu/msm/Kconfig
@@ -64,24 +64,10 @@
bool "Build a DRM interface for the MSM_KGSL driver"
depends on MSM_KGSL && DRM
-config MSM_KGSL_GPUMMU
- bool "Enable the GPU MMU in the MSM_KGSL driver"
- depends on MSM_KGSL && !MSM_KGSL_CFF_DUMP
- default y
-
-config MSM_KGSL_IOMMU
- bool "Enable the use of IOMMU in the MSM_KGSL driver"
- depends on MSM_KGSL && MSM_IOMMU && !MSM_KGSL_GPUMMU && !MSM_KGSL_CFF_DUMP
-
-config MSM_KGSL_MMU
- bool
- depends on MSM_KGSL_GPUMMU || MSM_KGSL_IOMMU
- default y
-
config KGSL_PER_PROCESS_PAGE_TABLE
bool "Enable Per Process page tables for the KGSL driver"
default n
- depends on MSM_KGSL_GPUMMU && !MSM_KGSL_DRM
+ depends on !MSM_KGSL_DRM
---help---
The MMU will use per process pagetables when enabled.
@@ -105,7 +91,6 @@
config MSM_KGSL_MMU_PAGE_FAULT
bool "Force the GPU MMU to page fault for unmapped regions"
default y
- depends on MSM_KGSL_GPUMMU
config MSM_KGSL_DISABLE_SHADOW_WRITES
bool "Disable register shadow writes for context switches"
diff --git a/drivers/gpu/msm/kgsl_drm.c b/drivers/gpu/msm/kgsl_drm.c
index cdf9dc4..dba2dfc 100644
--- a/drivers/gpu/msm/kgsl_drm.c
+++ b/drivers/gpu/msm/kgsl_drm.c
@@ -315,7 +315,6 @@
return 0;
}
-#ifdef CONFIG_MSM_KGSL_MMU
static void
kgsl_gem_unmap(struct drm_gem_object *obj)
{
@@ -335,12 +334,6 @@
priv->flags &= ~DRM_KGSL_GEM_FLAG_MAPPED;
}
-#else
-static void
-kgsl_gem_unmap(struct drm_gem_object *obj)
-{
-}
-#endif
static void
kgsl_gem_free_memory(struct drm_gem_object *obj)
@@ -724,7 +717,6 @@
return 0;
}
-#ifdef CONFIG_MSM_KGSL_MMU
static int
kgsl_gem_map(struct drm_gem_object *obj)
{
@@ -769,24 +761,6 @@
return ret;
}
-#else
-static int
-kgsl_gem_map(struct drm_gem_object *obj)
-{
- struct drm_kgsl_gem_object *priv = obj->driver_private;
- int index;
-
- if (TYPE_IS_PMEM(priv->type)) {
- for (index = 0; index < priv->bufcount; index++)
- priv->bufs[index].gpuaddr =
- priv->memdesc.physaddr + priv->bufs[index].offset;
-
- return 0;
- }
-
- return -EINVAL;
-}
-#endif
int
kgsl_gem_bind_gpu_ioctl(struct drm_device *dev, void *data,
diff --git a/drivers/gpu/msm/kgsl_mmu.c b/drivers/gpu/msm/kgsl_mmu.c
index 1879666..715b9d6 100644
--- a/drivers/gpu/msm/kgsl_mmu.c
+++ b/drivers/gpu/msm/kgsl_mmu.c
@@ -711,13 +711,7 @@
void kgsl_mmu_set_mmutype(char *mmutype)
{
- kgsl_mmu_type = KGSL_MMU_TYPE_NONE;
-#ifdef CONFIG_MSM_KGSL_GPUMMU
- kgsl_mmu_type = KGSL_MMU_TYPE_GPU;
-#elif defined(CONFIG_MSM_KGSL_IOMMU)
- if (iommu_found())
- kgsl_mmu_type = KGSL_MMU_TYPE_IOMMU;
-#endif
+ kgsl_mmu_type = iommu_found() ? KGSL_MMU_TYPE_IOMMU : KGSL_MMU_TYPE_GPU;
if (mmutype && !strncmp(mmutype, "gpummu", 6))
kgsl_mmu_type = KGSL_MMU_TYPE_GPU;
if (iommu_found() && mmutype && !strncmp(mmutype, "iommu", 5))
diff --git a/drivers/gpu/msm/kgsl_mmu.h b/drivers/gpu/msm/kgsl_mmu.h
index 4af073a..1338d0d 100644
--- a/drivers/gpu/msm/kgsl_mmu.h
+++ b/drivers/gpu/msm/kgsl_mmu.h
@@ -76,16 +76,10 @@
#define MH_INTERRUPT_MASK__AXI_WRITE_ERROR 0x00000002L
#define MH_INTERRUPT_MASK__MMU_PAGE_FAULT 0x00000004L
-#ifdef CONFIG_MSM_KGSL_MMU
#define KGSL_MMU_INT_MASK \
(MH_INTERRUPT_MASK__AXI_READ_ERROR | \
MH_INTERRUPT_MASK__AXI_WRITE_ERROR | \
MH_INTERRUPT_MASK__MMU_PAGE_FAULT)
-#else
-#define KGSL_MMU_INT_MASK \
- (MH_INTERRUPT_MASK__AXI_READ_ERROR | \
- MH_INTERRUPT_MASK__AXI_WRITE_ERROR)
-#endif
enum kgsl_mmutype {
KGSL_MMU_TYPE_GPU = 0,
diff --git a/drivers/gpu/msm/kgsl_sharedmem.h b/drivers/gpu/msm/kgsl_sharedmem.h
index a9abcf9..d345ff3 100644
--- a/drivers/gpu/msm/kgsl_sharedmem.h
+++ b/drivers/gpu/msm/kgsl_sharedmem.h
@@ -15,6 +15,7 @@
#include <linux/slab.h>
#include <linux/dma-mapping.h>
+#include "kgsl_mmu.h"
struct kgsl_device;
struct kgsl_process_private;
@@ -94,11 +95,9 @@
kgsl_allocate(struct kgsl_memdesc *memdesc,
struct kgsl_pagetable *pagetable, size_t size)
{
-#ifdef CONFIG_MSM_KGSL_MMU
+ if (kgsl_mmu_get_mmutype() == KGSL_MMU_TYPE_NONE)
+ return kgsl_sharedmem_ebimem(memdesc, pagetable, size);
return kgsl_sharedmem_vmalloc(memdesc, pagetable, size);
-#else
- return kgsl_sharedmem_ebimem(memdesc, pagetable, size);
-#endif
}
static inline int
@@ -106,21 +105,18 @@
struct kgsl_pagetable *pagetable,
size_t size, unsigned int flags)
{
-#ifdef CONFIG_MSM_KGSL_MMU
+ if (kgsl_mmu_get_mmutype() == KGSL_MMU_TYPE_NONE)
+ return kgsl_sharedmem_ebimem_user(memdesc, pagetable, size,
+ flags);
return kgsl_sharedmem_vmalloc_user(memdesc, pagetable, size, flags);
-#else
- return kgsl_sharedmem_ebimem_user(memdesc, pagetable, size, flags);
-#endif
}
static inline int
kgsl_allocate_contiguous(struct kgsl_memdesc *memdesc, size_t size)
{
int ret = kgsl_sharedmem_alloc_coherent(memdesc, size);
-#ifndef CONFIG_MSM_KGSL_MMU
- if (!ret)
+ if (!ret && (kgsl_mmu_get_mmutype() == KGSL_MMU_TYPE_NONE))
memdesc->gpuaddr = memdesc->physaddr;
-#endif
return ret;
}