summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--linux-core/drmP.h3
-rw-r--r--linux/agpsupport.c6
-rw-r--r--linux/drmP.h3
-rw-r--r--linux/memory.c1
-rw-r--r--linux/vm.c5
5 files changed, 13 insertions, 5 deletions
diff --git a/linux-core/drmP.h b/linux-core/drmP.h
index 4f85d07c..0fa20571 100644
--- a/linux-core/drmP.h
+++ b/linux-core/drmP.h
@@ -46,6 +46,7 @@
#include <linux/version.h>
#include <linux/sched.h>
#include <linux/smp_lock.h> /* For (un)lock_kernel */
+#include <linux/mm.h>
#include <asm/io.h>
#include <asm/mman.h>
#include <asm/uaccess.h>
@@ -140,7 +141,7 @@ typedef struct wait_queue *wait_queue_head_t;
#endif
/* virt_to_page added in 2.4.0-test6 */
-#ifndef virt_to_page
+#if LINUX_VERSION_CODE < 0x020400
#define virt_to_page(kaddr) (mem_map + MAP_NR(kaddr))
#endif
diff --git a/linux/agpsupport.c b/linux/agpsupport.c
index 7ed234e1..42a1bc2f 100644
--- a/linux/agpsupport.c
+++ b/linux/agpsupport.c
@@ -309,7 +309,9 @@ drm_agp_head_t *drm_agp_init(void)
#if LINUX_VERSION_CODE >= 0x020400
case VIA_MVP4: head->chipset = "VIA MVP4"; break;
- case VIA_APOLLO_SUPER: head->chipset = "VIA Apollo Super";
+ case VIA_APOLLO_KX133: head->chipset = "VIA Apollo KX133";
+ break;
+ case VIA_APOLLO_KT133: head->chipset = "VIA Apollo KT133";
break;
#endif
@@ -322,7 +324,7 @@ drm_agp_head_t *drm_agp_init(void)
case ALI_M1541: head->chipset = "ALi M1541"; break;
default: head->chipset = "Unknown"; break;
}
- DRM_INFO("AGP %d.%d on %s @ 0x%08lx %dMB\n",
+ DRM_INFO("AGP %d.%d on %s @ 0x%08lx %ZuMB\n",
head->agp_info.version.major,
head->agp_info.version.minor,
head->chipset,
diff --git a/linux/drmP.h b/linux/drmP.h
index 4f85d07c..0fa20571 100644
--- a/linux/drmP.h
+++ b/linux/drmP.h
@@ -46,6 +46,7 @@
#include <linux/version.h>
#include <linux/sched.h>
#include <linux/smp_lock.h> /* For (un)lock_kernel */
+#include <linux/mm.h>
#include <asm/io.h>
#include <asm/mman.h>
#include <asm/uaccess.h>
@@ -140,7 +141,7 @@ typedef struct wait_queue *wait_queue_head_t;
#endif
/* virt_to_page added in 2.4.0-test6 */
-#ifndef virt_to_page
+#if LINUX_VERSION_CODE < 0x020400
#define virt_to_page(kaddr) (mem_map + MAP_NR(kaddr))
#endif
diff --git a/linux/memory.c b/linux/memory.c
index bcb674b5..34d19b20 100644
--- a/linux/memory.c
+++ b/linux/memory.c
@@ -32,6 +32,7 @@
#define __NO_VERSION__
#include <linux/config.h>
#include "drmP.h"
+#include <linux/wrapper.h>
typedef struct drm_mem_stats {
const char *name;
diff --git a/linux/vm.c b/linux/vm.c
index d295529b..7c5a24bc 100644
--- a/linux/vm.c
+++ b/linux/vm.c
@@ -250,7 +250,7 @@ int drm_mmap_dma(struct file *filp, struct vm_area_struct *vma)
vma->vm_start, vma->vm_end, VM_OFFSET(vma));
/* Length must match exact page count */
- if ((length >> PAGE_SHIFT) != dma->page_count) {
+ if (!dma || (length >> PAGE_SHIFT) != dma->page_count) {
unlock_kernel();
return -EINVAL;
}
@@ -323,6 +323,9 @@ int drm_mmap(struct file *filp, struct vm_area_struct *vma)
pgprot_val(vma->vm_page_prot) |= _PAGE_PCD;
pgprot_val(vma->vm_page_prot) &= ~_PAGE_PWT;
}
+#elif defined(__ia64__)
+ if (map->type != _DRM_AGP)
+ vma->vm_page_prot = pgprot_writecombine(vma->vm_page_prot);
#endif
vma->vm_flags |= VM_IO; /* not in core dump */
}