aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--include/linux/mmzone.h3
-rw-r--r--mm/page_alloc.c13
-rw-r--r--mm/page_owner.c24
-rw-r--r--mm/vmstat.c13
4 files changed, 23 insertions, 30 deletions
diff --git a/include/linux/mmzone.h b/include/linux/mmzone.h
index 7b6c2cfee390..9fc23ab550a7 100644
--- a/include/linux/mmzone.h
+++ b/include/linux/mmzone.h
@@ -63,6 +63,9 @@ enum {
63 MIGRATE_TYPES 63 MIGRATE_TYPES
64}; 64};
65 65
66/* In mm/page_alloc.c; keep in sync also with show_migration_types() there */
67extern char * const migratetype_names[MIGRATE_TYPES];
68
66#ifdef CONFIG_CMA 69#ifdef CONFIG_CMA
67# define is_migrate_cma(migratetype) unlikely((migratetype) == MIGRATE_CMA) 70# define is_migrate_cma(migratetype) unlikely((migratetype) == MIGRATE_CMA)
68#else 71#else
diff --git a/mm/page_alloc.c b/mm/page_alloc.c
index 4e8029a7a4bf..030fafccaa6b 100644
--- a/mm/page_alloc.c
+++ b/mm/page_alloc.c
@@ -223,6 +223,19 @@ static char * const zone_names[MAX_NR_ZONES] = {
223#endif 223#endif
224}; 224};
225 225
226char * const migratetype_names[MIGRATE_TYPES] = {
227 "Unmovable",
228 "Movable",
229 "Reclaimable",
230 "HighAtomic",
231#ifdef CONFIG_CMA
232 "CMA",
233#endif
234#ifdef CONFIG_MEMORY_ISOLATION
235 "Isolate",
236#endif
237};
238
226compound_page_dtor * const compound_page_dtors[] = { 239compound_page_dtor * const compound_page_dtors[] = {
227 NULL, 240 NULL,
228 free_compound_page, 241 free_compound_page,
diff --git a/mm/page_owner.c b/mm/page_owner.c
index 983c3a10fa07..7a37a30d941b 100644
--- a/mm/page_owner.c
+++ b/mm/page_owner.c
@@ -100,8 +100,9 @@ print_page_owner(char __user *buf, size_t count, unsigned long pfn,
100 return -ENOMEM; 100 return -ENOMEM;
101 101
102 ret = snprintf(kbuf, count, 102 ret = snprintf(kbuf, count,
103 "Page allocated via order %u, mask 0x%x\n", 103 "Page allocated via order %u, mask %#x(%pGg)\n",
104 page_ext->order, page_ext->gfp_mask); 104 page_ext->order, page_ext->gfp_mask,
105 &page_ext->gfp_mask);
105 106
106 if (ret >= count) 107 if (ret >= count)
107 goto err; 108 goto err;
@@ -110,23 +111,12 @@ print_page_owner(char __user *buf, size_t count, unsigned long pfn,
110 pageblock_mt = get_pfnblock_migratetype(page, pfn); 111 pageblock_mt = get_pfnblock_migratetype(page, pfn);
111 page_mt = gfpflags_to_migratetype(page_ext->gfp_mask); 112 page_mt = gfpflags_to_migratetype(page_ext->gfp_mask);
112 ret += snprintf(kbuf + ret, count - ret, 113 ret += snprintf(kbuf + ret, count - ret,
113 "PFN %lu Block %lu type %d %s Flags %s%s%s%s%s%s%s%s%s%s%s%s\n", 114 "PFN %lu type %s Block %lu type %s Flags %#lx(%pGp)\n",
114 pfn, 115 pfn,
116 migratetype_names[page_mt],
115 pfn >> pageblock_order, 117 pfn >> pageblock_order,
116 pageblock_mt, 118 migratetype_names[pageblock_mt],
117 pageblock_mt != page_mt ? "Fallback" : " ", 119 page->flags, &page->flags);
118 PageLocked(page) ? "K" : " ",
119 PageError(page) ? "E" : " ",
120 PageReferenced(page) ? "R" : " ",
121 PageUptodate(page) ? "U" : " ",
122 PageDirty(page) ? "D" : " ",
123 PageLRU(page) ? "L" : " ",
124 PageActive(page) ? "A" : " ",
125 PageSlab(page) ? "S" : " ",
126 PageWriteback(page) ? "W" : " ",
127 PageCompound(page) ? "C" : " ",
128 PageSwapCache(page) ? "B" : " ",
129 PageMappedToDisk(page) ? "M" : " ");
130 120
131 if (ret >= count) 121 if (ret >= count)
132 goto err; 122 goto err;
diff --git a/mm/vmstat.c b/mm/vmstat.c
index 084c6725b373..72c17981cb70 100644
--- a/mm/vmstat.c
+++ b/mm/vmstat.c
@@ -924,19 +924,6 @@ static void walk_zones_in_node(struct seq_file *m, pg_data_t *pgdat,
924#endif 924#endif
925 925
926#ifdef CONFIG_PROC_FS 926#ifdef CONFIG_PROC_FS
927static char * const migratetype_names[MIGRATE_TYPES] = {
928 "Unmovable",
929 "Movable",
930 "Reclaimable",
931 "HighAtomic",
932#ifdef CONFIG_CMA
933 "CMA",
934#endif
935#ifdef CONFIG_MEMORY_ISOLATION
936 "Isolate",
937#endif
938};
939
940static void frag_show_print(struct seq_file *m, pg_data_t *pgdat, 927static void frag_show_print(struct seq_file *m, pg_data_t *pgdat,
941 struct zone *zone) 928 struct zone *zone)
942{ 929{