summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDave Airlie <airlied@linux.ie>2006-04-23 09:05:05 +0000
committerDave Airlie <airlied@linux.ie>2006-04-23 09:05:05 +0000
commitd365f031292d0f50755a3049c410443b1075fff5 (patch)
tree80027dd2f45e1a6a24e48edbf4cf98eaafffa39e
parent30a5787d3671fba89d14efb638695c2dd61adf03 (diff)
fixup GFP_COMP for older kernels and get_page/put_page for newer
-rw-r--r--linux-core/ati_pcigart.c7
-rw-r--r--linux-core/drm_compat.h6
2 files changed, 11 insertions, 2 deletions
diff --git a/linux-core/ati_pcigart.c b/linux-core/ati_pcigart.c
index 6e4353b5..14317925 100644
--- a/linux-core/ati_pcigart.c
+++ b/linux-core/ati_pcigart.c
@@ -59,7 +59,8 @@ static void *drm_ati_alloc_pcigart_table(void)
int i;
DRM_DEBUG("%s\n", __FUNCTION__);
- address = __get_free_pages(GFP_KERNEL, ATI_PCIGART_TABLE_ORDER);
+ address = __get_free_pages(GFP_KERNEL | __GFP_COMP,
+ ATI_PCIGART_TABLE_ORDER);
if (address == 0UL) {
return 0;
}
@@ -67,7 +68,9 @@ static void *drm_ati_alloc_pcigart_table(void)
page = virt_to_page(address);
for (i = 0; i < ATI_PCIGART_TABLE_PAGES; i++, page++) {
+#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,15)
get_page(page);
+#endif
SetPageReserved(page);
}
@@ -84,7 +87,9 @@ static void drm_ati_free_pcigart_table(void *address)
page = virt_to_page((unsigned long)address);
for (i = 0; i < ATI_PCIGART_TABLE_PAGES; i++, page++) {
+#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,15)
__put_page(page);
+#endif
ClearPageReserved(page);
}
diff --git a/linux-core/drm_compat.h b/linux-core/drm_compat.h
index 46d6c0e6..03749d14 100644
--- a/linux-core/drm_compat.h
+++ b/linux-core/drm_compat.h
@@ -169,10 +169,14 @@ static inline void radeon_delete_i2c_busses(struct drm_device *dev)
#define __user
#endif
-#ifndef __put_page
+#if !defined(__put_page)
#define __put_page(p) atomic_dec(&(p)->count)
#endif
+#if !defined(__GFP_COMP)
+#define __GFP_COMP 0
+#endif
+
#ifndef REMAP_PAGE_RANGE_5_ARGS
#define DRM_RPR_ARG(vma)
#else