OSDN Git Service

fixup GFP_COMP for older kernels and get_page/put_page for newer
authorDave Airlie <airlied@linux.ie>
Sun, 23 Apr 2006 09:05:05 +0000 (09:05 +0000)
committerDave Airlie <airlied@linux.ie>
Sun, 23 Apr 2006 09:05:05 +0000 (09:05 +0000)
linux-core/ati_pcigart.c
linux-core/drm_compat.h

index 6e4353b..1431792 100644 (file)
@@ -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);
        }
 
index 46d6c0e..03749d1 100644 (file)
@@ -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