hc
2023-12-08 01573e231f18eb2d99162747186f59511f56b64d
kernel/include/linux/page_ext.h
....@@ -17,9 +17,15 @@
1717 #ifdef CONFIG_PAGE_EXTENSION
1818
1919 enum page_ext_flags {
20
- PAGE_EXT_DEBUG_GUARD,
2120 PAGE_EXT_OWNER,
22
-#if defined(CONFIG_IDLE_PAGE_TRACKING) && !defined(CONFIG_64BIT)
21
+ PAGE_EXT_OWNER_ALLOCATED,
22
+#if defined(CONFIG_PAGE_PINNER)
23
+ /* page refcount was increased by GUP or follow_page(FOLL_GET) */
24
+ PAGE_EXT_GET,
25
+ /* page migration failed */
26
+ PAGE_EXT_PINNER_MIGRATION_FAILED,
27
+#endif
28
+#if defined(CONFIG_PAGE_IDLE_FLAG) && !defined(CONFIG_64BIT)
2329 PAGE_EXT_YOUNG,
2430 PAGE_EXT_IDLE,
2531 #endif
....@@ -36,6 +42,7 @@
3642 unsigned long flags;
3743 };
3844
45
+extern unsigned long page_ext_size;
3946 extern void pgdat_page_ext_init(struct pglist_data *pgdat);
4047
4148 #ifdef CONFIG_SPARSEMEM
....@@ -43,14 +50,26 @@
4350 {
4451 }
4552 extern void page_ext_init(void);
53
+static inline void page_ext_init_flatmem_late(void)
54
+{
55
+}
4656 #else
4757 extern void page_ext_init_flatmem(void);
58
+extern void page_ext_init_flatmem_late(void);
4859 static inline void page_ext_init(void)
4960 {
5061 }
5162 #endif
52
-
5363 struct page_ext *lookup_page_ext(const struct page *page);
64
+extern struct page_ext *page_ext_get(struct page *page);
65
+extern void page_ext_put(struct page_ext *page_ext);
66
+
67
+static inline struct page_ext *page_ext_next(struct page_ext *curr)
68
+{
69
+ void *next = curr;
70
+ next += page_ext_size;
71
+ return next;
72
+}
5473
5574 #else /* !CONFIG_PAGE_EXTENSION */
5675 struct page_ext;
....@@ -59,17 +78,25 @@
5978 {
6079 }
6180
62
-static inline struct page_ext *lookup_page_ext(const struct page *page)
63
-{
64
- return NULL;
65
-}
66
-
6781 static inline void page_ext_init(void)
6882 {
6983 }
7084
85
+static inline void page_ext_init_flatmem_late(void)
86
+{
87
+}
88
+
7189 static inline void page_ext_init_flatmem(void)
7290 {
7391 }
92
+
93
+static inline struct page_ext *page_ext_get(struct page *page)
94
+{
95
+ return NULL;
96
+}
97
+
98
+static inline void page_ext_put(struct page_ext *page_ext)
99
+{
100
+}
74101 #endif /* CONFIG_PAGE_EXTENSION */
75102 #endif /* __LINUX_PAGE_EXT_H */