]> xenbits.xensource.com Git - legacy/linux-2.6.18-xen.git/commitdiff
linux: revert arch_free_page() change
authorKeir Fraser <keir@xensource.com>
Thu, 25 Oct 2007 15:10:19 +0000 (16:10 +0100)
committerKeir Fraser <keir@xensource.com>
Thu, 25 Oct 2007 15:10:19 +0000 (16:10 +0100)
Since mm/page_alloc.c needs to be changed in two places anyway, the
same effect can (now) be achieved with less modifications elsewhere.

Signed-off-by: Jan Beulich <jbeulich@novell.com>
arch/um/kernel/physmem.c
include/asm-i386/mach-xen/asm/page.h
include/asm-ia64/page.h
include/asm-powerpc/page.h
include/asm-um/page.h
include/asm-x86_64/mach-xen/asm/page.h
include/linux/gfp.h
mm/page_alloc.c

index 22c40d3085f7f838302c2a92e0e66728c60d86fd..abafa64b8727ecef4e0b35f04fbcae7d7551662a 100644 (file)
@@ -226,7 +226,7 @@ EXPORT_SYMBOL(physmem_forget_descriptor);
 EXPORT_SYMBOL(physmem_remove_mapping);
 EXPORT_SYMBOL(physmem_subst_mapping);
 
-int arch_free_page(struct page *page, int order)
+void arch_free_page(struct page *page, int order)
 {
        void *virt;
        int i;
@@ -235,8 +235,6 @@ int arch_free_page(struct page *page, int order)
                virt = __va(page_to_phys(page + i));
                physmem_remove_mapping(virt);
        }
-
-       return 0;
 }
 
 int is_remapped(void *virt)
index f0091170077d3ec67a5ede33b320802d34901c7d..7f3fb72b2e2c0e1cd85b89b3f370a710b925f36c 100644 (file)
 #include <xen/interface/xen.h>
 #include <xen/features.h>
 
-#define arch_free_page(_page,_order)           \
-({     int foreign = PageForeign(_page);       \
-       if (foreign)                            \
-               PageForeignDestructor(_page);   \
-       foreign;                                \
-})
-#define HAVE_ARCH_FREE_PAGE
-
 #ifdef CONFIG_X86_USE_3DNOW
 
 #include <asm/mmx.h>
index a956380de5f786521f754c0b9c2a3ef07a167962..a3de99f451daefcd89a9e9e471a2cd38084acd27 100644 (file)
@@ -239,15 +239,6 @@ get_order (unsigned long size)
 
 #include <asm/maddr.h>
 
-#define arch_free_page(_page, _order)          \
-({                                             \
-       int foreign = PageForeign(_page);       \
-       if (foreign)                            \
-               PageForeignDestructor(_page);   \
-       foreign;                                \
-})
-#define HAVE_ARCH_FREE_PAGE
-
 #endif /* CONFIG_XEN */
 #endif /* __ASSEMBLY__ */
 
index 227ffa3a573f337101427bd1d50acb93454232fd..fb597b37c2a2f0deaeadf8cf303105f632fb9aa6 100644 (file)
@@ -194,15 +194,6 @@ extern int page_is_ram(unsigned long pfn);
 struct vm_area_struct;
 extern const char *arch_vma_name(struct vm_area_struct *vma);
 
-#define arch_free_page(_page, _order)       \
-({                      \
-       int foreign = PageForeign(_page);   \
-       if (foreign) \
-               PageForeignDestructor(_page);   \
-       foreign; \
-})
-#define HAVE_ARCH_FREE_PAGE
-
 #include <asm-generic/memory_model.h>
 #endif /* __ASSEMBLY__ */
 
index 7ea772610a1478cf06e7907963ec6de934625983..4296d3135aa996e5f3eeeaf1267338644acdc2ad 100644 (file)
@@ -114,7 +114,7 @@ extern unsigned long uml_physmem;
 extern struct page *arch_validate(struct page *page, gfp_t mask, int order);
 #define HAVE_ARCH_VALIDATE
 
-extern int arch_free_page(struct page *page, int order);
+extern void arch_free_page(struct page *page, int order);
 #define HAVE_ARCH_FREE_PAGE
 
 #include <asm-generic/memory_model.h>
index 965effd266439bfe7c66ac3b1c96275c36489127..89cceec2f2c3021fd785df0ecf4d0e01f948c893 100644 (file)
  */
 #define _PAGE_PRESENT  0x001
 
-#define arch_free_page(_page,_order)           \
-({     int foreign = PageForeign(_page);       \
-       if (foreign)                            \
-               PageForeignDestructor(_page);   \
-       foreign;                                \
-})
-#define HAVE_ARCH_FREE_PAGE
-
 /* PAGE_SHIFT determines the page size */
 #define PAGE_SHIFT     12
 #ifdef __ASSEMBLY__
index f24dcf4fbab1846653b2cc27ad590d00d8ea018e..cc9e608444845c30509331521f330512b2dbbb4c 100644 (file)
@@ -99,11 +99,7 @@ static inline int gfp_zone(gfp_t gfp)
  */
 
 #ifndef HAVE_ARCH_FREE_PAGE
-/*
- * If arch_free_page returns non-zero then the generic free_page code can
- * immediately bail: the arch-specific function has done all the work.
- */
-static inline int arch_free_page(struct page *page, int order) { return 0; }
+static inline void arch_free_page(struct page *page, int order) { }
 #endif
 
 extern struct page *
index d07e06cdac45a1946411b97a03ef58fc90cf5529..c9f834eee7752d7cbb189e8616d7f7db4a96c35d 100644 (file)
@@ -451,8 +451,13 @@ static void __free_pages_ok(struct page *page, unsigned int order)
        int i;
        int reserved = 0;
 
-       if (arch_free_page(page, order))
+#ifdef CONFIG_XEN
+       if (PageForeign(page)) {
+               PageForeignDestructor(page);
                return;
+       }
+#endif
+       arch_free_page(page, order);
        if (!PageHighMem(page))
                debug_check_no_locks_freed(page_address(page),
                                           PAGE_SIZE<<order);
@@ -730,8 +735,13 @@ static void fastcall free_hot_cold_page(struct page *page, int cold)
        struct per_cpu_pages *pcp;
        unsigned long flags;
 
-       if (arch_free_page(page, 0))
+#ifdef CONFIG_XEN
+       if (PageForeign(page)) {
+               PageForeignDestructor(page);
                return;
+       }
+#endif
+       arch_free_page(page, 0);
 
        if (PageAnon(page))
                page->mapping = NULL;