Re: [PATCH] mm: Refactor conversion of pages to bytes macro definitions

From: Michal Hocko
Date: Thu Jun 22 2017 - 02:45:08 EST


On Tue 20-06-17 18:14:28, Nikolay Borisov wrote:
> Currently there are a multiple files with the following code:
> #define K(x) ((x) << (PAGE_SHIFT - 10))
> ... some code..
> #undef K
>
> This is mainly used to print out some memory-related statistics, where X is
> given in pages and the macro just converts it to kilobytes. In the future
> there is going to be more macros since there are intention to introduce
> byte-based memory counters [1]. This could lead to proliferation of
> multiple duplicated definition of various macros used to convert a quantity
> from one unit to another. Let's try and consolidate such definition in the
> mm.h header since currently it's being included in all files which exhibit
> this pattern. Also let's rename it to something a bit more verbose.
>
> This patch doesn't introduce any functional changes
>
> [1] https://patchwork.kernel.org/patch/9395205/
>
> Signed-off-by: Nikolay Borisov <nborisov@xxxxxxxx>
> ---
> arch/tile/mm/pgtable.c | 2 --
> drivers/base/node.c | 66 ++++++++++++++++++-------------------
> include/linux/mm.h | 2 ++
> kernel/debug/kdb/kdb_main.c | 3 +-
> mm/backing-dev.c | 22 +++++--------
> mm/memcontrol.c | 17 +++++-----
> mm/oom_kill.c | 19 +++++------
> mm/page_alloc.c | 80 ++++++++++++++++++++++-----------------------
> 8 files changed, 100 insertions(+), 111 deletions(-)

Those macros are quite trivial and we do not really save much code while
this touches a lot of code potentially causing some conflicts. So do we
really need this? I am usually very keen on removing duplication but
this doesn't seem to be worth all the troubles IMHO.

