Hi. Every arch implements its own show_mem() function. Most of them share quite some code, some of them are completely identical. This proposal implements a generic version of this functions and migrates almost all architectures to use it. I have only tested the x86_32 related part in lack of other archs. As far as I understood the code, the generic version should work for the architectures that used to iterate mem_map pfns, but I can not tell for sure. Please give feedback. Also, this series leaves ia64, arm, and sparc as is. Tony, as far as I understand, ia64 jumps holes in the memory map with vmemmap_find_next_valid_pfn(). Any idea if and how this could be built into the generic show_mem() version? Russell, I don't know if arm can be transformed. For now, it keeps its arch-specific show_mem(). Dave, can sparc's version be simply migrated as well? Hannes arch/alpha/mm/init.c | 30 ------------------ arch/alpha/mm/numa.c | 35 ---------------------- arch/arm/mm/Kconfig | 3 ++ arch/avr32/mm/init.c | 39 ------------------------ arch/blackfin/mm/init.c | 27 ----------------- arch/cris/mm/init.c | 31 ------------------- arch/frv/mm/init.c | 31 ------------------- arch/h8300/mm/init.c | 28 ----------------- arch/ia64/Kconfig | 3 ++ arch/m32r/mm/init.c | 37 ----------------------- arch/m68k/mm/init.c | 31 ------------------- arch/m68knommu/mm/init.c | 28 ----------------- arch/mips/mm/Makefile | 3 +- arch/mips/mm/pgtable.c | 37 ----------------------- arch/mn10300/mm/pgtable.c | 27 ----------------- arch/parisc/mm/init.c | 72 --------------------------------------------- arch/powerpc/mm/mem.c | 40 ------------------------- arch/ppc/mm/init.c | 31 ------------------- arch/s390/mm/init.c | 36 ---------------------- arch/sh/mm/init.c | 41 ------------------------- arch/sparc/Kconfig | 3 ...
Signed-off-by: Johannes Weiner <hannes@saeurebad.de> diff --git a/arch/alpha/Kconfig b/arch/alpha/Kconfig index 729cdbd..efffa92 100644 --- a/arch/alpha/Kconfig +++ b/arch/alpha/Kconfig @@ -598,6 +598,9 @@ config ALPHA_LARGE_VMALLOC Say N unless you know you need gobs and gobs of vmalloc space. +config HAVE_ARCH_SHOW_MEM + def_bool y + config VERBOSE_MCHECK bool "Verbose Machine Checks" diff --git a/arch/arm/mm/Kconfig b/arch/arm/mm/Kconfig index 76348f0..acad217 100644 --- a/arch/arm/mm/Kconfig +++ b/arch/arm/mm/Kconfig @@ -673,3 +673,6 @@ config OUTER_CACHE config CACHE_L2X0 bool select OUTER_CACHE + +config HAVE_ARCH_SHOW_MEM + def_bool y diff --git a/arch/avr32/Kconfig b/arch/avr32/Kconfig index c75d708..81e3360 100644 --- a/arch/avr32/Kconfig +++ b/arch/avr32/Kconfig @@ -146,6 +146,9 @@ source "kernel/Kconfig.preempt" config HAVE_ARCH_BOOTMEM_NODE def_bool n +config HAVE_ARCH_SHOW_MEM + def_bool y + config ARCH_HAVE_MEMORY_PRESENT def_bool n diff --git a/arch/blackfin/Kconfig b/arch/blackfin/Kconfig index 589c6ac..a8cc977 100644 --- a/arch/blackfin/Kconfig +++ b/arch/blackfin/Kconfig @@ -526,6 +526,9 @@ config BFIN_SCRATCH_REG_CYCLES endchoice +config HAVE_ARCH_SHOW_MEM + def_bool y + endmenu diff --git a/arch/cris/Kconfig b/arch/cris/Kconfig index 9389d38..217c658 100644 --- a/arch/cris/Kconfig +++ b/arch/cris/Kconfig @@ -108,6 +108,9 @@ config OOM_REBOOT source "kernel/Kconfig.preempt" +config HAVE_ARCH_SHOW_MEM + def_bool y + source mm/Kconfig endmenu diff --git a/arch/frv/Kconfig b/arch/frv/Kconfig index a5aac1b..c1a5aac 100644 --- a/arch/frv/Kconfig +++ b/arch/frv/Kconfig @@ -107,6 +107,9 @@ config HIGHPTE with a lot of RAM, this can be wasteful of precious low memory. Setting this option will put user-space page tables in high memory. +config HAVE_ARCH_SHOW_MEM + def_bool y + source "mm/Kconfig" choice diff --git a/arch/h8300/Kconfig ...
These are all not necessary. Better add some global Kconfig option that
gets selected by an arch if it wants the generic implementation.
e.g. we currently have this in arch/s390/Kconfig:
config S390
def_bool y
select HAVE_OPROFILE
select HAVE_KPROBES
select HAVE_KRETPROBES
just add a select HAVE_GENERIC_SHOWMEM or something like that in the arch
specific patches.
--
Seconded. See Documentation/kbuild/kconfig-language.txt for a few more hints how to do it. Sam --
Hi, Yes, I will rework the patches. Thanks. Hannes --
Hi, After more thinking about it, wouldn't it be better to have HAVE_ARCH_SHOW_MEM in mm/Kconfig and let archs with their own show_mem() select it? Because there are far more archs that use the generic version than those having their own. Hannes --
Positive logic is almost always simpler to grasp. And the usual way to do this is to let arch's select what they use. We do not want to have a situation where in most cases we select a generic version but in some oddball case we select to have a local version. Sam --
Hi, I can not follow you. Of course the arch selects what they use. But they should not _all_ have to be flagged with an extra select. So what default-value are you arguing for? Hannes --
The normal pattern is to let arch select the generic implmentation they use. Just because the majority does use the generic version should not make us start to use the inverse logic as in your case. So I want all archs that uses the generic show_mem() to do an explicit: config MYARCH select HAVE_GENERIC_SHOWMEM Sam --
Hi Sam, What is the rationale behind this? It is not a function the arch should select at all because it is VM code. The remaining arch-specific versions are meant to be removed too. It would be like forcing all architectures to select HAVE_GENERIC_PRINTK just because one architecture oopses on printk() and needs to replace it with its own version. Hannes --
Positive logic and consistency with the CONFIG_HAVE_WHATEVER is the reason. But you can solve this problem with no ifdefs and config options at all, since you may as well just use __attribute__((weak)) for the generic implementation. --
Which may result in the version of the function getting linked in but staying unreferenced. Ralf --
Oh, I assumed ld would support -dead_strip in the meantime to get rid of unreferenced functions. Looks like it still doesn't. --
And also Acked-By: Ralf Baechle <ralf@linux-mips.org>. Btw, the MIPS part of your patch is not a plain switch from arch to generic code as the patch comments seem to imply - the arch version was broken for some configs ... Ralf --
Signed-off-by: Johannes Weiner <hannes@saeurebad.de>
diff --git a/arch/x86/Kconfig b/arch/x86/Kconfig
index 47bb585..6c70fed 100644
--- a/arch/x86/Kconfig
+++ b/arch/x86/Kconfig
@@ -939,9 +939,6 @@ config ARCH_MEMORY_PROBE
def_bool X86_64
depends on MEMORY_HOTPLUG
-config HAVE_ARCH_SHOW_MEM
- def_bool y
-
source "mm/Kconfig"
config HIGHPTE
diff --git a/arch/x86/mm/init_64.c b/arch/x86/mm/init_64.c
index a02a14f..82f3b6d 100644
--- a/arch/x86/mm/init_64.c
+++ b/arch/x86/mm/init_64.c
@@ -60,46 +60,6 @@ DEFINE_PER_CPU(struct mmu_gather, mmu_gathers);
* around without checking the pgd every time.
*/
-void show_mem(void)
-{
- long i, total = 0, reserved = 0;
- long shared = 0, cached = 0;
- struct page *page;
- pg_data_t *pgdat;
-
- printk(KERN_INFO "Mem-info:\n");
- show_free_areas();
- printk(KERN_INFO "Free swap: %6ldkB\n",
- nr_swap_pages << (PAGE_SHIFT-10));
-
- for_each_online_pgdat(pgdat) {
- for (i = 0; i < pgdat->node_spanned_pages; ++i) {
- /*
- * This loop can take a while with 256 GB and
- * 4k pages so defer the NMI watchdog:
- */
- if (unlikely(i % MAX_ORDER_NR_PAGES == 0))
- touch_nmi_watchdog();
-
- if (!pfn_valid(pgdat->node_start_pfn + i))
- continue;
-
- page = pfn_to_page(pgdat->node_start_pfn + i);
- total++;
- if (PageReserved(page))
- reserved++;
- else if (PageSwapCache(page))
- cached++;
- else if (page_count(page))
- shared += page_count(page) - 1;
- }
- }
- printk(KERN_INFO "%lu pages of RAM\n", total);
- printk(KERN_INFO "%lu reserved pages\n", reserved);
- printk(KERN_INFO "%lu pages shared\n", shared);
- printk(KERN_INFO "%lu pages swap cached\n", cached);
-}
-
int after_bootmem;
static __init void *spp_getpage(void)
diff --git a/arch/x86/mm/pgtable_32.c b/arch/x86/mm/pgtable_32.c
index 2f9e9af..ead7015 100644
--- a/arch/x86/mm/pgtable_32.c
+++ b/arch/x86/mm/pgtable_32.c
@@ -24,54 +24,6 @@
#include <asm/tlb.h>
#include <asm/tlbflush.h>
...nice work! Acked-by: Ingo Molnar <mingo@elte.hu> Ingo --
Signed-off-by: Johannes Weiner <hannes@saeurebad.de>
diff --git a/arch/sparc64/Kconfig b/arch/sparc64/Kconfig
index d74b027..463d1be 100644
--- a/arch/sparc64/Kconfig
+++ b/arch/sparc64/Kconfig
@@ -267,9 +267,6 @@ config ARCH_SPARSEMEM_ENABLE
config ARCH_SPARSEMEM_DEFAULT
def_bool y
-config HAVE_ARCH_SHOW_MEM
- def_bool y
-
source "mm/Kconfig"
config ISA
diff --git a/arch/sparc64/mm/init.c b/arch/sparc64/mm/init.c
index f37078d..f6a86a2 100644
--- a/arch/sparc64/mm/init.c
+++ b/arch/sparc64/mm/init.c
@@ -391,51 +391,6 @@ void __kprobes flush_icache_range(unsigned long start, unsigned long end)
}
}
-void show_mem(void)
-{
- unsigned long total = 0, reserved = 0;
- unsigned long shared = 0, cached = 0;
- pg_data_t *pgdat;
-
- printk(KERN_INFO "Mem-info:\n");
- show_free_areas();
- printk(KERN_INFO "Free swap: %6ldkB\n",
- nr_swap_pages << (PAGE_SHIFT-10));
- for_each_online_pgdat(pgdat) {
- unsigned long i, flags;
-
- pgdat_resize_lock(pgdat, &flags);
- for (i = 0; i < pgdat->node_spanned_pages; i++) {
- struct page *page = pgdat_page_nr(pgdat, i);
- total++;
- if (PageReserved(page))
- reserved++;
- else if (PageSwapCache(page))
- cached++;
- else if (page_count(page))
- shared += page_count(page) - 1;
- }
- pgdat_resize_unlock(pgdat, &flags);
- }
-
- printk(KERN_INFO "%lu pages of RAM\n", total);
- printk(KERN_INFO "%lu reserved pages\n", reserved);
- printk(KERN_INFO "%lu pages shared\n", shared);
- printk(KERN_INFO "%lu pages swap cached\n", cached);
-
- printk(KERN_INFO "%lu pages dirty\n",
- global_page_state(NR_FILE_DIRTY));
- printk(KERN_INFO "%lu pages writeback\n",
- global_page_state(NR_WRITEBACK));
- printk(KERN_INFO "%lu pages mapped\n",
- global_page_state(NR_FILE_MAPPED));
- printk(KERN_INFO "%lu pages slab\n",
- global_page_state(NR_SLAB_RECLAIMABLE) +
- global_page_state(NR_SLAB_UNRECLAIMABLE));
- printk(KERN_INFO "%lu pages pagetables\n",
- ...Signed-off-by: Johannes Weiner <hannes@saeurebad.de>
diff --git a/arch/avr32/Kconfig b/arch/avr32/Kconfig
index 81e3360..c75d708 100644
--- a/arch/avr32/Kconfig
+++ b/arch/avr32/Kconfig
@@ -146,9 +146,6 @@ source "kernel/Kconfig.preempt"
config HAVE_ARCH_BOOTMEM_NODE
def_bool n
-config HAVE_ARCH_SHOW_MEM
- def_bool y
-
config ARCH_HAVE_MEMORY_PRESENT
def_bool n
diff --git a/arch/avr32/mm/init.c b/arch/avr32/mm/init.c
index 480760b..3cbff55 100644
--- a/arch/avr32/mm/init.c
+++ b/arch/avr32/mm/init.c
@@ -37,45 +37,6 @@ unsigned long mmu_context_cache = NO_CONTEXT;
#define START_PFN (NODE_DATA(0)->bdata->node_boot_start >> PAGE_SHIFT)
#define MAX_LOW_PFN (NODE_DATA(0)->bdata->node_low_pfn)
-void show_mem(void)
-{
- int total = 0, reserved = 0, cached = 0;
- int slab = 0, free = 0, shared = 0;
- pg_data_t *pgdat;
-
- printk("Mem-info:\n");
- show_free_areas();
-
- for_each_online_pgdat(pgdat) {
- struct page *page, *end;
-
- page = pgdat->node_mem_map;
- end = page + pgdat->node_spanned_pages;
-
- do {
- total++;
- if (PageReserved(page))
- reserved++;
- else if (PageSwapCache(page))
- cached++;
- else if (PageSlab(page))
- slab++;
- else if (!page_count(page))
- free++;
- else
- shared += page_count(page) - 1;
- page++;
- } while (page < end);
- }
-
- printk ("%d pages of RAM\n", total);
- printk ("%d free pages\n", free);
- printk ("%d reserved pages\n", reserved);
- printk ("%d slab pages\n", slab);
- printk ("%d pages shared\n", shared);
- printk ("%d pages swap cached\n", cached);
-}
-
/*
* paging_init() sets up the page tables
*
--
1.5.2.2
--
Signed-off-by: Johannes Weiner <hannes@saeurebad.de>
diff --git a/arch/blackfin/Kconfig b/arch/blackfin/Kconfig
index a8cc977..589c6ac 100644
--- a/arch/blackfin/Kconfig
+++ b/arch/blackfin/Kconfig
@@ -526,9 +526,6 @@ config BFIN_SCRATCH_REG_CYCLES
endchoice
-config HAVE_ARCH_SHOW_MEM
- def_bool y
-
endmenu
diff --git a/arch/blackfin/mm/init.c b/arch/blackfin/mm/init.c
index ec3141f..4d5326e 100644
--- a/arch/blackfin/mm/init.c
+++ b/arch/blackfin/mm/init.c
@@ -53,33 +53,6 @@ static unsigned long empty_bad_page;
unsigned long empty_zero_page;
-void show_mem(void)
-{
- unsigned long i;
- int free = 0, total = 0, reserved = 0, shared = 0;
-
- int cached = 0;
- printk(KERN_INFO "Mem-info:\n");
- show_free_areas();
- i = max_mapnr;
- while (i-- > 0) {
- total++;
- if (PageReserved(mem_map + i))
- reserved++;
- else if (PageSwapCache(mem_map + i))
- cached++;
- else if (!page_count(mem_map + i))
- free++;
- else
- shared += page_count(mem_map + i) - 1;
- }
- printk(KERN_INFO "%d pages of RAM\n", total);
- printk(KERN_INFO "%d free pages\n", free);
- printk(KERN_INFO "%d reserved pages\n", reserved);
- printk(KERN_INFO "%d pages shared\n", shared);
- printk(KERN_INFO "%d pages swap cached\n", cached);
-}
-
/*
* paging_init() continues the virtual memory environment setup which
* was begun by the code in arch/head.S.
--
1.5.2.2
--
Signed-off-by: Johannes Weiner <hannes@saeurebad.de>
diff --git a/arch/cris/Kconfig b/arch/cris/Kconfig
index 217c658..9389d38 100644
--- a/arch/cris/Kconfig
+++ b/arch/cris/Kconfig
@@ -108,9 +108,6 @@ config OOM_REBOOT
source "kernel/Kconfig.preempt"
-config HAVE_ARCH_SHOW_MEM
- def_bool y
-
source mm/Kconfig
endmenu
diff --git a/arch/cris/mm/init.c b/arch/cris/mm/init.c
index 4207a2b..2fdd212 100644
--- a/arch/cris/mm/init.c
+++ b/arch/cris/mm/init.c
@@ -19,37 +19,6 @@ unsigned long empty_zero_page;
extern char _stext, _edata, _etext; /* From linkerscript */
extern char __init_begin, __init_end;
-void
-show_mem(void)
-{
- int i,free = 0,total = 0,cached = 0, reserved = 0, nonshared = 0;
- int shared = 0;
-
- printk("\nMem-info:\n");
- show_free_areas();
- printk("Free swap: %6ldkB\n", nr_swap_pages<<(PAGE_SHIFT-10));
- i = max_mapnr;
- while (i-- > 0) {
- total++;
- if (PageReserved(mem_map+i))
- reserved++;
- else if (PageSwapCache(mem_map+i))
- cached++;
- else if (!page_count(mem_map+i))
- free++;
- else if (page_count(mem_map+i) == 1)
- nonshared++;
- else
- shared += page_count(mem_map+i) - 1;
- }
- printk("%d pages of RAM\n",total);
- printk("%d free pages\n",free);
- printk("%d reserved pages\n",reserved);
- printk("%d pages nonshared\n",nonshared);
- printk("%d pages shared\n",shared);
- printk("%d pages swap cached\n",cached);
-}
-
void __init
mem_init(void)
{
--
1.5.2.2
--
Signed-off-by: Johannes Weiner <hannes@saeurebad.de>
diff --git a/arch/frv/Kconfig b/arch/frv/Kconfig
index c1a5aac..a5aac1b 100644
--- a/arch/frv/Kconfig
+++ b/arch/frv/Kconfig
@@ -107,9 +107,6 @@ config HIGHPTE
with a lot of RAM, this can be wasteful of precious low memory.
Setting this option will put user-space page tables in high memory.
-config HAVE_ARCH_SHOW_MEM
- def_bool y
-
source "mm/Kconfig"
choice
diff --git a/arch/frv/mm/init.c b/arch/frv/mm/init.c
index b841ecf..f7a16d3 100644
--- a/arch/frv/mm/init.c
+++ b/arch/frv/mm/init.c
@@ -60,37 +60,6 @@ unsigned long empty_zero_page;
/*****************************************************************************/
/*
- *
- */
-void show_mem(void)
-{
- unsigned long i;
- int free = 0, total = 0, reserved = 0, shared = 0;
-
- printk("\nMem-info:\n");
- show_free_areas();
- i = max_mapnr;
- while (i-- > 0) {
- struct page *page = &mem_map[i];
-
- total++;
- if (PageReserved(page))
- reserved++;
- else if (!page_count(page))
- free++;
- else
- shared += page_count(page) - 1;
- }
-
- printk("%d pages of RAM\n",total);
- printk("%d free pages\n",free);
- printk("%d reserved pages\n",reserved);
- printk("%d pages shared\n",shared);
-
-} /* end show_mem() */
-
-/*****************************************************************************/
-/*
* paging_init() continues the virtual memory environment setup which
* was begun by the code in arch/head.S.
* The parameters are pointers to where to stick the starting and ending
--
1.5.2.2
--
Signed-off-by: Johannes Weiner <hannes@saeurebad.de>
diff --git a/arch/h8300/Kconfig b/arch/h8300/Kconfig
index 70e63fc..085dc6e 100644
--- a/arch/h8300/Kconfig
+++ b/arch/h8300/Kconfig
@@ -22,9 +22,6 @@ config ZONE_DMA
bool
default y
-config HAVE_ARCH_SHOW_MEM
- def_bool y
-
config FPU
bool
default n
diff --git a/arch/h8300/mm/init.c b/arch/h8300/mm/init.c
index e4f4199..82cc54e 100644
--- a/arch/h8300/mm/init.c
+++ b/arch/h8300/mm/init.c
@@ -64,33 +64,6 @@ unsigned long empty_zero_page;
extern unsigned long rom_length;
-void show_mem(void)
-{
- unsigned long i;
- int free = 0, total = 0, reserved = 0, shared = 0;
- int cached = 0;
-
- printk("\nMem-info:\n");
- show_free_areas();
- i = max_mapnr;
- while (i-- > 0) {
- total++;
- if (PageReserved(mem_map+i))
- reserved++;
- else if (PageSwapCache(mem_map+i))
- cached++;
- else if (!page_count(mem_map+i))
- free++;
- else
- shared += page_count(mem_map+i) - 1;
- }
- printk("%d pages of RAM\n",total);
- printk("%d free pages\n",free);
- printk("%d reserved pages\n",reserved);
- printk("%d pages shared\n",shared);
- printk("%d pages swap cached\n",cached);
-}
-
extern unsigned long memory_start;
extern unsigned long memory_end;
@@ -228,4 +201,3 @@ free_initmem()
(int)(addr - PAGE_SIZE));
#endif
}
-
--
1.5.2.2
--
Signed-off-by: Johannes Weiner <hannes@saeurebad.de>
diff --git a/arch/m32r/Kconfig b/arch/m32r/Kconfig
index 2f51d8f..de153de 100644
--- a/arch/m32r/Kconfig
+++ b/arch/m32r/Kconfig
@@ -225,9 +225,6 @@ config ARCH_DISCONTIGMEM_ENABLE
depends on CHIP_M32700 || CHIP_M32102 || CHIP_VDEC2 || CHIP_OPSP || CHIP_M32104
default y
-config HAVE_ARCH_SHOW_MEM
- def_bool y
-
source "mm/Kconfig"
config IRAM_START
diff --git a/arch/m32r/mm/init.c b/arch/m32r/mm/init.c
index bbd97c8..2a3e8b5 100644
--- a/arch/m32r/mm/init.c
+++ b/arch/m32r/mm/init.c
@@ -36,42 +36,6 @@ pgd_t swapper_pg_dir[1024];
DEFINE_PER_CPU(struct mmu_gather, mmu_gathers);
-void show_mem(void)
-{
- int total = 0, reserved = 0;
- int shared = 0, cached = 0;
- int highmem = 0;
- struct page *page;
- pg_data_t *pgdat;
- unsigned long i;
-
- printk("Mem-info:\n");
- show_free_areas();
- printk("Free swap: %6ldkB\n",nr_swap_pages<<(PAGE_SHIFT-10));
- for_each_online_pgdat(pgdat) {
- unsigned long flags;
- pgdat_resize_lock(pgdat, &flags);
- for (i = 0; i < pgdat->node_spanned_pages; ++i) {
- page = pgdat_page_nr(pgdat, i);
- total++;
- if (PageHighMem(page))
- highmem++;
- if (PageReserved(page))
- reserved++;
- else if (PageSwapCache(page))
- cached++;
- else if (page_count(page))
- shared += page_count(page) - 1;
- }
- pgdat_resize_unlock(pgdat, &flags);
- }
- printk("%d pages of RAM\n", total);
- printk("%d pages of HIGHMEM\n",highmem);
- printk("%d reserved pages\n",reserved);
- printk("%d pages shared\n",shared);
- printk("%d pages swap cached\n",cached);
-}
-
/*
* Cache of MMU context last used.
*/
@@ -252,4 +216,3 @@ void free_initrd_mem(unsigned long start, unsigned long end)
printk (KERN_INFO "Freeing initrd memory: %ldk freed\n", (end - start) >> 10);
}
#endif
-
--
1.5.2.2
--
Signed-off-by: Johannes Weiner <hannes@saeurebad.de>
diff --git a/arch/m68k/Kconfig b/arch/m68k/Kconfig
index 53b36a8..65db226 100644
--- a/arch/m68k/Kconfig
+++ b/arch/m68k/Kconfig
@@ -396,9 +396,6 @@ config NODES_SHIFT
default "3"
depends on !SINGLE_MEMORY_CHUNK
-config HAVE_ARCH_SHOW_MEM
- def_bool y
-
source "mm/Kconfig"
endmenu
diff --git a/arch/m68k/mm/init.c b/arch/m68k/mm/init.c
index f42caa7..19eb3ae 100644
--- a/arch/m68k/mm/init.c
+++ b/arch/m68k/mm/init.c
@@ -70,37 +70,6 @@ void __init m68k_setup_node(int node)
void *empty_zero_page;
-void show_mem(void)
-{
- pg_data_t *pgdat;
- int free = 0, total = 0, reserved = 0, shared = 0;
- int cached = 0;
- int i;
-
- printk("\nMem-info:\n");
- show_free_areas();
- printk("Free swap: %6ldkB\n", nr_swap_pages<<(PAGE_SHIFT-10));
- for_each_online_pgdat(pgdat) {
- for (i = 0; i < pgdat->node_spanned_pages; i++) {
- struct page *page = pgdat->node_mem_map + i;
- total++;
- if (PageReserved(page))
- reserved++;
- else if (PageSwapCache(page))
- cached++;
- else if (!page_count(page))
- free++;
- else
- shared += page_count(page) - 1;
- }
- }
- printk("%d pages of RAM\n",total);
- printk("%d free pages\n",free);
- printk("%d reserved pages\n",reserved);
- printk("%d pages shared\n",shared);
- printk("%d pages swap cached\n",cached);
-}
-
extern void init_pointer_table(unsigned long ptable);
/* References to section boundaries */
--
1.5.2.2
--
on m68k.
Gr{oetje,eeting}s,
Geert
--
Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@linux-m68k.org
In personal conversations with technical people, I call myself a hacker. But
when I'm talking to journalists I just say "programmer" or something like that.
-- Linus Torvalds
--
Hi Geert, show_mem() show_free_areas() show_swap_cache_info() show_free_areas() prints global_page_state(NR_FREE_PAGES). Isn't this the same? Thanks, Hannes --
Thanks, good to know...
So I suggest to add an additional (first) step to the consolidation: remove all
duplicates.
Gr{oetje,eeting}s,
Geert
--
Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@linux-m68k.org
In personal conversations with technical people, I call myself a hacker. But
when I'm talking to journalists I just say "programmer" or something like that.
-- Linus Torvalds
--
Hi, I shall do that. Problem is, I had a patch-series removing only parts of the duplication (shame on me) and not all of these patches are yet in the subsystem trees and still partially in -mm. None of them have hit mainline yet. Suggestions? The earlier patch-series was called `remove redundant output from show_mem()'. Sorry for the wasted time. These cleanups already took more energy than they are worth it, I guess... :/ Hannes --
Please do persist, I for one appreciate your efforts on this: something I wanted to do years ago but never yet got around to. Thank you! Hugh --
Hi, Thanks a lot! I will do a removal of redundant output for every show_mem() based on my prior patches first and then give the generic version another shot. Thanks for all your comments so far. Hannes --
Ack. Don't be disappointed by our comments!
Gr{oetje,eeting}s,
Geert
--
Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@linux-m68k.org
In personal conversations with technical people, I call myself a hacker. But
when I'm talking to journalists I just say "programmer" or something like that.
-- Linus Torvalds
--
Signed-off-by: Johannes Weiner <hannes@saeurebad.de>
diff --git a/arch/m68knommu/Kconfig b/arch/m68knommu/Kconfig
index 7e921a3..07eb4c4 100644
--- a/arch/m68knommu/Kconfig
+++ b/arch/m68knommu/Kconfig
@@ -671,9 +671,6 @@ config ROMKERNEL
endchoice
-config HAVE_ARCH_SHOW_MEM
- def_bool y
-
source "mm/Kconfig"
endmenu
diff --git a/arch/m68knommu/mm/init.c b/arch/m68knommu/mm/init.c
index 22e2a0d..345a92a 100644
--- a/arch/m68knommu/mm/init.c
+++ b/arch/m68knommu/mm/init.c
@@ -62,33 +62,6 @@ static unsigned long empty_bad_page;
unsigned long empty_zero_page;
-void show_mem(void)
-{
- unsigned long i;
- int free = 0, total = 0, reserved = 0, shared = 0;
- int cached = 0;
-
- printk(KERN_INFO "\nMem-info:\n");
- show_free_areas();
- i = max_mapnr;
- while (i-- > 0) {
- total++;
- if (PageReserved(mem_map+i))
- reserved++;
- else if (PageSwapCache(mem_map+i))
- cached++;
- else if (!page_count(mem_map+i))
- free++;
- else
- shared += page_count(mem_map+i) - 1;
- }
- printk(KERN_INFO "%d pages of RAM\n",total);
- printk(KERN_INFO "%d free pages\n",free);
- printk(KERN_INFO "%d reserved pages\n",reserved);
- printk(KERN_INFO "%d pages shared\n",shared);
- printk(KERN_INFO "%d pages swap cached\n",cached);
-}
-
extern unsigned long memory_start;
extern unsigned long memory_end;
@@ -223,4 +196,3 @@ free_initmem()
(int)(addr - PAGE_SIZE));
#endif
}
-
--
1.5.2.2
--
Signed-off-by: Johannes Weiner <hannes@saeurebad.de>
diff --git a/arch/mips/Kconfig b/arch/mips/Kconfig
index 7c5a3c2..8724ed3 100644
--- a/arch/mips/Kconfig
+++ b/arch/mips/Kconfig
@@ -1736,9 +1736,6 @@ config NODES_SHIFT
default "6"
depends on NEED_MULTIPLE_NODES
-config HAVE_ARCH_SHOW_MEM
- def_bool y
-
source "mm/Kconfig"
config SMP
diff --git a/arch/mips/mm/Makefile b/arch/mips/mm/Makefile
index c6f832e..4796b35 100644
--- a/arch/mips/mm/Makefile
+++ b/arch/mips/mm/Makefile
@@ -3,8 +3,7 @@
#
obj-y += cache.o dma-default.o extable.o fault.o \
- init.o pgtable.o tlbex.o tlbex-fault.o \
- uasm.o
+ init.o tlbex.o tlbex-fault.o uasm.o
obj-$(CONFIG_32BIT) += ioremap.o pgtable-32.o
obj-$(CONFIG_64BIT) += pgtable-64.o
diff --git a/arch/mips/mm/pgtable.c b/arch/mips/mm/pgtable.c
deleted file mode 100644
index 57df1c3..0000000
--- a/arch/mips/mm/pgtable.c
+++ /dev/null
@@ -1,37 +0,0 @@
-#include <linux/kernel.h>
-#include <linux/mm.h>
-#include <linux/swap.h>
-
-void show_mem(void)
-{
-#ifndef CONFIG_NEED_MULTIPLE_NODES /* XXX(hch): later.. */
- int pfn, total = 0, reserved = 0;
- int shared = 0, cached = 0;
- int highmem = 0;
- struct page *page;
-
- printk("Mem-info:\n");
- show_free_areas();
- printk("Free swap: %6ldkB\n", nr_swap_pages<<(PAGE_SHIFT-10));
- pfn = max_mapnr;
- while (pfn-- > 0) {
- if (!pfn_valid(pfn))
- continue;
- page = pfn_to_page(pfn);
- total++;
- if (PageHighMem(page))
- highmem++;
- if (PageReserved(page))
- reserved++;
- else if (PageSwapCache(page))
- cached++;
- else if (page_count(page))
- shared += page_count(page) - 1;
- }
- printk("%d pages of RAM\n", total);
- printk("%d pages of HIGHMEM\n", highmem);
- printk("%d reserved pages\n", reserved);
- printk("%d pages shared\n", shared);
- printk("%d pages swap cached\n", cached);
-#endif
-}
--
1.5.2.2
--
Acked-by: Ralf Baechle <ralf@linux-mips.org> Ralf --
Signed-off-by: Johannes Weiner <hannes@saeurebad.de>
diff --git a/arch/mn10300/Kconfig b/arch/mn10300/Kconfig
index a20b8f6..6a6409a 100644
--- a/arch/mn10300/Kconfig
+++ b/arch/mn10300/Kconfig
@@ -353,9 +353,6 @@ config MN10300_TTYSM2_CTS
endmenu
-config HAVE_ARCH_SHOW_MEM
- def_bool y
-
source "mm/Kconfig"
menu "Power management options"
diff --git a/arch/mn10300/mm/pgtable.c b/arch/mn10300/mm/pgtable.c
index a477038..baffc58 100644
--- a/arch/mn10300/mm/pgtable.c
+++ b/arch/mn10300/mm/pgtable.c
@@ -27,33 +27,6 @@
#include <asm/tlb.h>
#include <asm/tlbflush.h>
-void show_mem(void)
-{
- unsigned long i;
- int free = 0, total = 0, reserved = 0, shared = 0;
-
- int cached = 0;
- printk(KERN_INFO "Mem-info:\n");
- show_free_areas();
- i = max_mapnr;
- while (i-- > 0) {
- total++;
- if (PageReserved(mem_map + i))
- reserved++;
- else if (PageSwapCache(mem_map + i))
- cached++;
- else if (!page_count(mem_map + i))
- free++;
- else
- shared += page_count(mem_map + i) - 1;
- }
- printk(KERN_INFO "%d pages of RAM\n", total);
- printk(KERN_INFO "%d free pages\n", free);
- printk(KERN_INFO "%d reserved pages\n", reserved);
- printk(KERN_INFO "%d pages shared\n", shared);
- printk(KERN_INFO "%d pages swap cached\n", cached);
-}
-
/*
* Associate a large virtual page frame with a given physical page frame
* and protection flags for that frame. pfn is for the base of the page,
--
1.5.2.2
--
Signed-off-by: Johannes Weiner <hannes@saeurebad.de>
diff --git a/arch/parisc/Kconfig b/arch/parisc/Kconfig
index 9ec4fcd..bc7a19d 100644
--- a/arch/parisc/Kconfig
+++ b/arch/parisc/Kconfig
@@ -240,9 +240,6 @@ config NODES_SHIFT
default "3"
depends on NEED_MULTIPLE_NODES
-config HAVE_ARCH_SHOW_MEM
- def_bool y
-
source "kernel/Kconfig.preempt"
source "kernel/Kconfig.hz"
source "mm/Kconfig"
diff --git a/arch/parisc/mm/init.c b/arch/parisc/mm/init.c
index eb80f5e..e8e9891 100644
--- a/arch/parisc/mm/init.c
+++ b/arch/parisc/mm/init.c
@@ -548,78 +548,6 @@ void __init mem_init(void)
unsigned long *empty_zero_page __read_mostly;
-void show_mem(void)
-{
- int i,free = 0,total = 0,reserved = 0;
- int shared = 0, cached = 0;
-
- printk(KERN_INFO "Mem-info:\n");
- show_free_areas();
- printk(KERN_INFO "Free swap: %6ldkB\n",
- nr_swap_pages<<(PAGE_SHIFT-10));
-#ifndef CONFIG_DISCONTIGMEM
- i = max_mapnr;
- while (i-- > 0) {
- total++;
- if (PageReserved(mem_map+i))
- reserved++;
- else if (PageSwapCache(mem_map+i))
- cached++;
- else if (!page_count(&mem_map[i]))
- free++;
- else
- shared += page_count(&mem_map[i]) - 1;
- }
-#else
- for (i = 0; i < npmem_ranges; i++) {
- int j;
-
- for (j = node_start_pfn(i); j < node_end_pfn(i); j++) {
- struct page *p;
- unsigned long flags;
-
- pgdat_resize_lock(NODE_DATA(i), &flags);
- p = nid_page_nr(i, j) - node_start_pfn(i);
-
- total++;
- if (PageReserved(p))
- reserved++;
- else if (PageSwapCache(p))
- cached++;
- else if (!page_count(p))
- free++;
- else
- shared += page_count(p) - 1;
- pgdat_resize_unlock(NODE_DATA(i), &flags);
- }
- }
-#endif
- printk(KERN_INFO "%d pages of RAM\n", total);
- printk(KERN_INFO "%d reserved pages\n", reserved);
- printk(KERN_INFO "%d pages shared\n", shared);
- printk(KERN_INFO "%d pages swap cached\n", cached);
-
-
-#ifdef CONFIG_DISCONTIGMEM
- {
- struct zonelist *zl;
- int i, j, ...Signed-off-by: Johannes Weiner <hannes@saeurebad.de>
diff --git a/arch/powerpc/Kconfig b/arch/powerpc/Kconfig
index 8950e0c..1189d8d 100644
--- a/arch/powerpc/Kconfig
+++ b/arch/powerpc/Kconfig
@@ -350,9 +350,6 @@ config ARCH_SPARSEMEM_DEFAULT
config ARCH_POPULATES_NODE_MAP
def_bool y
-config HAVE_ARCH_SHOW_MEM
- def_bool y
-
source "mm/Kconfig"
config ARCH_MEMORY_PROBE
diff --git a/arch/powerpc/mm/mem.c b/arch/powerpc/mm/mem.c
index be5c506..fcbae37 100644
--- a/arch/powerpc/mm/mem.c
+++ b/arch/powerpc/mm/mem.c
@@ -164,46 +164,6 @@ walk_memory_resource(unsigned long start_pfn, unsigned long nr_pages, void *arg,
#endif /* CONFIG_MEMORY_HOTPLUG */
-void show_mem(void)
-{
- unsigned long total = 0, reserved = 0;
- unsigned long shared = 0, cached = 0;
- unsigned long highmem = 0;
- struct page *page;
- pg_data_t *pgdat;
- unsigned long i;
-
- printk("Mem-info:\n");
- show_free_areas();
- printk("Free swap: %6ldkB\n", nr_swap_pages<<(PAGE_SHIFT-10));
- for_each_online_pgdat(pgdat) {
- unsigned long flags;
- pgdat_resize_lock(pgdat, &flags);
- for (i = 0; i < pgdat->node_spanned_pages; i++) {
- if (!pfn_valid(pgdat->node_start_pfn + i))
- continue;
- page = pgdat_page_nr(pgdat, i);
- total++;
- if (PageHighMem(page))
- highmem++;
- if (PageReserved(page))
- reserved++;
- else if (PageSwapCache(page))
- cached++;
- else if (page_count(page))
- shared += page_count(page) - 1;
- }
- pgdat_resize_unlock(pgdat, &flags);
- }
- printk("%ld pages of RAM\n", total);
-#ifdef CONFIG_HIGHMEM
- printk("%ld pages of HIGHMEM\n", highmem);
-#endif
- printk("%ld reserved pages\n", reserved);
- printk("%ld pages shared\n", shared);
- printk("%ld pages swap cached\n", cached);
-}
-
/*
* Initialize the bootmem system and give it all the memory we
* have available. If we are using highmem, we only put the
--
1.5.2.2
--
Signed-off-by: Johannes Weiner <hannes@saeurebad.de>
diff --git a/arch/ppc/Kconfig b/arch/ppc/Kconfig
index db5e6a1..abc877f 100644
--- a/arch/ppc/Kconfig
+++ b/arch/ppc/Kconfig
@@ -924,9 +924,6 @@ config HIGHMEM
config ARCH_POPULATES_NODE_MAP
def_bool y
-config HAVE_ARCH_SHOW_MEM
- def_bool y
-
source kernel/Kconfig.hz
source kernel/Kconfig.preempt
source "mm/Kconfig"
diff --git a/arch/ppc/mm/init.c b/arch/ppc/mm/init.c
index 7444df3..132031a 100644
--- a/arch/ppc/mm/init.c
+++ b/arch/ppc/mm/init.c
@@ -101,37 +101,6 @@ unsigned long __max_memory;
/* max amount of low RAM to map in */
unsigned long __max_low_memory = MAX_LOW_MEM;
-void show_mem(void)
-{
- int i,free = 0,total = 0,reserved = 0;
- int shared = 0, cached = 0;
- int highmem = 0;
-
- printk("Mem-info:\n");
- show_free_areas();
- printk("Free swap: %6ldkB\n", nr_swap_pages<<(PAGE_SHIFT-10));
- i = max_mapnr;
- while (i-- > 0) {
- total++;
- if (PageHighMem(mem_map+i))
- highmem++;
- if (PageReserved(mem_map+i))
- reserved++;
- else if (PageSwapCache(mem_map+i))
- cached++;
- else if (!page_count(mem_map+i))
- free++;
- else
- shared += page_count(mem_map+i) - 1;
- }
- printk("%d pages of RAM\n",total);
- printk("%d pages of HIGHMEM\n", highmem);
- printk("%d free pages\n",free);
- printk("%d reserved pages\n",reserved);
- printk("%d pages shared\n",shared);
- printk("%d pages swap cached\n",cached);
-}
-
/* Free up now-unused memory */
static void free_sec(unsigned long start, unsigned long end, const char *name)
{
--
1.5.2.2
--
Signed-off-by: Johannes Weiner <hannes@saeurebad.de>
diff --git a/arch/s390/Kconfig b/arch/s390/Kconfig
index 6fb2b79..1831833 100644
--- a/arch/s390/Kconfig
+++ b/arch/s390/Kconfig
@@ -282,9 +282,6 @@ config WARN_STACK_SIZE
config ARCH_POPULATES_NODE_MAP
def_bool y
-config HAVE_ARCH_SHOW_MEM
- def_bool y
-
comment "Kernel preemption"
source "kernel/Kconfig.preempt"
diff --git a/arch/s390/mm/init.c b/arch/s390/mm/init.c
index 8053245..27b94cb 100644
--- a/arch/s390/mm/init.c
+++ b/arch/s390/mm/init.c
@@ -42,42 +42,6 @@ DEFINE_PER_CPU(struct mmu_gather, mmu_gathers);
pgd_t swapper_pg_dir[PTRS_PER_PGD] __attribute__((__aligned__(PAGE_SIZE)));
char empty_zero_page[PAGE_SIZE] __attribute__((__aligned__(PAGE_SIZE)));
-void show_mem(void)
-{
- int i, total = 0, reserved = 0;
- int shared = 0, cached = 0;
- struct page *page;
-
- printk("Mem-info:\n");
- show_free_areas();
- printk("Free swap: %6ldkB\n", nr_swap_pages << (PAGE_SHIFT - 10));
- i = max_mapnr;
- while (i-- > 0) {
- if (!pfn_valid(i))
- continue;
- page = pfn_to_page(i);
- total++;
- if (PageReserved(page))
- reserved++;
- else if (PageSwapCache(page))
- cached++;
- else if (page_count(page))
- shared += page_count(page) - 1;
- }
- printk("%d pages of RAM\n", total);
- printk("%d reserved pages\n", reserved);
- printk("%d pages shared\n", shared);
- printk("%d pages swap cached\n", cached);
-
- printk("%lu pages dirty\n", global_page_state(NR_FILE_DIRTY));
- printk("%lu pages writeback\n", global_page_state(NR_WRITEBACK));
- printk("%lu pages mapped\n", global_page_state(NR_FILE_MAPPED));
- printk("%lu pages slab\n",
- global_page_state(NR_SLAB_RECLAIMABLE) +
- global_page_state(NR_SLAB_UNRECLAIMABLE));
- printk("%lu pages pagetables\n", global_page_state(NR_PAGETABLE));
-}
-
static void __init setup_ro_region(void)
{
pgd_t *pgd;
--
1.5.2.2
--
These are all missing in the generic implementation. --
Hi, These are all duplicates from show_free_areas(). Thanks, Hannes --
In this case ignore my comment ;) Btw. your patch regarding the removal of show_free_areas() from s390's arch code will be merged during the next merge window. --
Hi, Okay. Do you mean the removal of printk("Free swap: %6ldkB\n", nr_swap_pages << (PAGE_SHIFT - 10)); in show_mem()? This was my last patch series about. Can I add your Acked-by for _this_ series? Thanks, Hannes --
Acked-by: Heiko Carstens <heiko.carstens@de.ibm.com> --
Signed-off-by: Johannes Weiner <hannes@saeurebad.de>
diff --git a/arch/sh/mm/Kconfig b/arch/sh/mm/Kconfig
index b74c4e7..5fd2184 100644
--- a/arch/sh/mm/Kconfig
+++ b/arch/sh/mm/Kconfig
@@ -138,9 +138,6 @@ config ARCH_MEMORY_PROBE
def_bool y
depends on MEMORY_HOTPLUG
-config HAVE_ARCH_SHOW_MEM
- def_bool y
-
choice
prompt "Kernel page size"
default PAGE_SIZE_8KB if X2TLB
diff --git a/arch/sh/mm/init.c b/arch/sh/mm/init.c
index 53dde06..ff81bfd 100644
--- a/arch/sh/mm/init.c
+++ b/arch/sh/mm/init.c
@@ -25,47 +25,6 @@ DEFINE_PER_CPU(struct mmu_gather, mmu_gathers);
pgd_t swapper_pg_dir[PTRS_PER_PGD];
unsigned long cached_to_uncached = 0;
-void show_mem(void)
-{
- int total = 0, reserved = 0, free = 0;
- int shared = 0, cached = 0, slab = 0;
- pg_data_t *pgdat;
-
- printk("Mem-info:\n");
- show_free_areas();
-
- for_each_online_pgdat(pgdat) {
- unsigned long flags, i;
-
- pgdat_resize_lock(pgdat, &flags);
- for (i = 0; i < pgdat->node_spanned_pages; i++) {
- struct page *page = pgdat_page_nr(pgdat, i);
- total++;
- if (PageReserved(page))
- reserved++;
- else if (PageSwapCache(page))
- cached++;
- else if (PageSlab(page))
- slab++;
- else if (!page_count(page))
- free++;
- else
- shared += page_count(page) - 1;
- }
- pgdat_resize_unlock(pgdat, &flags);
- }
-
- printk("Free swap: %6ldkB\n", nr_swap_pages<<(PAGE_SHIFT-10));
- printk("%d pages of RAM\n", total);
- printk("%d free pages\n", free);
- printk("%d reserved pages\n", reserved);
- printk("%d slab pages\n", slab);
- printk("%d pages shared\n", shared);
- printk("%d pages swap cached\n", cached);
- printk(KERN_INFO "Total of %ld pages in page table cache\n",
- quicklist_total_size());
-}
-
#ifdef CONFIG_MMU
static void set_pte_phys(unsigned long addr, unsigned long phys, pgprot_t prot)
{
--
1.5.2.2
--
NACK. The quicklists are also absent from the generic implementation. Doing things generically is nice and all, but please do not go around removing all of the different implementations and consolidating on the simplest point of commonality you could come up with. Either combine everything in to a generic show_mem() that doesn't sacrifice functionality, or only convert the platforms that are identical. --
Hi Paul, Sorry, I made it an RFC because I was not quite sure if the generic pfn walker is valid on all affected architectures. If it is okay, I will send a patch-set meant for application that does not miss any output. Thanks, Hannes --
Signed-off-by: Johannes Weiner <hannes@saeurebad.de>
diff --git a/arch/um/Kconfig b/arch/um/Kconfig
index f3b75af..dba8e05 100644
--- a/arch/um/Kconfig
+++ b/arch/um/Kconfig
@@ -86,10 +86,6 @@ config STATIC_LINK
2.75G) for UML.
source "arch/um/Kconfig.arch"
-
-config HAVE_ARCH_SHOW_MEM
- def_bool y
-
source "mm/Kconfig"
source "kernel/time/Kconfig"
diff --git a/arch/um/kernel/mem.c b/arch/um/kernel/mem.c
index 2eea1ff..e1c7d20 100644
--- a/arch/um/kernel/mem.c
+++ b/arch/um/kernel/mem.c
@@ -295,37 +295,6 @@ void free_initrd_mem(unsigned long start, unsigned long end)
}
#endif
-void show_mem(void)
-{
- int pfn, total = 0, reserved = 0;
- int shared = 0, cached = 0;
- int high_mem = 0;
- struct page *page;
-
- printk(KERN_INFO "Mem-info:\n");
- show_free_areas();
- printk(KERN_INFO "Free swap: %6ldkB\n",
- nr_swap_pages<<(PAGE_SHIFT-10));
- pfn = max_mapnr;
- while (pfn-- > 0) {
- page = pfn_to_page(pfn);
- total++;
- if (PageHighMem(page))
- high_mem++;
- if (PageReserved(page))
- reserved++;
- else if (PageSwapCache(page))
- cached++;
- else if (page_count(page))
- shared += page_count(page) - 1;
- }
- printk(KERN_INFO "%d pages of RAM\n", total);
- printk(KERN_INFO "%d pages of HIGHMEM\n", high_mem);
- printk(KERN_INFO "%d reserved pages\n", reserved);
- printk(KERN_INFO "%d pages shared\n", shared);
- printk(KERN_INFO "%d pages swap cached\n", cached);
-}
-
/* Allocate and free page tables. */
pgd_t *pgd_alloc(struct mm_struct *mm)
--
1.5.2.2
--
This looks fine for UML.
Jeff
--
Work email - jdike at linux dot intel dot com
--
Signed-off-by: Johannes Weiner <hannes@saeurebad.de>
diff --git a/arch/v850/Kconfig b/arch/v850/Kconfig
index a4d8e72..4379f43 100644
--- a/arch/v850/Kconfig
+++ b/arch/v850/Kconfig
@@ -56,9 +56,6 @@ config ARCH_HAS_ILOG2_U64
config ARCH_SUPPORTS_AOUT
def_bool y
-config HAVE_ARCH_SHOW_MEM
- def_bool y
-
# Turn off some random 386 crap that can affect device config
config ISA
bool
diff --git a/arch/v850/kernel/setup.c b/arch/v850/kernel/setup.c
index a0a8456..5751709 100644
--- a/arch/v850/kernel/setup.c
+++ b/arch/v850/kernel/setup.c
@@ -298,33 +298,3 @@ init_mem_alloc (unsigned long ram_start, unsigned long ram_len)
free_area_init_node (0, NODE_DATA(0), zones_size,
ADDR_TO_PAGE (PAGE_OFFSET), 0);
}
-
-
-
-/* Taken from m68knommu */
-void show_mem(void)
-{
- unsigned long i;
- int free = 0, total = 0, reserved = 0, shared = 0;
- int cached = 0;
-
- printk(KERN_INFO "\nMem-info:\n");
- show_free_areas();
- i = max_mapnr;
- while (i-- > 0) {
- total++;
- if (PageReserved(mem_map+i))
- reserved++;
- else if (PageSwapCache(mem_map+i))
- cached++;
- else if (!page_count(mem_map+i))
- free++;
- else
- shared += page_count(mem_map+i) - 1;
- }
- printk(KERN_INFO "%d pages of RAM\n",total);
- printk(KERN_INFO "%d free pages\n",free);
- printk(KERN_INFO "%d reserved pages\n",reserved);
- printk(KERN_INFO "%d pages shared\n",shared);
- printk(KERN_INFO "%d pages swap cached\n",cached);
-}
--
1.5.2.2
--
Signed-off-by: Johannes Weiner <hannes@saeurebad.de>
diff --git a/arch/xtensa/Kconfig b/arch/xtensa/Kconfig
index 0e3b68c..9fc8551 100644
--- a/arch/xtensa/Kconfig
+++ b/arch/xtensa/Kconfig
@@ -163,9 +163,6 @@ config XTENSA_ISS_NETWORK
depends on XTENSA_PLATFORM_ISS
default y
-config HAVE_ARCH_SHOW_MEM
- def_bool y
-
source "mm/Kconfig"
endmenu
diff --git a/arch/xtensa/mm/init.c b/arch/xtensa/mm/init.c
index 81d0560..303fa3e 100644
--- a/arch/xtensa/mm/init.c
+++ b/arch/xtensa/mm/init.c
@@ -280,33 +280,6 @@ void free_initmem(void)
(&__init_end - &__init_begin) >> 10);
}
-void show_mem(void)
-{
- int i, free = 0, total = 0, reserved = 0;
- int shared = 0, cached = 0;
-
- printk("Mem-info:\n");
- show_free_areas();
- printk("Free swap: %6ldkB\n", nr_swap_pages<<(PAGE_SHIFT-10));
- i = max_mapnr;
- while (i-- > 0) {
- total++;
- if (PageReserved(mem_map+i))
- reserved++;
- else if (PageSwapCache(mem_map+i))
- cached++;
- else if (!page_count(mem_map + i))
- free++;
- else
- shared += page_count(mem_map + i) - 1;
- }
- printk("%d pages of RAM\n", total);
- printk("%d reserved pages\n", reserved);
- printk("%d pages shared\n", shared);
- printk("%d pages swap cached\n",cached);
- printk("%d free pages\n", free);
-}
-
struct kmem_cache *pgtable_cache __read_mostly;
static void pgd_ctor(struct kmem_cache *cache, void* addr)
--
1.5.2.2
--
Signed-off-by: Johannes Weiner <hannes@saeurebad.de>
diff --git a/arch/alpha/Kconfig b/arch/alpha/Kconfig
index efffa92..c91629f 100644
--- a/arch/alpha/Kconfig
+++ b/arch/alpha/Kconfig
@@ -598,9 +598,6 @@ config ALPHA_LARGE_VMALLOC
Say N unless you know you need gobs and gobs of vmalloc space.
-config HAVE_ARCH_SHOW_MEM
- def_bool y
-
config VERBOSE_MCHECK
bool "Verbose Machine Checks"
@@ -679,4 +676,3 @@ source "security/Kconfig"
source "crypto/Kconfig"
source "lib/Kconfig"
-
diff --git a/arch/alpha/mm/init.c b/arch/alpha/mm/init.c
index 40c15e7..234e42b 100644
--- a/arch/alpha/mm/init.c
+++ b/arch/alpha/mm/init.c
@@ -94,36 +94,6 @@ __bad_page(void)
return pte_mkdirty(mk_pte(virt_to_page(EMPTY_PGE), PAGE_SHARED));
}
-#ifndef CONFIG_DISCONTIGMEM
-void
-show_mem(void)
-{
- long i,free = 0,total = 0,reserved = 0;
- long shared = 0, cached = 0;
-
- printk("\nMem-info:\n");
- show_free_areas();
- printk("Free swap: %6ldkB\n", nr_swap_pages<<(PAGE_SHIFT-10));
- i = max_mapnr;
- while (i-- > 0) {
- total++;
- if (PageReserved(mem_map+i))
- reserved++;
- else if (PageSwapCache(mem_map+i))
- cached++;
- else if (!page_count(mem_map+i))
- free++;
- else
- shared += page_count(mem_map + i) - 1;
- }
- printk("%ld pages of RAM\n",total);
- printk("%ld free pages\n",free);
- printk("%ld reserved pages\n",reserved);
- printk("%ld pages shared\n",shared);
- printk("%ld pages swap cached\n",cached);
-}
-#endif
-
static inline unsigned long
load_PCB(struct pcb_struct *pcb)
{
diff --git a/arch/alpha/mm/numa.c b/arch/alpha/mm/numa.c
index 10ab783..a460645 100644
--- a/arch/alpha/mm/numa.c
+++ b/arch/alpha/mm/numa.c
@@ -359,38 +359,3 @@ void __init mem_init(void)
mem_stress();
#endif
}
-
-void
-show_mem(void)
-{
- long i,free = 0,total = 0,reserved = 0;
- long shared = 0, cached = 0;
- int nid;
-
- printk("\nMem-info:\n");
- show_free_areas();
- printk("Free swap: %6ldkB\n", ...Hi, most of the feedback I got now was about information displaying that I allegedly have simply dropped. This was only true in one case where I missed the quicklist cache, the other droppings were redundant information (already displayed in show_free_areas() for example). Geert suggested that I should boil down show_mem() first for each arch and then unify it but I would prefer unifying it first and listing removed redundancy in the changelog of every arch-specific removal. Any objections on this? Hannes --
