All of lore.kernel.org
 help / color / mirror / Atom feed
* [patch 2] Xen core patch : arch_free_page return value
@ 2004-11-17 23:48 Ian Pratt
  2004-11-18  1:04 ` Dave Hansen
  2004-11-18  8:37 ` Mitchell Blank Jr
  0 siblings, 2 replies; 18+ messages in thread
From: Ian Pratt @ 2004-11-17 23:48 UTC (permalink / raw)
  To: linux-kernel; +Cc: Ian.Pratt, akpm, Keir.Fraser, Christian.Limpach


This patch adds a return value to the existing arch_free_page function
that indicates whether the normal free routine still has work to
do. The only architecture that currently uses arch_free_page is arch
'um'. arch-xen needs this for 'foreign pages' - pages that don't
belong to the page allocator but are instead managed by custom
allocators. Unlike PG_Reserved, we need the ref counting, but just
need to control how the page is finally freed.

Signed-off-by: ian.pratt@cl.cam.ac.uk

---

diff -ur linux-2.6.9/arch/um/kernel/physmem.c linux-2.6.9-new/arch/um/kernel/physmem.c
--- linux-2.6.9/arch/um/kernel/physmem.c	2004-10-18 22:54:37.000000000 +0100
+++ linux-2.6.9-new/arch/um/kernel/physmem.c	2004-11-16 17:37:32.919951978 +0000
@@ -225,7 +225,7 @@
 EXPORT_SYMBOL(physmem_remove_mapping);
 EXPORT_SYMBOL(physmem_subst_mapping);
 
-void arch_free_page(struct page *page, int order)
+int arch_free_page(struct page *page, int order)
 {
 	void *virt;
 	int i;
@@ -234,6 +234,8 @@
 		virt = __va(page_to_phys(page + i));
 		physmem_remove_mapping(virt);
 	}
+
+	return 0;
 }
 
 int is_remapped(void *virt)
diff -ur linux-2.6.9/include/asm-um/page.h linux-2.6.9-new/include/asm-um/page.h
--- linux-2.6.9/include/asm-um/page.h	2004-10-18 22:55:36.000000000 +0100
+++ linux-2.6.9-new/include/asm-um/page.h	2004-11-16 17:37:55.471701151 +0000
@@ -46,7 +46,7 @@
 extern struct page *arch_validate(struct page *page, int mask, int order);
 #define HAVE_ARCH_VALIDATE
 
-extern void arch_free_page(struct page *page, int order);
+extern int arch_free_page(struct page *page, int order);
 #define HAVE_ARCH_FREE_PAGE
 
 #endif
diff -ur linux-2.6.9/include/linux/gfp.h linux-2.6.9-new/include/linux/gfp.h
--- linux-2.6.9/include/linux/gfp.h	2004-10-18 22:53:44.000000000 +0100
+++ linux-2.6.9-new/include/linux/gfp.h	2004-11-16 17:41:25.825723812 +0000
@@ -74,8 +74,16 @@
  * optimized to &contig_page_data at compile-time.
  */
 
+/*
+ * 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.
+ */
 #ifndef HAVE_ARCH_FREE_PAGE
-static inline void arch_free_page(struct page *page, int order) { }
+static inline int arch_free_page(struct page *page, int order)
+{
+	/* Generic free_page must do the work. */
+	return 0;
+}
 #endif
 
 extern struct page *
diff -ur linux-2.6.9/mm/page_alloc.c linux-2.6.9-new/mm/page_alloc.c
--- linux-2.6.9/mm/page_alloc.c	2004-10-18 22:53:11.000000000 +0100
+++ linux-2.6.9-new/mm/page_alloc.c	2004-11-16 17:42:23.793227175 +0000
@@ -275,7 +275,8 @@
 	LIST_HEAD(list);
 	int i;
 
-	arch_free_page(page, order);
+	if (arch_free_page(page, order))
+		return;
 
 	mod_page_state(pgfree, 1 << order);
 	for (i = 0 ; i < (1 << order) ; ++i)
@@ -505,7 +506,8 @@
 	struct per_cpu_pages *pcp;
 	unsigned long flags;
 
-	arch_free_page(page, 0);
+	if (arch_free_page(page, 0))
+		return;
 
 	kernel_map_pages(page, 1, 0);
 	inc_page_state(pgfree);



^ permalink raw reply	[flat|nested] 18+ messages in thread
* RE: [patch 2] Xen core patch : arch_free_page return value
@ 2004-11-18 10:05 Ian Pratt
  2004-11-18 10:14 ` Andrew Morton
  0 siblings, 1 reply; 18+ messages in thread
From: Ian Pratt @ 2004-11-18 10:05 UTC (permalink / raw)
  To: Andrew Morton, Keir Fraser
  Cc: haveblue, Ian.Pratt, linux-kernel, Keir.Fraser, Christian.Limpach

> Is Xen using PG_arch_1?  If not, it can be used for this.

No, we're not. This sounds like an excellent soloution. 

We'll resync all the patches with the latest snapshot and then re-submit
the lot.

Sorry about the tabs-to-spaces screwup. We forwarded the patches around
so many different people for comment before sending them to lkml that
somewhere along the line something bad happned.

Ian

^ permalink raw reply	[flat|nested] 18+ messages in thread

end of thread, other threads:[~2004-11-18 12:58 UTC | newest]

Thread overview: 18+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2004-11-17 23:48 [patch 2] Xen core patch : arch_free_page return value Ian Pratt
2004-11-18  1:04 ` Dave Hansen
2004-11-18  1:19   ` Ian Pratt
2004-11-18  1:26     ` Dave Hansen
2004-11-18  8:35       ` Keir Fraser
2004-11-18  9:17         ` Andrew Morton
2004-11-18  5:08     ` Jeff Dike
2004-11-18  3:09       ` Andrew Morton
2004-11-18  6:54         ` Jeff Dike
2004-11-18  4:57           ` Andrew Morton
2004-11-18  8:37 ` Mitchell Blank Jr
  -- strict thread matches above, loose matches on Subject: below --
2004-11-18 10:05 Ian Pratt
2004-11-18 10:14 ` Andrew Morton
2004-11-18 10:18   ` Keir Fraser
2004-11-18 12:39     ` William Lee Irwin III
2004-11-18 10:36   ` William Lee Irwin III
2004-11-18 12:51     ` Ian Pratt
2004-11-18 12:57       ` William Lee Irwin III

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.