>
> diff --git a/arch/tile/mm/pgtable.c b/arch/tile/mm/pgtable.c
> index 492a7361e58e..f04af570c1c2 100644
> --- a/arch/tile/mm/pgtable.c
> +++ b/arch/tile/mm/pgtable.c
> @@ -34,8 +34,6 @@
> #include <asm/tlbflush.h>
> #include <asm/homecache.h>
>
> -#define K(x) ((x) << (PAGE_SHIFT-10))
> -
> /**
> * shatter_huge_page() - ensure a given address is mapped by a small page.
> *
> diff --git a/drivers/base/node.c b/drivers/base/node.c
> index 5548f9686016..b6f563a3a3a9 100644
> --- a/drivers/base/node.c
> +++ b/drivers/base/node.c
> @@ -50,7 +50,6 @@ static inline ssize_t node_read_cpulist(struct device *dev,
> static DEVICE_ATTR(cpumap, S_IRUGO, node_read_cpumask, NULL);
> static DEVICE_ATTR(cpulist, S_IRUGO, node_read_cpulist, NULL);
>
> -#define K(x) ((x) << (PAGE_SHIFT - 10))
> static ssize_t node_read_meminfo(struct device *dev,
> struct device_attribute *attr, char *buf)
> {
> @@ -72,19 +71,19 @@ static ssize_t node_read_meminfo(struct device *dev,
> "Node %d Inactive(file): %8lu kB\n"
> "Node %d Unevictable: %8lu kB\n"
> "Node %d Mlocked: %8lu kB\n",
> - nid, K(i.totalram),
> - nid, K(i.freeram),
> - nid, K(i.totalram - i.freeram),
> - nid, K(node_page_state(pgdat, NR_ACTIVE_ANON) +
> + nid, PtoK(i.totalram),
> + nid, PtoK(i.freeram),
> + nid, PtoK(i.totalram - i.freeram),
> + nid, PtoK(node_page_state(pgdat, NR_ACTIVE_ANON) +
> node_page_state(pgdat, NR_ACTIVE_FILE)),
> - nid, K(node_page_state(pgdat, NR_INACTIVE_ANON) +
> + nid, PtoK(node_page_state(pgdat, NR_INACTIVE_ANON) +
> node_page_state(pgdat, NR_INACTIVE_FILE)),
> - nid, K(node_page_state(pgdat, NR_ACTIVE_ANON)),
> - nid, K(node_page_state(pgdat, NR_INACTIVE_ANON)),
> - nid, K(node_page_state(pgdat, NR_ACTIVE_FILE)),
> - nid, K(node_page_state(pgdat, NR_INACTIVE_FILE)),
> - nid, K(node_page_state(pgdat, NR_UNEVICTABLE)),
> - nid, K(sum_zone_node_page_state(nid, NR_MLOCK)));
> + nid, PtoK(node_page_state(pgdat, NR_ACTIVE_ANON)),
> + nid, PtoK(node_page_state(pgdat, NR_INACTIVE_ANON)),
> + nid, PtoK(node_page_state(pgdat, NR_ACTIVE_FILE)),
> + nid, PtoK(node_page_state(pgdat, NR_INACTIVE_FILE)),
> + nid, PtoK(node_page_state(pgdat, NR_UNEVICTABLE)),
> + nid, PtoK(sum_zone_node_page_state(nid, NR_MLOCK)));
>
> #ifdef CONFIG_HIGHMEM
> n += sprintf(buf + n,
> @@ -92,10 +91,10 @@ static ssize_t node_read_meminfo(struct device *dev,
> "Node %d HighFree: %8lu kB\n"
> "Node %d LowTotal: %8lu kB\n"
> "Node %d LowFree: %8lu kB\n",
> - nid, K(i.totalhigh),
> - nid, K(i.freehigh),
> - nid, K(i.totalram - i.totalhigh),
> - nid, K(i.freeram - i.freehigh));
> + nid, PtoK(i.totalhigh),
> + nid, PtoK(i.freehigh),
> + nid, PtoK(i.totalram - i.totalhigh),
> + nid, PtoK(i.freeram - i.freehigh));
> #endif
> n += sprintf(buf + n,
> "Node %d Dirty: %8lu kB\n"
> @@ -118,36 +117,35 @@ static ssize_t node_read_meminfo(struct device *dev,
> "Node %d ShmemPmdMapped: %8lu kB\n"
> #endif
> ,
> - nid, K(node_page_state(pgdat, NR_FILE_DIRTY)),
> - nid, K(node_page_state(pgdat, NR_WRITEBACK)),
> - nid, K(node_page_state(pgdat, NR_FILE_PAGES)),
> - nid, K(node_page_state(pgdat, NR_FILE_MAPPED)),
> - nid, K(node_page_state(pgdat, NR_ANON_MAPPED)),
> - nid, K(i.sharedram),
> + nid, PtoK(node_page_state(pgdat, NR_FILE_DIRTY)),
> + nid, PtoK(node_page_state(pgdat, NR_WRITEBACK)),
> + nid, PtoK(node_page_state(pgdat, NR_FILE_PAGES)),
> + nid, PtoK(node_page_state(pgdat, NR_FILE_MAPPED)),
> + nid, PtoK(node_page_state(pgdat, NR_ANON_MAPPED)),
> + nid, PtoK(i.sharedram),
> nid, sum_zone_node_page_state(nid, NR_KERNEL_STACK_KB),
> - nid, K(sum_zone_node_page_state(nid, NR_PAGETABLE)),
> - nid, K(node_page_state(pgdat, NR_UNSTABLE_NFS)),
> - nid, K(sum_zone_node_page_state(nid, NR_BOUNCE)),
> - nid, K(node_page_state(pgdat, NR_WRITEBACK_TEMP)),
> - nid, K(sum_zone_node_page_state(nid, NR_SLAB_RECLAIMABLE) +
> + nid, PtoK(sum_zone_node_page_state(nid, NR_PAGETABLE)),
> + nid, PtoK(node_page_state(pgdat, NR_UNSTABLE_NFS)),
> + nid, PtoK(sum_zone_node_page_state(nid, NR_BOUNCE)),
> + nid, PtoK(node_page_state(pgdat, NR_WRITEBACK_TEMP)),
> + nid, PtoK(sum_zone_node_page_state(nid, NR_SLAB_RECLAIMABLE) +
> sum_zone_node_page_state(nid, NR_SLAB_UNRECLAIMABLE)),
> - nid, K(sum_zone_node_page_state(nid, NR_SLAB_RECLAIMABLE)),
> + nid, PtoK(sum_zone_node_page_state(nid, NR_SLAB_RECLAIMABLE)),
> #ifdef CONFIG_TRANSPARENT_HUGEPAGE
> - nid, K(sum_zone_node_page_state(nid, NR_SLAB_UNRECLAIMABLE)),
> - nid, K(node_page_state(pgdat, NR_ANON_THPS) *
> + nid, PtoK(sum_zone_node_page_state(nid, NR_SLAB_UNRECLAIMABLE)),
> + nid, PtoK(node_page_state(pgdat, NR_ANON_THPS) *
> HPAGE_PMD_NR),
> - nid, K(node_page_state(pgdat, NR_SHMEM_THPS) *
> + nid, PtoK(node_page_state(pgdat, NR_SHMEM_THPS) *
> HPAGE_PMD_NR),
> - nid, K(node_page_state(pgdat, NR_SHMEM_PMDMAPPED) *
> + nid, PtoK(node_page_state(pgdat, NR_SHMEM_PMDMAPPED) *
> HPAGE_PMD_NR));
> #else
> - nid, K(sum_zone_node_page_state(nid, NR_SLAB_UNRECLAIMABLE)));
> + nid, PtoK(sum_zone_node_page_state(nid, NR_SLAB_UNRECLAIMABLE)));
> #endif
> n += hugetlb_report_node_meminfo(nid, buf + n);
> return n;
> }
>
> -#undef K
> static DEVICE_ATTR(meminfo, S_IRUGO, node_read_meminfo, NULL);
>
> static ssize_t node_read_numastat(struct device *dev,
> diff --git a/include/linux/mm.h b/include/linux/mm.h
> index 6f543a47fc92..d8d80e2e9194 100644
> --- a/include/linux/mm.h
> +++ b/include/linux/mm.h
> @@ -93,6 +93,8 @@ extern int mmap_rnd_compat_bits __read_mostly;
> #define mm_forbids_zeropage(X) (0)
> #endif
>
> +#define PtoK(pages) ((pages) << (PAGE_SHIFT-10))
> +
> /*
> * Default maximum number of active map areas, this limits the number of vmas
> * per mm struct. Users can overwrite this number by sysctl but there is a
> diff --git a/kernel/debug/kdb/kdb_main.c b/kernel/debug/kdb/kdb_main.c
> index c8146d53ca67..e833cb02d2c8 100644
> --- a/kernel/debug/kdb/kdb_main.c
> +++ b/kernel/debug/kdb/kdb_main.c
> @@ -2582,10 +2582,9 @@ static int kdb_summary(int argc, const char **argv)
> #undef LOAD_INT
> #undef LOAD_FRAC
> /* Display in kilobytes */
> -#define K(x) ((x) << (PAGE_SHIFT - 10))
> kdb_printf("\nMemTotal: %8lu kB\nMemFree: %8lu kB\n"
> "Buffers: %8lu kB\n",
> - K(val.totalram), K(val.freeram), K(val.bufferram));
> + PtoK(val.totalram), PtoK(val.freeram), PtoK(val.bufferram));
> return 0;
> }
>
> diff --git a/mm/backing-dev.c b/mm/backing-dev.c
> index f028a9a472fd..0c09dd103109 100644
> --- a/mm/backing-dev.c
> +++ b/mm/backing-dev.c
> @@ -67,7 +67,6 @@ static int bdi_debug_stats_show(struct seq_file *m, void *v)
> global_dirty_limits(&background_thresh, &dirty_thresh);
> wb_thresh = wb_calc_thresh(wb, dirty_thresh);
>
> -#define K(x) ((x) << (PAGE_SHIFT - 10))
> seq_printf(m,
> "BdiWriteback: %10lu kB\n"
> "BdiReclaimable: %10lu kB\n"
> @@ -83,20 +82,19 @@ static int bdi_debug_stats_show(struct seq_file *m, void *v)
> "b_dirty_time: %10lu\n"
> "bdi_list: %10u\n"
> "state: %10lx\n",
> - (unsigned long) K(wb_stat(wb, WB_WRITEBACK)),
> - (unsigned long) K(wb_stat(wb, WB_RECLAIMABLE)),
> - K(wb_thresh),
> - K(dirty_thresh),
> - K(background_thresh),
> - (unsigned long) K(wb_stat(wb, WB_DIRTIED)),
> - (unsigned long) K(wb_stat(wb, WB_WRITTEN)),
> - (unsigned long) K(wb->write_bandwidth),
> + (unsigned long) PtoK(wb_stat(wb, WB_WRITEBACK)),
> + (unsigned long) PtoK(wb_stat(wb, WB_RECLAIMABLE)),
> + PtoK(wb_thresh),
> + PtoK(dirty_thresh),
> + PtoK(background_thresh),
> + (unsigned long) PtoK(wb_stat(wb, WB_DIRTIED)),
> + (unsigned long) PtoK(wb_stat(wb, WB_WRITTEN)),
> + (unsigned long) PtoK(wb->write_bandwidth),
> nr_dirty,
> nr_io,
> nr_more_io,
> nr_dirty_time,
> !list_empty(&bdi->bdi_list), bdi->wb.state);
> -#undef K
>
> return 0;
> }
> @@ -155,8 +153,6 @@ static ssize_t read_ahead_kb_store(struct device *dev,
> return count;
> }
>
> -#define K(pages) ((pages) << (PAGE_SHIFT - 10))
> -
> #define BDI_SHOW(name, expr) \
> static ssize_t name##_show(struct device *dev, \
> struct device_attribute *attr, char *page) \
> @@ -167,7 +163,7 @@ static ssize_t name##_show(struct device *dev, \
> } \
> static DEVICE_ATTR_RW(name);
>
> -BDI_SHOW(read_ahead_kb, K(bdi->ra_pages))
> +BDI_SHOW(read_ahead_kb, PtoK(bdi->ra_pages))
>
> static ssize_t min_ratio_store(struct device *dev,
> struct device_attribute *attr, const char *buf, size_t count)
> diff --git a/mm/memcontrol.c b/mm/memcontrol.c
> index 94172089f52f..f0f1f4dbe816 100644
> --- a/mm/memcontrol.c
> +++ b/mm/memcontrol.c
> @@ -1132,7 +1132,6 @@ static const char *const memcg1_stat_names[] = {
> "swap",
> };
>
> -#define K(x) ((x) << (PAGE_SHIFT-10))
> /**
> * mem_cgroup_print_oom_info: Print OOM information relevant to memory controller.
> * @memcg: The memory cgroup that went over limit
> @@ -1162,14 +1161,14 @@ void mem_cgroup_print_oom_info(struct mem_cgroup *memcg, struct task_struct *p)
> rcu_read_unlock();
>
> pr_info("memory: usage %llukB, limit %llukB, failcnt %lu\n",
> - K((u64)page_counter_read(&memcg->memory)),
> - K((u64)memcg->memory.limit), memcg->memory.failcnt);
> + PtoK((u64)page_counter_read(&memcg->memory)),
> + PtoK((u64)memcg->memory.limit), memcg->memory.failcnt);
> pr_info("memory+swap: usage %llukB, limit %llukB, failcnt %lu\n",
> - K((u64)page_counter_read(&memcg->memsw)),
> - K((u64)memcg->memsw.limit), memcg->memsw.failcnt);
> + PtoK((u64)page_counter_read(&memcg->memsw)),
> + PtoK((u64)memcg->memsw.limit), memcg->memsw.failcnt);
> pr_info("kmem: usage %llukB, limit %llukB, failcnt %lu\n",
> - K((u64)page_counter_read(&memcg->kmem)),
> - K((u64)memcg->kmem.limit), memcg->kmem.failcnt);
> + PtoK((u64)page_counter_read(&memcg->kmem)),
> + PtoK((u64)memcg->kmem.limit), memcg->kmem.failcnt);
>
> for_each_mem_cgroup_tree(iter, memcg) {
> pr_info("Memory cgroup stats for ");
> @@ -1180,12 +1179,12 @@ void mem_cgroup_print_oom_info(struct mem_cgroup *memcg, struct task_struct *p)
> if (memcg1_stats[i] == MEMCG_SWAP && !do_swap_account)
> continue;
> pr_cont(" %s:%luKB", memcg1_stat_names[i],
> - K(memcg_page_state(iter, memcg1_stats[i])));
> + PtoK(memcg_page_state(iter, memcg1_stats[i])));
> }
>
> for (i = 0; i < NR_LRU_LISTS; i++)
> pr_cont(" %s:%luKB", mem_cgroup_lru_names[i],
> - K(mem_cgroup_nr_lru_pages(iter, BIT(i))));
> + PtoK(mem_cgroup_nr_lru_pages(iter, BIT(i))));
>
> pr_cont("\n");
> }
> diff --git a/mm/oom_kill.c b/mm/oom_kill.c
> index 04c9143a8625..d83801347c96 100644
> --- a/mm/oom_kill.c
> +++ b/mm/oom_kill.c
> @@ -1,6 +1,6 @@
> /*
> * linux/mm/oom_kill.c
> - *
> + *
> * Copyright (C) 1998,2000 Rik van Riel
> * Thanks go out to Claus Fischer for some serious inspiration and
> * for goading me into coding this file...
> @@ -435,8 +435,6 @@ static DECLARE_WAIT_QUEUE_HEAD(oom_victims_wait);
>
> static bool oom_killer_disabled __read_mostly;
>
> -#define K(x) ((x) << (PAGE_SHIFT-10))
> -
> /*
> * task->mm can be NULL if the task is the exited group leader. So to
> * determine whether the task is using a particular mm, we examine all the
> @@ -533,9 +531,9 @@ static bool __oom_reap_task_mm(struct task_struct *tsk, struct mm_struct *mm)
> tlb_finish_mmu(&tlb, 0, -1);
> pr_info("oom_reaper: reaped process %d (%s), now anon-rss:%lukB, file-rss:%lukB, shmem-rss:%lukB\n",
> task_pid_nr(tsk), tsk->comm,
> - K(get_mm_counter(mm, MM_ANONPAGES)),
> - K(get_mm_counter(mm, MM_FILEPAGES)),
> - K(get_mm_counter(mm, MM_SHMEMPAGES)));
> + PtoK(get_mm_counter(mm, MM_ANONPAGES)),
> + PtoK(get_mm_counter(mm, MM_FILEPAGES)),
> + PtoK(get_mm_counter(mm, MM_SHMEMPAGES)));
> up_read(&mm->mmap_sem);
>
> /*
> @@ -884,10 +882,10 @@ static void oom_kill_process(struct oom_control *oc, const char *message)
> do_send_sig_info(SIGKILL, SEND_SIG_FORCED, victim, true);
> mark_oom_victim(victim);
> pr_err("Killed process %d (%s) total-vm:%lukB, anon-rss:%lukB, file-rss:%lukB, shmem-rss:%lukB\n",
> - task_pid_nr(victim), victim->comm, K(victim->mm->total_vm),
> - K(get_mm_counter(victim->mm, MM_ANONPAGES)),
> - K(get_mm_counter(victim->mm, MM_FILEPAGES)),
> - K(get_mm_counter(victim->mm, MM_SHMEMPAGES)));
> + task_pid_nr(victim), victim->comm, PtoK(victim->mm->total_vm),
> + PtoK(get_mm_counter(victim->mm, MM_ANONPAGES)),
> + PtoK(get_mm_counter(victim->mm, MM_FILEPAGES)),
> + PtoK(get_mm_counter(victim->mm, MM_SHMEMPAGES)));
> task_unlock(victim);
>
> /*
> @@ -929,7 +927,6 @@ static void oom_kill_process(struct oom_control *oc, const char *message)
> mmdrop(mm);
> put_task_struct(victim);
> }
> -#undef K
>
> /*
> * Determines whether the kernel must panic because of the panic_on_oom sysctl.
> diff --git a/mm/page_alloc.c b/mm/page_alloc.c
> index 2302f250d6b1..5785a2f8d7db 100644
> --- a/mm/page_alloc.c
> +++ b/mm/page_alloc.c
> @@ -4460,8 +4460,6 @@ static bool show_mem_node_skip(unsigned int flags, int nid, nodemask_t *nodemask
> return !node_isset(nid, *nodemask);
> }
>
> -#define K(x) ((x) << (PAGE_SHIFT-10))
> -
> static void show_migration_types(unsigned char type)
> {
> static const char types[MIGRATE_TYPES] = {
> @@ -4565,25 +4563,27 @@ void show_free_areas(unsigned int filter, nodemask_t *nodemask)
> " all_unreclaimable? %s"
> "\n",
> pgdat->node_id,
> - K(node_page_state(pgdat, NR_ACTIVE_ANON)),
> - K(node_page_state(pgdat, NR_INACTIVE_ANON)),
> - K(node_page_state(pgdat, NR_ACTIVE_FILE)),
> - K(node_page_state(pgdat, NR_INACTIVE_FILE)),
> - K(node_page_state(pgdat, NR_UNEVICTABLE)),
> - K(node_page_state(pgdat, NR_ISOLATED_ANON)),
> - K(node_page_state(pgdat, NR_ISOLATED_FILE)),
> - K(node_page_state(pgdat, NR_FILE_MAPPED)),
> - K(node_page_state(pgdat, NR_FILE_DIRTY)),
> - K(node_page_state(pgdat, NR_WRITEBACK)),
> - K(node_page_state(pgdat, NR_SHMEM)),
> + PtoK(node_page_state(pgdat, NR_ACTIVE_ANON)),
> + PtoK(node_page_state(pgdat, NR_INACTIVE_ANON)),
> + PtoK(node_page_state(pgdat, NR_ACTIVE_FILE)),
> + PtoK(node_page_state(pgdat, NR_INACTIVE_FILE)),
> + PtoK(node_page_state(pgdat, NR_UNEVICTABLE)),
> + PtoK(node_page_state(pgdat, NR_ISOLATED_ANON)),
> + PtoK(node_page_state(pgdat, NR_ISOLATED_FILE)),
> + PtoK(node_page_state(pgdat, NR_FILE_MAPPED)),
> + PtoK(node_page_state(pgdat, NR_FILE_DIRTY)),
> + PtoK(node_page_state(pgdat, NR_WRITEBACK)),
> + PtoK(node_page_state(pgdat, NR_SHMEM)),
> #ifdef CONFIG_TRANSPARENT_HUGEPAGE
> - K(node_page_state(pgdat, NR_SHMEM_THPS) * HPAGE_PMD_NR),
> - K(node_page_state(pgdat, NR_SHMEM_PMDMAPPED)
> + PtoK(node_page_state(pgdat, NR_SHMEM_THPS) *
> + HPAGE_PMD_NR),
> + PtoK(node_page_state(pgdat, NR_SHMEM_PMDMAPPED)
> * HPAGE_PMD_NR),
> - K(node_page_state(pgdat, NR_ANON_THPS) * HPAGE_PMD_NR),
> + PtoK(node_page_state(pgdat, NR_ANON_THPS) *
> + HPAGE_PMD_NR),
> #endif
> - K(node_page_state(pgdat, NR_WRITEBACK_TEMP)),
> - K(node_page_state(pgdat, NR_UNSTABLE_NFS)),
> + PtoK(node_page_state(pgdat, NR_WRITEBACK_TEMP)),
> + PtoK(node_page_state(pgdat, NR_UNSTABLE_NFS)),
> pgdat->kswapd_failures >= MAX_RECLAIM_RETRIES ?
> "yes" : "no");
> }
> @@ -4624,27 +4624,27 @@ void show_free_areas(unsigned int filter, nodemask_t *nodemask)
> " free_cma:%lukB"
> "\n",
> zone->name,
> - K(zone_page_state(zone, NR_FREE_PAGES)),
> - K(min_wmark_pages(zone)),
> - K(low_wmark_pages(zone)),
> - K(high_wmark_pages(zone)),
> - K(zone_page_state(zone, NR_ZONE_ACTIVE_ANON)),
> - K(zone_page_state(zone, NR_ZONE_INACTIVE_ANON)),
> - K(zone_page_state(zone, NR_ZONE_ACTIVE_FILE)),
> - K(zone_page_state(zone, NR_ZONE_INACTIVE_FILE)),
> - K(zone_page_state(zone, NR_ZONE_UNEVICTABLE)),
> - K(zone_page_state(zone, NR_ZONE_WRITE_PENDING)),
> - K(zone->present_pages),
> - K(zone->managed_pages),
> - K(zone_page_state(zone, NR_MLOCK)),
> - K(zone_page_state(zone, NR_SLAB_RECLAIMABLE)),
> - K(zone_page_state(zone, NR_SLAB_UNRECLAIMABLE)),
> + PtoK(zone_page_state(zone, NR_FREE_PAGES)),
> + PtoK(min_wmark_pages(zone)),
> + PtoK(low_wmark_pages(zone)),
> + PtoK(high_wmark_pages(zone)),
> + PtoK(zone_page_state(zone, NR_ZONE_ACTIVE_ANON)),
> + PtoK(zone_page_state(zone, NR_ZONE_INACTIVE_ANON)),
> + PtoK(zone_page_state(zone, NR_ZONE_ACTIVE_FILE)),
> + PtoK(zone_page_state(zone, NR_ZONE_INACTIVE_FILE)),
> + PtoK(zone_page_state(zone, NR_ZONE_UNEVICTABLE)),
> + PtoK(zone_page_state(zone, NR_ZONE_WRITE_PENDING)),
> + PtoK(zone->present_pages),
> + PtoK(zone->managed_pages),
> + PtoK(zone_page_state(zone, NR_MLOCK)),
> + PtoK(zone_page_state(zone, NR_SLAB_RECLAIMABLE)),
> + PtoK(zone_page_state(zone, NR_SLAB_UNRECLAIMABLE)),
> zone_page_state(zone, NR_KERNEL_STACK_KB),
> - K(zone_page_state(zone, NR_PAGETABLE)),
> - K(zone_page_state(zone, NR_BOUNCE)),
> - K(free_pcp),
> - K(this_cpu_read(zone->pageset->pcp.count)),
> - K(zone_page_state(zone, NR_FREE_CMA_PAGES)));
> + PtoK(zone_page_state(zone, NR_PAGETABLE)),
> + PtoK(zone_page_state(zone, NR_BOUNCE)),
> + PtoK(free_pcp),
> + PtoK(this_cpu_read(zone->pageset->pcp.count)),
> + PtoK(zone_page_state(zone, NR_FREE_CMA_PAGES)));
> printk("lowmem_reserve[]:");
> for (i = 0; i < MAX_NR_ZONES; i++)
> printk(KERN_CONT " %ld", zone->lowmem_reserve[i]);
> @@ -4678,11 +4678,11 @@ void show_free_areas(unsigned int filter, nodemask_t *nodemask)
> spin_unlock_irqrestore(&zone->lock, flags);
> for (order = 0; order < MAX_ORDER; order++) {
> printk(KERN_CONT "%lu*%lukB ",
> - nr[order], K(1UL) << order);
> + nr[order], PtoK(1UL) << order);
> if (nr[order])
> show_migration_types(types[order]);
> }
> - printk(KERN_CONT "= %lukB\n", K(total));
> + printk(KERN_CONT "= %lukB\n", PtoK(total));
> }
>
> hugetlb_show_meminfo();
> --
> 2.7.4

--
Michal Hocko
SUSE Labs