|
@@ -107,6 +107,9 @@ enum pageflags {
|
|
|
#endif
|
|
|
#ifdef CONFIG_MEMORY_FAILURE
|
|
|
PG_hwpoison, /* hardware poisoned page. Don't touch */
|
|
|
+#endif
|
|
|
+#ifdef CONFIG_TRANSPARENT_HUGEPAGE
|
|
|
+ PG_compound_lock,
|
|
|
#endif
|
|
|
__NR_PAGEFLAGS,
|
|
|
|
|
@@ -397,6 +400,12 @@ static inline void __ClearPageTail(struct page *page)
|
|
|
#define __PG_MLOCKED 0
|
|
|
#endif
|
|
|
|
|
|
+#ifdef CONFIG_TRANSPARENT_HUGEPAGE
|
|
|
+#define __PG_COMPOUND_LOCK (1 << PG_compound_lock)
|
|
|
+#else
|
|
|
+#define __PG_COMPOUND_LOCK 0
|
|
|
+#endif
|
|
|
+
|
|
|
/*
|
|
|
* Flags checked when a page is freed. Pages being freed should not have
|
|
|
* these flags set. It they are, there is a problem.
|
|
@@ -406,7 +415,8 @@ static inline void __ClearPageTail(struct page *page)
|
|
|
1 << PG_private | 1 << PG_private_2 | \
|
|
|
1 << PG_buddy | 1 << PG_writeback | 1 << PG_reserved | \
|
|
|
1 << PG_slab | 1 << PG_swapcache | 1 << PG_active | \
|
|
|
- 1 << PG_unevictable | __PG_MLOCKED | __PG_HWPOISON)
|
|
|
+ 1 << PG_unevictable | __PG_MLOCKED | __PG_HWPOISON | \
|
|
|
+ __PG_COMPOUND_LOCK)
|
|
|
|
|
|
/*
|
|
|
* Flags checked when a page is prepped for return by the page allocator.
|