]> git.kernelconcepts.de Git - karo-tx-linux.git/commitdiff
mm: move debug code out of page_alloc.c
authorSasha Levin <sasha.levin@oracle.com>
Thu, 9 Oct 2014 22:28:34 +0000 (15:28 -0700)
committerLinus Torvalds <torvalds@linux-foundation.org>
Fri, 10 Oct 2014 02:25:58 +0000 (22:25 -0400)
dump_page() and dump_vma() are not specific to page_alloc.c, move them out
so page_alloc.c won't turn into the unofficial debug repository.

Signed-off-by: Sasha Levin <sasha.levin@oracle.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
mm/Makefile
mm/debug.c [new file with mode: 0644]
mm/page_alloc.c

index fe7a053c0f45f66a1398d740419ba9ffe9c1ca3a..f8ed7ab417b1552986f5a9b7e1bf311678864533 100644 (file)
@@ -18,7 +18,7 @@ obj-y                 := filemap.o mempool.o oom_kill.o \
                           mm_init.o mmu_context.o percpu.o slab_common.o \
                           compaction.o balloon_compaction.o vmacache.o \
                           interval_tree.o list_lru.o workingset.o \
-                          iov_iter.o $(mmu-y)
+                          iov_iter.o debug.o $(mmu-y)
 
 obj-y += init-mm.o
 
