Line data Source code
1 : // SPDX-License-Identifier: GPL-2.0-only 2 : /* 3 : * Generic show_mem() implementation 4 : * 5 : * Copyright (C) 2008 Johannes Weiner <hannes@saeurebad.de> 6 : */ 7 : 8 : #include <linux/mm.h> 9 : #include <linux/cma.h> 10 : 11 0 : void __show_mem(unsigned int filter, nodemask_t *nodemask, int max_zone_idx) 12 : { 13 : pg_data_t *pgdat; 14 0 : unsigned long total = 0, reserved = 0, highmem = 0; 15 : 16 0 : printk("Mem-Info:\n"); 17 0 : __show_free_areas(filter, nodemask, max_zone_idx); 18 : 19 0 : for_each_online_pgdat(pgdat) { 20 : int zoneid; 21 : 22 0 : for (zoneid = 0; zoneid < MAX_NR_ZONES; zoneid++) { 23 0 : struct zone *zone = &pgdat->node_zones[zoneid]; 24 0 : if (!populated_zone(zone)) 25 0 : continue; 26 : 27 0 : total += zone->present_pages; 28 0 : reserved += zone->present_pages - zone_managed_pages(zone); 29 : 30 0 : if (is_highmem_idx(zoneid)) 31 : highmem += zone->present_pages; 32 : } 33 : } 34 : 35 0 : printk("%lu pages RAM\n", total); 36 0 : printk("%lu pages HighMem/MovableOnly\n", highmem); 37 0 : printk("%lu pages reserved\n", reserved); 38 : #ifdef CONFIG_CMA 39 : printk("%lu pages cma reserved\n", totalcma_pages); 40 : #endif 41 : #ifdef CONFIG_MEMORY_FAILURE 42 : printk("%lu pages hwpoisoned\n", atomic_long_read(&num_poisoned_pages)); 43 : #endif 44 0 : }