fs/proc/meminfo.c: include cma info in proc/meminfo
authorPintu Kumar <[email protected]>
Fri, 19 Dec 2014 00:17:18 +0000 (16:17 -0800)
committerLinus Torvalds <[email protected]>
Fri, 19 Dec 2014 03:08:10 +0000 (19:08 -0800)
This patch include CMA info (CMATotal, CMAFree) in /proc/meminfo.
Currently, in a CMA enabled system, if somebody wants to know the total
CMA size declared, there is no way to tell, other than the dmesg or
/var/log/messages logs.

With this patch we are showing the CMA info as part of meminfo, so that it
can be determined at any point of time.  This will be populated only when
CMA is enabled.

Below is the sample output from a ARM based device with RAM:512MB and CMA:16MB.

  MemTotal:         471172 kB
  MemFree:          111712 kB
  MemAvailable:     271172 kB
  .
  .
  .
  CmaTotal:          16384 kB
  CmaFree:            6144 kB

This patch also fix below checkpatch errors that were found during these changes.

  ERROR: space required after that ',' (ctx:ExV)
  199: FILE: fs/proc/meminfo.c:199:
  +       ,atomic_long_read(&num_poisoned_pages) << (PAGE_SHIFT - 10)
          ^

  ERROR: space required after that ',' (ctx:ExV)
  202: FILE: fs/proc/meminfo.c:202:
  +       ,K(global_page_state(NR_ANON_TRANSPARENT_HUGEPAGES) *
          ^

  ERROR: space required after that ',' (ctx:ExV)
  206: FILE: fs/proc/meminfo.c:206:
  +       ,K(totalcma_pages)
          ^

  total: 3 errors, 0 warnings, 2 checks, 236 lines checked

Signed-off-by: Pintu Kumar <[email protected]>
Signed-off-by: Vishnu Pratap Singh <[email protected]>
Acked-by: Michal Nazarewicz <[email protected]>
Cc: Rafael Aquini <[email protected]>
Cc: Jerome Marchand <[email protected]>
Cc: Marek Szyprowski <[email protected]>
Cc: Joonsoo Kim <[email protected]>
Signed-off-by: Andrew Morton <[email protected]>
Signed-off-by: Linus Torvalds <[email protected]>
fs/proc/meminfo.c

index aa1eee06420f677b9f5a3594dd66b19567e46295..d3ebf2e618535bd2fa7daa0bfe948cb1a9bfc062 100644 (file)
@@ -12,6 +12,9 @@
 #include <linux/vmstat.h>
 #include <linux/atomic.h>
 #include <linux/vmalloc.h>
+#ifdef CONFIG_CMA
+#include <linux/cma.h>
+#endif
 #include <asm/page.h>
 #include <asm/pgtable.h>
 #include "internal.h"
@@ -137,6 +140,10 @@ static int meminfo_proc_show(struct seq_file *m, void *v)
 #endif
 #ifdef CONFIG_TRANSPARENT_HUGEPAGE
                "AnonHugePages:  %8lu kB\n"
+#endif
+#ifdef CONFIG_CMA
+               "CmaTotal:       %8lu kB\n"
+               "CmaFree:        %8lu kB\n"
 #endif
                ,
                K(i.totalram),
@@ -187,11 +194,15 @@ static int meminfo_proc_show(struct seq_file *m, void *v)
                vmi.used >> 10,
                vmi.largest_chunk >> 10
 #ifdef CONFIG_MEMORY_FAILURE
-               ,atomic_long_read(&num_poisoned_pages) << (PAGE_SHIFT - 10)
+               , atomic_long_read(&num_poisoned_pages) << (PAGE_SHIFT - 10)
 #endif
 #ifdef CONFIG_TRANSPARENT_HUGEPAGE
-               ,K(global_page_state(NR_ANON_TRANSPARENT_HUGEPAGES) *
+               , K(global_page_state(NR_ANON_TRANSPARENT_HUGEPAGES) *
                   HPAGE_PMD_NR)
+#endif
+#ifdef CONFIG_CMA
+               , K(totalcma_pages)
+               , K(global_page_state(NR_FREE_CMA_PAGES))
 #endif
                );