page_alloc.c (756a025f00091918d9d09ca3229defb160b409c0) | page_alloc.c (1170532bb49f9468aedabdc1d5a560e2521a2bcc) |
---|---|
1/* 2 * linux/mm/page_alloc.c 3 * 4 * Manages the free list, the system allocates free pages here. 5 * Note that kmalloc() lives in slab.c 6 * 7 * Copyright (C) 1991, 1992, 1993, 1994 Linus Torvalds 8 * Swap reorganised 29.12.95, Stephen Tweedie --- 530 unchanged lines hidden (view full) --- 539 .init = init_debug_guardpage, 540}; 541 542static int __init debug_guardpage_minorder_setup(char *buf) 543{ 544 unsigned long res; 545 546 if (kstrtoul(buf, 10, &res) < 0 || res > MAX_ORDER / 2) { | 1/* 2 * linux/mm/page_alloc.c 3 * 4 * Manages the free list, the system allocates free pages here. 5 * Note that kmalloc() lives in slab.c 6 * 7 * Copyright (C) 1991, 1992, 1993, 1994 Linus Torvalds 8 * Swap reorganised 29.12.95, Stephen Tweedie --- 530 unchanged lines hidden (view full) --- 539 .init = init_debug_guardpage, 540}; 541 542static int __init debug_guardpage_minorder_setup(char *buf) 543{ 544 unsigned long res; 545 546 if (kstrtoul(buf, 10, &res) < 0 || res > MAX_ORDER / 2) { |
547 printk(KERN_ERR "Bad debug_guardpage_minorder value\n"); | 547 pr_err("Bad debug_guardpage_minorder value\n"); |
548 return 0; 549 } 550 _debug_guardpage_minorder = res; | 548 return 0; 549 } 550 _debug_guardpage_minorder = res; |
551 printk(KERN_INFO "Setting debug_guardpage_minorder to %lu\n", res); | 551 pr_info("Setting debug_guardpage_minorder to %lu\n", res); |
552 return 0; 553} 554__setup("debug_guardpage_minorder=", debug_guardpage_minorder_setup); 555 556static inline void set_page_guard(struct zone *zone, struct page *page, 557 unsigned int order, int migratetype) 558{ 559 struct page_ext *page_ext; --- 3508 unchanged lines hidden (view full) --- 4068{ 4069 if (*s == 'd' || *s == 'D') { 4070 user_zonelist_order = ZONELIST_ORDER_DEFAULT; 4071 } else if (*s == 'n' || *s == 'N') { 4072 user_zonelist_order = ZONELIST_ORDER_NODE; 4073 } else if (*s == 'z' || *s == 'Z') { 4074 user_zonelist_order = ZONELIST_ORDER_ZONE; 4075 } else { | 552 return 0; 553} 554__setup("debug_guardpage_minorder=", debug_guardpage_minorder_setup); 555 556static inline void set_page_guard(struct zone *zone, struct page *page, 557 unsigned int order, int migratetype) 558{ 559 struct page_ext *page_ext; --- 3508 unchanged lines hidden (view full) --- 4068{ 4069 if (*s == 'd' || *s == 'D') { 4070 user_zonelist_order = ZONELIST_ORDER_DEFAULT; 4071 } else if (*s == 'n' || *s == 'N') { 4072 user_zonelist_order = ZONELIST_ORDER_NODE; 4073 } else if (*s == 'z' || *s == 'Z') { 4074 user_zonelist_order = ZONELIST_ORDER_ZONE; 4075 } else { |
4076 printk(KERN_WARNING 4077 "Ignoring invalid numa_zonelist_order value: %s\n", s); | 4076 pr_warn("Ignoring invalid numa_zonelist_order value: %s\n", s); |
4078 return -EINVAL; 4079 } 4080 return 0; 4081} 4082 4083static __init int setup_numa_zonelist_order(char *s) 4084{ 4085 int ret; --- 1367 unchanged lines hidden (view full) --- 5453 if (!is_highmem_idx(j)) { 5454 if (freesize >= memmap_pages) { 5455 freesize -= memmap_pages; 5456 if (memmap_pages) 5457 printk(KERN_DEBUG 5458 " %s zone: %lu pages used for memmap\n", 5459 zone_names[j], memmap_pages); 5460 } else | 4077 return -EINVAL; 4078 } 4079 return 0; 4080} 4081 4082static __init int setup_numa_zonelist_order(char *s) 4083{ 4084 int ret; --- 1367 unchanged lines hidden (view full) --- 5452 if (!is_highmem_idx(j)) { 5453 if (freesize >= memmap_pages) { 5454 freesize -= memmap_pages; 5455 if (memmap_pages) 5456 printk(KERN_DEBUG 5457 " %s zone: %lu pages used for memmap\n", 5458 zone_names[j], memmap_pages); 5459 } else |
5461 printk(KERN_WARNING 5462 " %s zone: %lu pages exceeds freesize %lu\n", | 5460 pr_warn(" %s zone: %lu pages exceeds freesize %lu\n", |
5463 zone_names[j], memmap_pages, freesize); 5464 } 5465 5466 /* Account for reserved pages */ 5467 if (j == 0 && freesize > dma_reserve) { 5468 freesize -= dma_reserve; 5469 printk(KERN_DEBUG " %s zone: %lu pages reserved\n", 5470 zone_names[0], dma_reserve); --- 191 unchanged lines hidden (view full) --- 5662 unsigned long min_pfn = ULONG_MAX; 5663 unsigned long start_pfn; 5664 int i; 5665 5666 for_each_mem_pfn_range(i, nid, &start_pfn, NULL, NULL) 5667 min_pfn = min(min_pfn, start_pfn); 5668 5669 if (min_pfn == ULONG_MAX) { | 5461 zone_names[j], memmap_pages, freesize); 5462 } 5463 5464 /* Account for reserved pages */ 5465 if (j == 0 && freesize > dma_reserve) { 5466 freesize -= dma_reserve; 5467 printk(KERN_DEBUG " %s zone: %lu pages reserved\n", 5468 zone_names[0], dma_reserve); --- 191 unchanged lines hidden (view full) --- 5660 unsigned long min_pfn = ULONG_MAX; 5661 unsigned long start_pfn; 5662 int i; 5663 5664 for_each_mem_pfn_range(i, nid, &start_pfn, NULL, NULL) 5665 min_pfn = min(min_pfn, start_pfn); 5666 5667 if (min_pfn == ULONG_MAX) { |
5670 printk(KERN_WARNING 5671 "Could not find start_pfn for node %d\n", nid); | 5668 pr_warn("Could not find start_pfn for node %d\n", nid); |
5672 return 0; 5673 } 5674 5675 return min_pfn; 5676} 5677 5678/** 5679 * find_min_pfn_with_active_regions - Find the minimum PFN registered --- 1001 unchanged lines hidden (view full) --- 6681 kmemleak_alloc(table, size, 1, GFP_ATOMIC); 6682 } 6683 } 6684 } while (!table && size > PAGE_SIZE && --log2qty); 6685 6686 if (!table) 6687 panic("Failed to allocate %s hash table\n", tablename); 6688 | 5669 return 0; 5670 } 5671 5672 return min_pfn; 5673} 5674 5675/** 5676 * find_min_pfn_with_active_regions - Find the minimum PFN registered --- 1001 unchanged lines hidden (view full) --- 6678 kmemleak_alloc(table, size, 1, GFP_ATOMIC); 6679 } 6680 } 6681 } while (!table && size > PAGE_SIZE && --log2qty); 6682 6683 if (!table) 6684 panic("Failed to allocate %s hash table\n", tablename); 6685 |
6689 printk(KERN_INFO "%s hash table entries: %ld (order: %d, %lu bytes)\n", 6690 tablename, 6691 (1UL << log2qty), 6692 ilog2(size) - PAGE_SHIFT, 6693 size); | 6686 pr_info("%s hash table entries: %ld (order: %d, %lu bytes)\n", 6687 tablename, 1UL << log2qty, ilog2(size) - PAGE_SHIFT, size); |
6694 6695 if (_hash_shift) 6696 *_hash_shift = log2qty; 6697 if (_hash_mask) 6698 *_hash_mask = (1 << log2qty) - 1; 6699 6700 return table; 6701} --- 484 unchanged lines hidden (view full) --- 7186 SetPageReserved(page); 7187 continue; 7188 } 7189 7190 BUG_ON(page_count(page)); 7191 BUG_ON(!PageBuddy(page)); 7192 order = page_order(page); 7193#ifdef CONFIG_DEBUG_VM | 6688 6689 if (_hash_shift) 6690 *_hash_shift = log2qty; 6691 if (_hash_mask) 6692 *_hash_mask = (1 << log2qty) - 1; 6693 6694 return table; 6695} --- 484 unchanged lines hidden (view full) --- 7180 SetPageReserved(page); 7181 continue; 7182 } 7183 7184 BUG_ON(page_count(page)); 7185 BUG_ON(!PageBuddy(page)); 7186 order = page_order(page); 7187#ifdef CONFIG_DEBUG_VM |
7194 printk(KERN_INFO "remove from free list %lx %d %lx\n", 7195 pfn, 1 << order, end_pfn); | 7188 pr_info("remove from free list %lx %d %lx\n", 7189 pfn, 1 << order, end_pfn); |
7196#endif 7197 list_del(&page->lru); 7198 rmv_page_order(page); 7199 zone->free_area[order].nr_free--; 7200 for (i = 0; i < (1 << order); i++) 7201 SetPageReserved((page+i)); 7202 pfn += (1 << order); 7203 } --- 22 unchanged lines hidden --- | 7190#endif 7191 list_del(&page->lru); 7192 rmv_page_order(page); 7193 zone->free_area[order].nr_free--; 7194 for (i = 0; i < (1 << order); i++) 7195 SetPageReserved((page+i)); 7196 pfn += (1 << order); 7197 } --- 22 unchanged lines hidden --- |