tree: git://git.kernel.org/pub/scm/linux/kernel/git/tj/cgroup.git review-cgroup-writeback-20150106 head: 393b71c00e25227a020f9dbf8ffdddebac4fdf1e commit: c2b42c0f94035f23cd0524c2cece2f3e05d28255 [63/265] CMA: fix CMA's page number is substructed twice in __zone_watermark_ok config: parisc-c3000_defconfig (attached as .config) reproduce: wget https://git.kernel.org/cgit/linux/kernel/git/wfg/lkp-tests.git/plain/sbin/make.cross -O ~/bin/make.cross chmod +x ~/bin/make.cross git checkout c2b42c0f94035f23cd0524c2cece2f3e05d28255 # save the attached .config to linux build tree make.cross ARCH=parisc All error/warnings: mm/page_alloc.c: In function '__free_one_page': >> mm/page_alloc.c:654:27: error: 'struct free_area' has no member named 'cma_nr_free' zone->free_area[order].cma_nr_free--; ^ >> mm/page_alloc.c:689:25: error: 'struct free_area' has no member named 'cma_nr_free' zone->free_area[order].cma_nr_free++; ^ mm/page_alloc.c: In function 'expand': >> mm/page_alloc.c:945:8: error: 'struct free_area' has no member named 'cma_nr_free' area->cma_nr_free++; ^ mm/page_alloc.c: In function '__rmqueue_smallest': >> mm/page_alloc.c:1030:8: error: 'struct free_area' has no member named 'cma_nr_free' area->cma_nr_free--; ^ mm/page_alloc.c: In function '__rmqueue_fallback': >> mm/page_alloc.c:1220:9: error: 'struct free_area' has no member named 'cma_nr_free' area->cma_nr_free--; ^ mm/page_alloc.c: In function '__isolate_free_page': >> mm/page_alloc.c:1611:25: error: 'struct free_area' has no member named 'cma_nr_free' zone->free_area[order].cma_nr_free--; ^ mm/page_alloc.c: In function '__zone_watermark_ok': >> mm/page_alloc.c:1847:33: error: 'struct free_area' has no member named 'cma_nr_free' free_pages += z->free_area[o].cma_nr_free << o; ^ mm/page_alloc.c: In function 'zone_init_free_lists': >> mm/page_alloc.c:4250:25: error: 'struct free_area' has no member named 'cma_nr_free' zone->free_area[order].cma_nr_free = 0; ^ vim +654 mm/page_alloc.c 648 if (page_is_guard(buddy)) { 649 clear_page_guard(zone, buddy, order, migratetype); 650 } else { 651 list_del(&buddy->lru); 652 zone->free_area[order].nr_free--; 653 if (is_migrate_cma(migratetype)) > 654 zone->free_area[order].cma_nr_free--; 655 rmv_page_order(buddy); 656 } 657 combined_idx = buddy_idx & page_idx; 658 page = page + (combined_idx - page_idx); 659 page_idx = combined_idx; 660 order++; 661 } 662 set_page_order(page, order); 663 664 /* 665 * If this is not the largest possible page, check if the buddy 666 * of the next-highest order is free. If it is, it's possible 667 * that pages are being freed that will coalesce soon. In case, 668 * that is happening, add the free page to the tail of the list 669 * so it's less likely to be used soon and more likely to be merged 670 * as a higher order page 671 */ 672 if ((order < MAX_ORDER-2) && pfn_valid_within(page_to_pfn(buddy))) { 673 struct page *higher_page, *higher_buddy; 674 combined_idx = buddy_idx & page_idx; 675 higher_page = page + (combined_idx - page_idx); 676 buddy_idx = __find_buddy_index(combined_idx, order + 1); 677 higher_buddy = higher_page + (buddy_idx - combined_idx); 678 if (page_is_buddy(higher_page, higher_buddy, order + 1)) { 679 list_add_tail(&page->lru, 680 &zone->free_area[order].free_list[migratetype]); 681 goto out; 682 } 683 } 684 685 list_add(&page->lru, &zone->free_area[order].free_list[migratetype]); 686 out: 687 zone->free_area[order].nr_free++; 688 if (is_migrate_cma(migratetype)) > 689 zone->free_area[order].cma_nr_free++; 690 } 691 692 static inline int free_pages_check(struct page *page) --- 0-DAY kernel test infrastructure Open Source Technology Center http://lists.01.org/mailman/listinfo/kbuild Intel Corporation