WARNING - OLD ARCHIVES

This is an archived copy of the Xen.org mailing list, which we have preserved to ensure that existing links to archives are not broken. The live archive, which contains the latest emails, can be found at http://lists.xen.org/
   
 
 
Xen 
 
Home Products Support Community News
 
   
 

xen-changelog

[Xen-changelog] [xen-unstable] Introduce page_list_move()

To: xen-changelog@xxxxxxxxxxxxxxxxxxx
Subject: [Xen-changelog] [xen-unstable] Introduce page_list_move()
From: Xen patchbot-unstable <patchbot-unstable@xxxxxxxxxxxxxxxxxxx>
Date: Fri, 19 Jun 2009 00:57:02 -0700
Delivery-date: Fri, 19 Jun 2009 01:09:17 -0700
Envelope-to: www-data@xxxxxxxxxxxxxxxxxxx
List-help: <mailto:xen-changelog-request@lists.xensource.com?subject=help>
List-id: BK change log <xen-changelog.lists.xensource.com>
List-post: <mailto:xen-changelog@lists.xensource.com>
List-subscribe: <http://lists.xensource.com/mailman/listinfo/xen-changelog>, <mailto:xen-changelog-request@lists.xensource.com?subject=subscribe>
List-unsubscribe: <http://lists.xensource.com/mailman/listinfo/xen-changelog>, <mailto:xen-changelog-request@lists.xensource.com?subject=unsubscribe>
Reply-to: xen-devel@xxxxxxxxxxxxxxxxxxx
Sender: xen-changelog-bounces@xxxxxxxxxxxxxxxxxxx
# HG changeset patch
# User Keir Fraser <keir.fraser@xxxxxxxxxx>
# Date 1245317428 -3600
# Node ID 1c01814f9a25d1779773b240ac6ce96d41dc1af2
# Parent  4f779d41b0ba3cb835a901490fb6a52dda7f54c4
Introduce page_list_move()

This not only allows to remove ia64's special implementation of
page_list_splice_init(), but also fixes the latent issue with the
direct list head assignment in the x86 code if that would ever get
switched back to using normal list entries for linking together pages
(i.e. whenever x86-64 is to support more tha 16Tb of memory).

Signed-off-by: Jan Beulich <jbeulich@xxxxxxxxxx>
---
 xen/arch/ia64/xen/domain.c |    2 +-
 xen/arch/x86/domain.c      |    6 +-----
 xen/include/asm-ia64/mm.h  |   18 ------------------
 xen/include/xen/mm.h       |   12 +++++++++++-
 4 files changed, 13 insertions(+), 25 deletions(-)

diff -r 4f779d41b0ba -r 1c01814f9a25 xen/arch/ia64/xen/domain.c
--- a/xen/arch/ia64/xen/domain.c        Thu Jun 18 10:29:58 2009 +0100
+++ b/xen/arch/ia64/xen/domain.c        Thu Jun 18 10:30:28 2009 +0100
@@ -1705,7 +1705,7 @@ static int relinquish_memory(struct doma
         }
     }
 
-    page_list_splice_init(&d->arch.relmem_list, list);
+    page_list_move(list, &d->arch.relmem_list);
 
  out:
     spin_unlock_recursive(&d->page_alloc_lock);
diff -r 4f779d41b0ba -r 1c01814f9a25 xen/arch/x86/domain.c
--- a/xen/arch/x86/domain.c     Thu Jun 18 10:29:58 2009 +0100
+++ b/xen/arch/x86/domain.c     Thu Jun 18 10:30:28 2009 +0100
@@ -1818,11 +1818,7 @@ static int relinquish_memory(
     }
 
     /* list is empty at this point. */
-    if ( !page_list_empty(&d->arch.relmem_list) )
-    {
-        *list = d->arch.relmem_list;
-        INIT_PAGE_LIST_HEAD(&d->arch.relmem_list);
-    }
+    page_list_move(list, &d->arch.relmem_list);
 
  out:
     spin_unlock_recursive(&d->page_alloc_lock);
diff -r 4f779d41b0ba -r 1c01814f9a25 xen/include/asm-ia64/mm.h
--- a/xen/include/asm-ia64/mm.h Thu Jun 18 10:29:58 2009 +0100
+++ b/xen/include/asm-ia64/mm.h Thu Jun 18 10:30:28 2009 +0100
@@ -91,24 +91,6 @@ struct page_info
     /* Timestamp from 'TLB clock', used to reduce need for safety flushes. */
     u32 tlbflush_timestamp;
 };
-
-#ifndef page_list_entry
-static inline void
-page_list_splice_init(struct page_list_head *list, struct page_list_head *head)
-{
-    if ( !page_list_empty(list) )
-    {
-        if ( head->next )
-            head->tail->list.next = page_to_mfn(list->next);
-        else
-            head->next = list->next;
-        head->tail = list->tail;
-        INIT_PAGE_LIST_HEAD(list);
-    }
-}
-#else
-# define page_list_splice_init list_splice_init
-#endif
 
 #define set_page_count(p,v)    atomic_set(&(p)->_count, v - 1)
 
diff -r 4f779d41b0ba -r 1c01814f9a25 xen/include/xen/mm.h
--- a/xen/include/xen/mm.h      Thu Jun 18 10:29:58 2009 +0100
+++ b/xen/include/xen/mm.h      Thu Jun 18 10:30:28 2009 +0100
@@ -223,7 +223,15 @@ page_list_remove_head(struct page_list_h
 
     return page;
 }
-
+static inline void
+page_list_move(struct page_list_head *dst, struct page_list_head *src)
+{
+    if ( !page_list_empty(src) )
+    {
+        *dst = *src;
+        INIT_PAGE_LIST_HEAD(src);
+    }
+}
 static inline void
 page_list_splice(struct page_list_head *list, struct page_list_head *head)
 {
@@ -281,6 +289,8 @@ page_list_splice(struct page_list_head *
         list_del(&__pg->list); \
         __pg; \
     }) : NULL)
+# define page_list_move(dst, src)        (!list_empty(src) ? \
+    list_replace_init(src, dst) : (void)0)
 # define page_list_for_each(pos, head)   list_for_each_entry(pos, head, list)
 # define page_list_for_each_safe(pos, tmp, head) \
     list_for_each_entry_safe(pos, tmp, head, list)

_______________________________________________
Xen-changelog mailing list
Xen-changelog@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-changelog

<Prev in Thread] Current Thread [Next in Thread>
  • [Xen-changelog] [xen-unstable] Introduce page_list_move(), Xen patchbot-unstable <=