From mboxrd@z Thu Jan 1 00:00:00 1970 From: akpm@linux-foundation.org Subject: + lib-generic-show_mem.patch added to -mm tree Date: Tue, 22 Jul 2008 03:23:36 -0700 Message-ID: <200807221023.m6MANaH7023049@imap1.linux-foundation.org> Reply-To: linux-kernel@vger.kernel.org Return-path: Received: from smtp1.linux-foundation.org ([140.211.169.13]:33249 "EHLO smtp1.linux-foundation.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753024AbYGVK0v (ORCPT ); Tue, 22 Jul 2008 06:26:51 -0400 Sender: mm-commits-owner@vger.kernel.org List-Id: mm-commits@vger.kernel.org To: mm-commits@vger.kernel.org Cc: hannes@saeurebad.de, benh@kernel.crashing.org, chris@zankel.net, cooloney@kernel.org, davem@davemloft.net, dhowells@redhat.com, geert@linux-m68k.org, gerg@uclinux.org, heiko.carstens@de.ibm.com, hskinnemoen@atmel.com, ink@jurassic.park.msu.ru, jdike@addtoit.com, lethal@linux-sh.org, mingo@elte.hu, paulus@samba.org, ralf@linux-mips.org, rth@twiddle.net, schwidefsky@de.ibm.com, starvik@axis.com, takata@linux-m32r.org, ysato@users.sourceforge.jp, zippel@linux-m68k.org The patch titled lib: generic show_mem() has been added to the -mm tree. Its filename is lib-generic-show_mem.patch Before you just go and hit "reply", please: a) Consider who else should be cc'ed b) Prefer to cc a suitable mailing list as well c) Ideally: find the original patch on the mailing list and do a reply-to-all to that, adding suitable additional cc's *** Remember to use Documentation/SubmitChecklist when testing your code *** See http://www.zip.com.au/~akpm/linux/patches/stuff/added-to-mm.txt to find out what to do about this The current -mm tree may be found at http://userweb.kernel.org/~akpm/mmotm/ ------------------------------------------------------ Subject: lib: generic show_mem() From: Johannes Weiner This implements a platform-independent version of show_mem(). Signed-off-by: Johannes Weiner Cc: Richard Henderson Cc: Ivan Kokshaysky Cc: Haavard Skinnemoen Cc: Bryan Wu Cc: Chris Zankel Cc: Ingo Molnar Cc: Jeff Dike Cc: David S. Miller Cc: Paul Mundt Cc: Heiko Carstens Cc: Martin Schwidefsky Cc: David Howells Cc: Benjamin Herrenschmidt Cc: Paul Mackerras Cc: Yoshinori Sato Cc: Ralf Baechle Cc: Greg Ungerer Cc: Geert Uytterhoeven Cc: Roman Zippel Cc: Hirokazu Takata Cc: Mikael Starvik Signed-off-by: Andrew Morton --- lib/Makefile | 2 - lib/show_mem.c | 63 +++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 64 insertions(+), 1 deletion(-) diff -puN lib/Makefile~lib-generic-show_mem lib/Makefile --- a/lib/Makefile~lib-generic-show_mem +++ a/lib/Makefile @@ -11,7 +11,7 @@ lib-y := ctype.o string.o vsprintf.o cmd rbtree.o radix-tree.o dump_stack.o \ idr.o int_sqrt.o extable.o prio_tree.o \ sha1.o irq_regs.o reciprocal_div.o argv_split.o \ - proportions.o prio_heap.o ratelimit.o + proportions.o prio_heap.o ratelimit.o show_mem.o lib-$(CONFIG_MMU) += ioremap.o lib-$(CONFIG_SMP) += cpumask.o diff -puN /dev/null lib/show_mem.c --- /dev/null +++ a/lib/show_mem.c @@ -0,0 +1,63 @@ +/* + * Generic show_mem() implementation + * + * Copyright (C) 2008 Johannes Weiner + * All code subject to the GPL version 2. + */ + +#include +#include +#include + +void show_mem(void) +{ + pg_data_t *pgdat; + unsigned long total = 0, reserved = 0, shared = 0, + nonshared = 0, highmem = 0; + + printk(KERN_INFO "Mem-Info:\n"); + show_free_areas(); + + 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; + unsigned long pfn = pgdat->node_start_pfn + i; + + if (unlikely(!(i % MAX_ORDER_NR_PAGES))) + touch_nmi_watchdog(); + + if (!pfn_valid(pfn)) + continue; + + page = pfn_to_page(pfn); + + if (PageHighMem(page)) + highmem++; + + if (PageReserved(page)) + reserved++; + else if (page_count(page) == 1) + nonshared++; + else if (page_count(page) > 1) + shared += page_count(page) - 1; + + total++; + } + pgdat_resize_unlock(pgdat, &flags); + } + + printk(KERN_INFO "%lu pages RAM\n", total); +#ifdef CONFIG_HIGHMEM + printk(KERN_INFO "%lu pages HighMem\n", highmem); +#endif + printk(KERN_INFO "%lu pages reserved\n", reserved); + printk(KERN_INFO "%lu pages shared\n", shared); + printk(KERN_INFO "%lu pages non-shared\n", nonshared); +#ifdef CONFIG_QUICKLIST + printk(KERN_INFO "%lu pages in pagetable cache\n", + quicklist_total_size()); +#endif +} _ Patches currently in -mm which might be from hannes@saeurebad.de are origin.patch linux-next.patch git-xtensa.patch mm-move-bootmem-descriptors-definition-to-a-single-place.patch mm-fix-free_all_bootmem_core-alignment-check.patch mm-normalize-internal-argument-passing-of-bootmem-data.patch mm-unexport-__alloc_bootmem_core.patch mm-drop-unneeded-pgdat-argument-from-free_area_init_node.patch hugetlb-guarantee-that-cow-faults-for-a-process-that-called-mmapmap_private-on-hugetlbfs-will-succeed-fix.patch huge-page-private-reservation-review-cleanups.patch huge-page-private-reservation-review-cleanups-fix.patch mm-record-map_noreserve-status-on-vmas-and-fix-small-page-mprotect-reservations.patch hugetlb-move-reservation-region-support-earlier.patch hugetlb-allow-huge-page-mappings-to-be-created-without-reservations.patch hugetlb-allow-huge-page-mappings-to-be-created-without-reservations-cleanups.patch hugetlb-reservations-fix-hugetlb-map_private-reservations-across-vma-splits-v2.patch vma-page-offset-has-no-callees-drop-it.patch hugetlb-fix-race-when-reading-proc-meminfo.patch hugetlb-quota-is-not-freed-for-unused-reserved-private-huge-pages.patch linux-next-revert-bootmem-add-return-value-to-reserve_bootmem_node.patch bootmem-reorder-code-to-match-new-bootmem-structure.patch revert-linux-next-revert-bootmem-add-return-value-to-reserve_bootmem_node.patch bootmem-clean-up-bootmemc-file-header.patch revert-revert-linux-next-revert-bootmem-add-return-value-to-reserve_bootmem_node.patch bootmem-add-documentation-to-api-functions.patch revert-revert-revert-linux-next-revert-bootmem-add-return-value-to-reserve_bootmem_node.patch bootmem-add-debugging-framework.patch bootmem-add-debugging-framework-fix.patch bootmem-revisit-bitmap-size-calculations.patch bootmem-revisit-bootmem-descriptor-list-handling.patch bootmem-clean-up-free_all_bootmem_core.patch bootmem-clean-up-free_all_bootmem_core-fix.patch bootmem-clean-up-alloc_bootmem_core.patch bootmem-clean-up-alloc_bootmem_core-fix-new-alloc_bootmem_core.patch bootmem-free-reserve-helpers.patch bootmem-free-reserve-helpers-fix.patch revert-revert-revert-revert-linux-next-revert-bootmem-add-return-value-to-reserve_bootmem_node.patch bootmem-factor-out-the-marking-of-a-pfn-range.patch bootmem-factor-out-the-marking-of-a-pfn-range-fix.patch bootmem-respect-goal-more-likely.patch bootmem-make-__alloc_bootmem_low_node-fall-back-to-other-nodes.patch bootmem-revisit-alloc_bootmem_section.patch bootmem-replace-node_boot_start-in-struct-bootmem_data.patch bootmem-replace-node_boot_start-in-struct-bootmem_data-fix.patch memory-hotplug-small-fixes-to-bootmem-freeing-for-memory-hotremove.patch documentation-update-codingstyle-tips-for-emacs-users-v2.patch mm-more-likely-reclaim-madv_sequential-mappings.patch mm-print-swapcache-page-count-in-show_swap_cache_info.patch lib-generic-show_mem.patch alpha-use-generic-show_mem.patch avr32-use-generic-show_mem.patch blackfin-use-generic-show_mem.patch xtensa-use-generic-show_mem.patch x86-use-generic-show_mem.patch um-use-generic-show_mem.patch sparc64-use-generic-show_mem.patch sh-use-generic-show_mem.patch s390-use-generic-show_mem.patch powerpc-use-generic-show_mem.patch mn10300-use-generic-show_mem.patch h8300-use-generic-show_mem.patch mips-use-generic-show_mem.patch m68knommu-use-generic-show_mem.patch m68k-use-generic-show_mem.patch m32r-use-generic-show_mem.patch frv-use-generic-show_mem.patch cris-use-generic-show_mem.patch