diff --git a/mm/debug.c b/mm/debug.c
new file mode 100644 (file)
index 0000000..697df90
--- /dev/null
@@ -0,0 +1,162 @@
+#include <linux/kernel.h>
+#include <linux/mm.h>
+#include <linux/ftrace_event.h>
+#include <linux/memcontrol.h>
+
+static const struct trace_print_flags pageflag_names[] = {
+       {1UL << PG_locked,              "locked"        },
+       {1UL << PG_error,               "error"         },
+       {1UL << PG_referenced,          "referenced"    },
+       {1UL << PG_uptodate,            "uptodate"      },
+       {1UL << PG_dirty,               "dirty"         },
+       {1UL << PG_lru,                 "lru"           },
+       {1UL << PG_active,              "active"        },
+       {1UL << PG_slab,                "slab"          },
+       {1UL << PG_owner_priv_1,        "owner_priv_1"  },
+       {1UL << PG_arch_1,              "arch_1"        },
+       {1UL << PG_reserved,            "reserved"      },
+       {1UL << PG_private,             "private"       },
+       {1UL << PG_private_2,           "private_2"     },
+       {1UL << PG_writeback,           "writeback"     },
+#ifdef CONFIG_PAGEFLAGS_EXTENDED
+       {1UL << PG_head,                "head"          },
+       {1UL << PG_tail,                "tail"          },
+#else
+       {1UL << PG_compound,            "compound"      },
+#endif
+       {1UL << PG_swapcache,           "swapcache"     },
+       {1UL << PG_mappedtodisk,        "mappedtodisk"  },
+       {1UL << PG_reclaim,             "reclaim"       },
+       {1UL << PG_swapbacked,          "swapbacked"    },
+       {1UL << PG_unevictable,         "unevictable"   },
+#ifdef CONFIG_MMU
+       {1UL << PG_mlocked,             "mlocked"       },
+#endif
+#ifdef CONFIG_ARCH_USES_PG_UNCACHED
+       {1UL << PG_uncached,            "uncached"      },
+#endif
+#ifdef CONFIG_MEMORY_FAILURE
+       {1UL << PG_hwpoison,            "hwpoison"      },
+#endif
+#ifdef CONFIG_TRANSPARENT_HUGEPAGE
+       {1UL << PG_compound_lock,       "compound_lock" },
+#endif
+};
+
+static void dump_flags(unsigned long flags,
+                       const struct trace_print_flags *names, int count)
+{
+       const char *delim = "";
+       unsigned long mask;
+       int i;
+
+       printk(KERN_ALERT "flags: %#lx(", flags);
+
+       /* remove zone id */
+       flags &= (1UL << NR_PAGEFLAGS) - 1;
+
+       for (i = 0; i < count && flags; i++) {
+
+               mask = names[i].mask;
+               if ((flags & mask) != mask)
+                       continue;
+
+               flags &= ~mask;
+               printk("%s%s", delim, names[i].name);
+               delim = "|";
+       }
+
+       /* check for left over flags */
+       if (flags)
+               printk("%s%#lx", delim, flags);
+
+       printk(")\n");
+}
+
+void dump_page_badflags(struct page *page, const char *reason,
+               unsigned long badflags)
+{
+       printk(KERN_ALERT
+              "page:%p count:%d mapcount:%d mapping:%p index:%#lx\n",
+               page, atomic_read(&page->_count), page_mapcount(page),
+               page->mapping, page->index);
+       BUILD_BUG_ON(ARRAY_SIZE(pageflag_names) != __NR_PAGEFLAGS);
+       dump_flags(page->flags, pageflag_names, ARRAY_SIZE(pageflag_names));
+       if (reason)
+               pr_alert("page dumped because: %s\n", reason);
+       if (page->flags & badflags) {
+               pr_alert("bad because of flags:\n");
+               dump_flags(page->flags & badflags,
+                               pageflag_names, ARRAY_SIZE(pageflag_names));
+       }
+       mem_cgroup_print_bad_page(page);
+}
+
+void dump_page(struct page *page, const char *reason)
+{
+       dump_page_badflags(page, reason, 0);
+}
+EXPORT_SYMBOL(dump_page);
+
+#ifdef CONFIG_DEBUG_VM
+
+static const struct trace_print_flags vmaflags_names[] = {
+       {VM_READ,                       "read"          },
+       {VM_WRITE,                      "write"         },
+       {VM_EXEC,                       "exec"          },
+       {VM_SHARED,                     "shared"        },
+       {VM_MAYREAD,                    "mayread"       },
+       {VM_MAYWRITE,                   "maywrite"      },
+       {VM_MAYEXEC,                    "mayexec"       },
+       {VM_MAYSHARE,                   "mayshare"      },
+       {VM_GROWSDOWN,                  "growsdown"     },
+       {VM_PFNMAP,                     "pfnmap"        },
+       {VM_DENYWRITE,                  "denywrite"     },
+       {VM_LOCKED,                     "locked"        },
+       {VM_IO,                         "io"            },
+       {VM_SEQ_READ,                   "seqread"       },
+       {VM_RAND_READ,                  "randread"      },
+       {VM_DONTCOPY,                   "dontcopy"      },
+       {VM_DONTEXPAND,                 "dontexpand"    },
+       {VM_ACCOUNT,                    "account"       },
+       {VM_NORESERVE,                  "noreserve"     },
+       {VM_HUGETLB,                    "hugetlb"       },
+       {VM_NONLINEAR,                  "nonlinear"     },
+#if defined(CONFIG_X86)
+       {VM_PAT,                        "pat"           },
+#elif defined(CONFIG_PPC)
+       {VM_SAO,                        "sao"           },
+#elif defined(CONFIG_PARISC) || defined(CONFIG_METAG) || defined(CONFIG_IA64)
+       {VM_GROWSUP,                    "growsup"       },
+#elif !defined(CONFIG_MMU)
+       {VM_MAPPED_COPY,                "mappedcopy"    },
+#else
+       {VM_ARCH_1,                     "arch_1"        },
+#endif
+       {VM_DONTDUMP,                   "dontdump"      },
+#ifdef CONFIG_MEM_SOFT_DIRTY
+       {VM_SOFTDIRTY,                  "softdirty"     },
+#endif
+       {VM_MIXEDMAP,                   "mixedmap"      },
+       {VM_HUGEPAGE,                   "hugepage"      },
+       {VM_NOHUGEPAGE,                 "nohugepage"    },
+       {VM_MERGEABLE,                  "mergeable"     },
+};
+
+void dump_vma(const struct vm_area_struct *vma)
+{
+       printk(KERN_ALERT
+               "vma %p start %p end %p\n"
+               "next %p prev %p mm %p\n"
+               "prot %lx anon_vma %p vm_ops %p\n"
+               "pgoff %lx file %p private_data %p\n",
+               vma, (void *)vma->vm_start, (void *)vma->vm_end, vma->vm_next,
+               vma->vm_prev, vma->vm_mm,
+               (unsigned long)pgprot_val(vma->vm_page_prot),
+               vma->anon_vma, vma->vm_ops, vma->vm_pgoff,
+               vma->vm_file, vma->vm_private_data);
+       dump_flags(vma->vm_flags, vmaflags_names, ARRAY_SIZE(vmaflags_names));
+}
+EXPORT_SYMBOL(dump_vma);
+
+#endif         /* CONFIG_DEBUG_VM */
index bfb73e025e02f4ebd144774cca8bd8c62735bad2..c9710c9bbee2987569d6e56b5a2b9aea7e9d316a 100644 (file)
@@ -53,8 +53,6 @@
 #include <linux/kmemleak.h>
 #include <linux/compaction.h>
 #include <trace/events/kmem.h>
