summaryrefslogtreecommitdiff
path: root/linux-core
diff options
context:
space:
mode:
Diffstat (limited to 'linux-core')
-rw-r--r--linux-core/Makefile6
-rw-r--r--linux-core/drm_compat.h8
-rw-r--r--linux-core/drm_drv.c2
-rw-r--r--linux-core/drm_gem.c26
-rw-r--r--linux-core/drm_vm.c2
5 files changed, 42 insertions, 2 deletions
diff --git a/linux-core/Makefile b/linux-core/Makefile
index 1790bdb0..aa212cf9 100644
--- a/linux-core/Makefile
+++ b/linux-core/Makefile
@@ -271,6 +271,10 @@ ifneq ($(PAGE_AGP),0)
EXTRA_CFLAGS += -DHAVE_PAGE_AGP
endif
+ifeq ($(OS_HAS_GEM), 1)
+EXTRA_CFLAGS += -DOS_HAS_GEM=1
+endif
+
# Start with all modules turned off.
CONFIG_DRM_GAMMA := n
CONFIG_DRM_TDFX := n
@@ -337,8 +341,10 @@ ifneq (,$(findstring i810,$(DRM_MODULES)))
CONFIG_DRM_I810 := m
endif
ifneq (,$(findstring i915,$(DRM_MODULES)))
+ifeq ($(OS_HAS_GEM), 1)
CONFIG_DRM_I915 := m
endif
+endif
GIT_REVISION := $(shell cd "$(DRMSRCDIR)" && git-describe --abbrev=17)
ifneq ($(GIT_REVISION),)
diff --git a/linux-core/drm_compat.h b/linux-core/drm_compat.h
index 35066f29..88c5bb1d 100644
--- a/linux-core/drm_compat.h
+++ b/linux-core/drm_compat.h
@@ -401,4 +401,12 @@ extern struct page *drm_vm_sg_nopage(struct vm_area_struct *vma,
#define drm_core_ioremap_wc drm_core_ioremap
#endif
+#ifndef OS_HAS_GEM
+#if (LINUX_VERSION_CODE > KERNEL_VERSION(2,6,27))
+#define OS_HAS_GEM 1
+#else
+#define OS_HAS_GEM 0
+#endif
+#endif
+
#endif
diff --git a/linux-core/drm_drv.c b/linux-core/drm_drv.c
index be441b00..aefbd76d 100644
--- a/linux-core/drm_drv.c
+++ b/linux-core/drm_drv.c
@@ -176,9 +176,11 @@ static struct drm_ioctl_desc drm_ioctls[] = {
DRM_IOCTL_DEF(DRM_IOCTL_MM_INFO, drm_mm_info_ioctl, 0),
+#if OS_HAS_GEM
DRM_IOCTL_DEF(DRM_IOCTL_GEM_CLOSE, drm_gem_close_ioctl, 0),
DRM_IOCTL_DEF(DRM_IOCTL_GEM_FLINK, drm_gem_flink_ioctl, DRM_AUTH),
DRM_IOCTL_DEF(DRM_IOCTL_GEM_OPEN, drm_gem_open_ioctl, DRM_AUTH),
+#endif
};
#define DRM_CORE_IOCTL_COUNT ARRAY_SIZE( drm_ioctls )
diff --git a/linux-core/drm_gem.c b/linux-core/drm_gem.c
index 05320376..0cbf9cab 100644
--- a/linux-core/drm_gem.c
+++ b/linux-core/drm_gem.c
@@ -25,6 +25,12 @@
*
*/
+#include <linux/version.h>
+
+#include "drmP.h"
+
+#if OS_HAS_GEM
+
#include <linux/types.h>
#include <linux/slab.h>
#include <linux/mm.h>
@@ -34,7 +40,6 @@
#include <linux/module.h>
#include <linux/mman.h>
#include <linux/pagemap.h>
-#include "drmP.h"
/** @file drm_gem.c
*
@@ -417,3 +422,22 @@ drm_gem_object_handle_free(struct kref *kref)
}
EXPORT_SYMBOL(drm_gem_object_handle_free);
+#else
+
+int drm_gem_init(struct drm_device *dev)
+{
+ return 0;
+}
+
+void drm_gem_open(struct drm_device *dev, struct drm_file *file_private)
+{
+
+}
+
+void
+drm_gem_release(struct drm_device *dev, struct drm_file *file_private)
+{
+
+}
+
+#endif
diff --git a/linux-core/drm_vm.c b/linux-core/drm_vm.c
index 0d5242d3..d4d97a4d 100644
--- a/linux-core/drm_vm.c
+++ b/linux-core/drm_vm.c
@@ -698,7 +698,7 @@ EXPORT_SYMBOL(drm_mmap);
* protected by the bo->mutex lock.
*/
-#ifdef DRM_FULL_MM_COMPAT
+#if defined(DRM_FULL_MM_COMPAT) && !defined(DRM_NO_FAULT)
static int drm_bo_vm_fault(struct vm_area_struct *vma,
struct vm_fault *vmf)
{