]> git.karo-electronics.de Git - linux-beck.git/blobdiff - include/linux/mm.h
mm: uninline page_xchg_last_nid()
[linux-beck.git] / include / linux / mm.h
index 437da0ce78c705cf1479ca321c1061ad03931a68..8a5bbe3b9e56e37e6d49214c590974e22ae5d9b4 100644 (file)
@@ -677,25 +677,14 @@ static inline int page_last_nid(struct page *page)
        return (page->flags >> LAST_NID_PGSHIFT) & LAST_NID_MASK;
 }
 
-static inline int page_xchg_last_nid(struct page *page, int nid)
-{
-       unsigned long old_flags, flags;
-       int last_nid;
-
-       do {
-               old_flags = flags = page->flags;
-               last_nid = page_last_nid(page);
-
-               flags &= ~(LAST_NID_MASK << LAST_NID_PGSHIFT);
-               flags |= (nid & LAST_NID_MASK) << LAST_NID_PGSHIFT;
-       } while (unlikely(cmpxchg(&page->flags, old_flags, flags) != old_flags));
-
-       return last_nid;
-}
+extern int page_xchg_last_nid(struct page *page, int nid);
 
 static inline void reset_page_last_nid(struct page *page)
 {
-       page_xchg_last_nid(page, (1 << LAST_NID_SHIFT) - 1);
+       int nid = (1 << LAST_NID_SHIFT) - 1;
+
+       page->flags &= ~(LAST_NID_MASK << LAST_NID_PGSHIFT);
+       page->flags |= (nid & LAST_NID_MASK) << LAST_NID_PGSHIFT;
 }
 #endif /* LAST_NID_NOT_IN_PAGE_FLAGS */
 #else