-#include <linux/ftrace_event.h>
-#include <linux/memcontrol.h>
 #include <linux/prefetch.h>
 #include <linux/mm_inline.h>
 #include <linux/migrate.h>
@@ -6550,161 +6548,3 @@ bool is_free_buddy_page(struct page *page)
        return order < MAX_ORDER;
 }
 #endif
-
-static const struct trace_print_flags pageflag_names[] = {
-       {1UL << PG_locked,              "locked"        },
-       {1UL << PG_error,               "error"         },
-       {1UL << PG_referenced,          "referenced"    },
-       {1UL << PG_uptodate,            "uptodate"      },
-       {1UL << PG_dirty,               "dirty"         },
-       {1UL << PG_lru,                 "lru"           },
-       {1UL << PG_active,              "active"        },
-       {1UL << PG_slab,                "slab"          },
-       {1UL << PG_owner_priv_1,        "owner_priv_1"  },
-       {1UL << PG_arch_1,              "arch_1"        },
-       {1UL << PG_reserved,            "reserved"      },
-       {1UL << PG_private,             "private"       },
-       {1UL << PG_private_2,           "private_2"     },
-       {1UL << PG_writeback,           "writeback"     },
-#ifdef CONFIG_PAGEFLAGS_EXTENDED
-       {1UL << PG_head,                "head"          },
-       {1UL << PG_tail,                "tail"          },
-#else
-       {1UL << PG_compound,            "compound"      },
-#endif
-       {1UL << PG_swapcache,           "swapcache"     },
-       {1UL << PG_mappedtodisk,        "mappedtodisk"  },
-       {1UL << PG_reclaim,             "reclaim"       },
-       {1UL << PG_swapbacked,          "swapbacked"    },
-       {1UL << PG_unevictable,         "unevictable"   },
-#ifdef CONFIG_MMU
-       {1UL << PG_mlocked,             "mlocked"       },
-#endif
-#ifdef CONFIG_ARCH_USES_PG_UNCACHED
-       {1UL << PG_uncached,            "uncached"      },
-#endif
-#ifdef CONFIG_MEMORY_FAILURE
-       {1UL << PG_hwpoison,            "hwpoison"      },
-#endif
-#ifdef CONFIG_TRANSPARENT_HUGEPAGE
-       {1UL << PG_compound_lock,       "compound_lock" },
-#endif
-};
-
-static void dump_flags(unsigned long flags,
-                       const struct trace_print_flags *names, int count)
-{
-       const char *delim = "";
-       unsigned long mask;
-       int i;
-
-       printk(KERN_ALERT "flags: %#lx(", flags);
-
-       /* remove zone id */
-       flags &= (1UL << NR_PAGEFLAGS) - 1;
-
-       for (i = 0; i < count && flags; i++) {
-
-               mask = names[i].mask;
-               if ((flags & mask) != mask)
-                       continue;
-
-               flags &= ~mask;
-               printk("%s%s", delim, names[i].name);
-               delim = "|";
-       }
-
-       /* check for left over flags */
-       if (flags)
-               printk("%s%#lx", delim, flags);
-
-       printk(")\n");
-}
-
-void dump_page_badflags(struct page *page, const char *reason,
-               unsigned long badflags)
-{
-       printk(KERN_ALERT
-              "page:%p count:%d mapcount:%d mapping:%p index:%#lx\n",
-               page, atomic_read(&page->_count), page_mapcount(page),
-               page->mapping, page->index);
-       BUILD_BUG_ON(ARRAY_SIZE(pageflag_names) != __NR_PAGEFLAGS);
-       dump_flags(page->flags, pageflag_names, ARRAY_SIZE(pageflag_names));
-       if (reason)
-               pr_alert("page dumped because: %s\n", reason);
-       if (page->flags & badflags) {
-               pr_alert("bad because of flags:\n");
-               dump_flags(page->flags & badflags,
-                               pageflag_names, ARRAY_SIZE(pageflag_names));
-       }
-       mem_cgroup_print_bad_page(page);
-}
-
-void dump_page(struct page *page, const char *reason)
-{
-       dump_page_badflags(page, reason, 0);
-}
-EXPORT_SYMBOL(dump_page);
-
-#ifdef CONFIG_DEBUG_VM
-
-static const struct trace_print_flags vmaflags_names[] = {
-       {VM_READ,                       "read"          },
-       {VM_WRITE,                      "write"         },
-       {VM_EXEC,                       "exec"          },
-       {VM_SHARED,                     "shared"        },
-       {VM_MAYREAD,                    "mayread"       },
-       {VM_MAYWRITE,                   "maywrite"      },
-       {VM_MAYEXEC,                    "mayexec"       },
-       {VM_MAYSHARE,                   "mayshare"      },
-       {VM_GROWSDOWN,                  "growsdown"     },
-       {VM_PFNMAP,                     "pfnmap"        },
-       {VM_DENYWRITE,                  "denywrite"     },
-       {VM_LOCKED,                     "locked"        },
-       {VM_IO,                         "io"            },
-       {VM_SEQ_READ,                   "seqread"       },
-       {VM_RAND_READ,                  "randread"      },
-       {VM_DONTCOPY,                   "dontcopy"      },
-       {VM_DONTEXPAND,                 "dontexpand"    },
-       {VM_ACCOUNT,                    "account"       },
-       {VM_NORESERVE,                  "noreserve"     },
-       {VM_HUGETLB,                    "hugetlb"       },
-       {VM_NONLINEAR,                  "nonlinear"     },
-#if defined(CONFIG_X86)
-       {VM_PAT,                        "pat"           },
-#elif defined(CONFIG_PPC)
-       {VM_SAO,                        "sao"           },
-#elif defined(CONFIG_PARISC) || defined(CONFIG_METAG) || defined(CONFIG_IA64)
-       {VM_GROWSUP,                    "growsup"       },
-#elif !defined(CONFIG_MMU)
-       {VM_MAPPED_COPY,                "mappedcopy"    },
-#else
-       {VM_ARCH_1,                     "arch_1"        },
-#endif
-       {VM_DONTDUMP,                   "dontdump"      },
-#ifdef CONFIG_MEM_SOFT_DIRTY
-       {VM_SOFTDIRTY,                  "softdirty"     },
-#endif
-       {VM_MIXEDMAP,                   "mixedmap"      },
-       {VM_HUGEPAGE,                   "hugepage"      },
-       {VM_NOHUGEPAGE,                 "nohugepage"    },
-       {VM_MERGEABLE,                  "mergeable"     },
-};
-
-void dump_vma(const struct vm_area_struct *vma)
-{
-       printk(KERN_ALERT
-               "vma %p start %p end %p\n"
-               "next %p prev %p mm %p\n"
-               "prot %lx anon_vma %p vm_ops %p\n"
-               "pgoff %lx file %p private_data %p\n",
-               vma, (void *)vma->vm_start, (void *)vma->vm_end, vma->vm_next,
-               vma->vm_prev, vma->vm_mm,
-               (unsigned long)pgprot_val(vma->vm_page_prot),
-               vma->anon_vma, vma->vm_ops, vma->vm_pgoff,
-               vma->vm_file, vma->vm_private_data);
-       dump_flags(vma->vm_flags, vmaflags_names, ARRAY_SIZE(vmaflags_names));
-}
-EXPORT_SYMBOL(dump_vma);
-
-#endif         /* CONFIG_DEBUG_VM */