lib, arch: add filter argument to show_mem and fix private implementations
authorDavid Rientjes <rientjes@google.com>
Thu, 24 Mar 2011 22:18:15 +0000 (15:18 -0700)
committerLinus Torvalds <torvalds@linux-foundation.org>
Fri, 25 Mar 2011 00:49:37 +0000 (17:49 -0700)
Commit ddd588b5dd55 ("oom: suppress nodes that are not allowed from
meminfo on oom kill") moved lib/show_mem.o out of lib/lib.a, which
resulted in build warnings on all architectures that implement their own
versions of show_mem():

lib/lib.a(show_mem.o): In function `show_mem':
show_mem.c:(.text+0x1f4): multiple definition of `show_mem'
arch/sparc/mm/built-in.o:(.text+0xd70): first defined here

The fix is to remove __show_mem() and add its argument to show_mem() in
all implementations to prevent this breakage.

Architectures that implement their own show_mem() actually don't do
anything with the argument yet, but they could be made to filter nodes
that aren't allowed in the current context in the future just like the
generic implementation.

Reported-by: Stephen Rothwell <sfr@canb.auug.org.au>
Reported-by: James Bottomley <James.Bottomley@hansenpartnership.com>
Suggested-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: David Rientjes <rientjes@google.com>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
14 files changed:
arch/arm/mm/init.c
arch/ia64/mm/contig.c
arch/ia64/mm/discontig.c
arch/parisc/mm/init.c
arch/powerpc/xmon/xmon.c
arch/sparc/mm/init_32.c
arch/tile/mm/pgtable.c
arch/unicore32/mm/init.c
drivers/tty/sysrq.c
drivers/tty/vt/keyboard.c
include/linux/mm.h
lib/show_mem.c
mm/oom_kill.c
mm/page_alloc.c

index b3b0f0f5053dfe791eaaa1fc66d9a014350c4d9b..e5f6fc42834892e7622664b496d3aa0288eaa2ff 100644 (file)
@@ -78,7 +78,7 @@ __tagtable(ATAG_INITRD2, parse_tag_initrd2);
  */
 struct meminfo meminfo;
 
-void show_mem(void)
+void show_mem(unsigned int filter)
 {
        int free = 0, total = 0, reserved = 0;
        int shared = 0, cached = 0, slab = 0, i;
index 54bf540598118339a04919e1f08c505a5ad57cd8..9a018cde5d84d5c3718c3fef41d6557aa392d14b 100644 (file)
@@ -36,7 +36,7 @@ static unsigned long max_gap;
  * Shows a simple page count of reserved and used pages in the system.
  * For discontig machines, it does this on a per-pgdat basis.
  */
-void show_mem(void)
+void show_mem(unsigned int filter)
 {
        int i, total_reserved = 0;
        int total_shared = 0, total_cached = 0;
index 61620323bb60adadf942288b53446604d8323b69..82ab1bc6afb1236460c0e380a2a5fbf61a5b8e1b 100644 (file)
@@ -614,7 +614,7 @@ void __cpuinit *per_cpu_init(void)
  * Shows a simple page count of reserved and used pages in the system.
  * For discontig machines, it does this on a per-pgdat basis.
  */
-void show_mem(void)
+void show_mem(unsigned int filter)
 {
        int i, total_reserved = 0;
        int total_shared = 0, total_cached = 0;
index f4f4d700833affc00d9953871b441eae12227831..b7ed8d7a9b33a10e784722a3fa5b8a55f7eabbcb 100644 (file)
@@ -544,7 +544,7 @@ void __init mem_init(void)
 unsigned long *empty_zero_page __read_mostly;
 EXPORT_SYMBOL(empty_zero_page);
 
-void show_mem(void)
+void show_mem(unsigned int filter)
 {
        int i,free = 0,total = 0,reserved = 0;
        int shared = 0, cached = 0;
index d17d04cfb2cd4095c77adb306fcb690161c09fbf..33794c1d92c349b24589694d9fd0d5c321ccf522 100644 (file)
@@ -821,7 +821,7 @@ cmds(struct pt_regs *excp)
                                memzcan();
                                break;
                        case 'i':
-                               show_mem();
+                               show_mem(0);
                                break;
                        default:
                                termch = cmd;
index 6d0e02c4fe09cdc318d6da849668495546d21897..4c31e2b6e71b8bd49451ab2d6f4381e82bfbd9ae 100644 (file)
@@ -75,7 +75,7 @@ void __init kmap_init(void)
        kmap_prot = __pgprot(SRMMU_ET_PTE | SRMMU_PRIV | SRMMU_CACHE);
 }
 
-void show_mem(void)
+void show_mem(unsigned int filter)
 {
        printk("Mem-info:\n");
        show_free_areas();
index 1a2b36f8866d88b7708722ff81b9026e5445f22e..de7d8e21e01d8980009de9840ccbd2c30690b2f1 100644 (file)
@@ -41,7 +41,7 @@
  * The normal show_free_areas() is too verbose on Tile, with dozens
  * of processors and often four NUMA zones each with high and lowmem.
  */
-void show_mem(void)
+void show_mem(unsigned int filter)
 {
        struct zone *zone;
 
index 3dbe3709b69d0ce0fe556c4f400e2d4d07a5bce9..1fc02633f700a18af47db8e61a85cd55c0210d80 100644 (file)
@@ -55,7 +55,7 @@ early_param("initrd", early_initrd);
  */
 struct meminfo meminfo;
 
-void show_mem(void)
+void show_mem(unsigned int filter)
 {
        int free = 0, total = 0, reserved = 0;
        int shared = 0, cached = 0, slab = 0, i;
index 81f13958e751095d869a2935460163d8111f4098..43db715f15026d491d87cc1d3c7e443ddcf2f341 100644 (file)
@@ -306,7 +306,7 @@ static struct sysrq_key_op sysrq_ftrace_dump_op = {
 
 static void sysrq_handle_showmem(int key)
 {
-       show_mem();
+       show_mem(0);
 }
 static struct sysrq_key_op sysrq_showmem_op = {
        .handler        = sysrq_handle_showmem,
index 6dd3c68c13add15f4a0452f06694fbd7a2c06cf4..d6b342b5b423ce69fc989cdf3593fa892d7f9167 100644 (file)
@@ -600,7 +600,7 @@ static void fn_scroll_back(struct vc_data *vc)
 
 static void fn_show_mem(struct vc_data *vc)
 {
-       show_mem();
+       show_mem(0);
 }
 
 static void fn_show_state(struct vc_data *vc)
index f9535b2c9558ffe59905a4836a6a2937c159ece2..7606d7db96c90be584687bf478e416dae1d535ec 100644 (file)
@@ -861,7 +861,7 @@ extern void pagefault_out_of_memory(void);
 #define offset_in_page(p)      ((unsigned long)(p) & ~PAGE_MASK)
 
 /*
- * Flags passed to __show_mem() and __show_free_areas() to suppress output in
+ * Flags passed to show_mem() and __show_free_areas() to suppress output in
  * various contexts.
  */
 #define SHOW_MEM_FILTER_NODES  (0x0001u)       /* filter disallowed nodes */
@@ -1360,8 +1360,7 @@ extern void setup_per_zone_wmarks(void);
 extern void calculate_zone_inactive_ratio(struct zone *zone);
 extern void mem_init(void);
 extern void __init mmap_init(void);
-extern void show_mem(void);
-extern void __show_mem(unsigned int flags);
+extern void show_mem(unsigned int flags);
 extern void si_meminfo(struct sysinfo * val);
 extern void si_meminfo_node(struct sysinfo *val, int nid);
 extern int after_bootmem;
index d8d602b58c31ba84908f2be24daa0a7d2eb33764..90cbe4bb5960fc480eaf45273638159ac48d2aa7 100644 (file)
@@ -9,7 +9,7 @@
 #include <linux/nmi.h>
 #include <linux/quicklist.h>
 
-void __show_mem(unsigned int filter)
+void show_mem(unsigned int filter)
 {
        pg_data_t *pgdat;
        unsigned long total = 0, reserved = 0, shared = 0,
@@ -61,8 +61,3 @@ void __show_mem(unsigned int filter)
                quicklist_total_size());
 #endif
 }
-
-void show_mem(void)
-{
-       __show_mem(0);
-}
index 62a5cec08a1752acbce54ebfc69ecd51ebfb8ef0..6a819d1b2c7dd70015b9fadff8f28d70f3b6f422 100644 (file)
@@ -406,7 +406,7 @@ static void dump_header(struct task_struct *p, gfp_t gfp_mask, int order,
        task_unlock(current);
        dump_stack();
        mem_cgroup_print_oom_info(mem, p);
-       __show_mem(SHOW_MEM_FILTER_NODES);
+       show_mem(SHOW_MEM_FILTER_NODES);
        if (sysctl_oom_dump_tasks)
                dump_tasks(mem, nodemask);
 }
index 8e5726ab0d85789ee553241f4172787d3c88d0d6..d6e7ba7373be7caea9f12eb73bf994df5ddc7467 100644 (file)
@@ -2195,7 +2195,7 @@ nopage:
                        current->comm, order, gfp_mask);
                dump_stack();
                if (!should_suppress_show_mem())
-                       __show_mem(filter);
+                       show_mem(filter);
        }
        return page;
 got_pg: