tree: git://git.cmpxchg.org/linux-mmotm.git master head: 745388a34645dd2b69f5e7115ad47fea7a218726 commit: cb9cc5caafb2b2ad1db9742432754913d36f9cec [42/152] mm: initialize pages on demand during boot config: x86_64-randconfig-a0-02221139 (attached as .config) compiler: gcc-7 (Debian 7.3.0-1) 7.3.0 reproduce: git checkout cb9cc5caafb2b2ad1db9742432754913d36f9cec # save the attached .config to linux build tree make ARCH=x86_64 Note: the mmotm/master HEAD 745388a34645dd2b69f5e7115ad47fea7a218726 builds fine. It only hurts bisectibility. All errors (new ones prefixed by >>): mm/page_alloc.c: In function 'deferred_grow_zone': >> mm/page_alloc.c:1602:18: error: 'struct zone' has no member named 'node'; did you mean 'name'? int nid = zone->node; ^~~~ name vim +1602 mm/page_alloc.c 1583 1584 /* 1585 * If this zone has deferred pages, try to grow it by initializing enough 1586 * deferred pages to satisfy the allocation specified by order, rounded up to 1587 * the nearest PAGES_PER_SECTION boundary. So we're adding memory in increments 1588 * of SECTION_SIZE bytes by initializing struct pages in increments of 1589 * PAGES_PER_SECTION * sizeof(struct page) bytes. 1590 * 1591 * Return true when zone was grown by at least number of pages specified by 1592 * order. Otherwise return false. 1593 * 1594 * Note: We use noinline because this function is needed only during boot, and 1595 * it is called from a __ref function _deferred_grow_zone. This way we are 1596 * making sure that it is not inlined into permanent text section. 1597 */ 1598 static noinline bool __init 1599 deferred_grow_zone(struct zone *zone, unsigned int order) 1600 { 1601 int zid = zone_idx(zone); > 1602 int nid = zone->node; 1603 pg_data_t *pgdat = NODE_DATA(nid); 1604 unsigned long nr_pages_needed = ALIGN(1 << order, PAGES_PER_SECTION); 1605 unsigned long nr_pages = 0; 1606 unsigned long first_init_pfn, first_deferred_pfn, spfn, epfn, t, flags; 1607 phys_addr_t spa, epa; 1608 u64 i; 1609 1610 /* Only the last zone may have deferred pages */ 1611 if (zone_end_pfn(zone) != pgdat_end_pfn(pgdat)) 1612 return false; 1613 1614 spin_lock_irqsave(&deferred_zone_grow_lock, flags); 1615 /* 1616 * Bail if we raced with another thread that disabled on demand 1617 * initialization. 1618 */ 1619 if (!static_branch_unlikely(&deferred_pages)) { 1620 spin_unlock_irqrestore(&deferred_zone_grow_lock, flags); 1621 return false; 1622 } 1623 1624 first_deferred_pfn = pgdat->first_deferred_pfn; 1625 first_init_pfn = max(zone->zone_start_pfn, first_deferred_pfn); 1626 1627 if (first_init_pfn >= pgdat_end_pfn(pgdat)) { 1628 spin_unlock_irqrestore(&deferred_zone_grow_lock, flags); 1629 return false; 1630 } 1631 1632 for_each_free_mem_range(i, nid, MEMBLOCK_NONE, &spa, &epa, NULL) { 1633 spfn = max_t(unsigned long, first_init_pfn, PFN_UP(spa)); 1634 epfn = min_t(unsigned long, zone_end_pfn(zone), PFN_DOWN(epa)); 1635 1636 while (spfn < epfn && nr_pages < nr_pages_needed) { 1637 t = ALIGN(spfn + PAGES_PER_SECTION, PAGES_PER_SECTION); 1638 first_deferred_pfn = min(t, epfn); 1639 nr_pages += deferred_init_pages(nid, zid, spfn, 1640 first_deferred_pfn); 1641 spfn = first_deferred_pfn; 1642 } 1643 1644 if (nr_pages >= nr_pages_needed) 1645 break; 1646 } 1647 1648 for_each_free_mem_range(i, nid, MEMBLOCK_NONE, &spa, &epa, NULL) { 1649 spfn = max_t(unsigned long, first_init_pfn, PFN_UP(spa)); 1650 epfn = min_t(unsigned long, first_deferred_pfn, PFN_DOWN(epa)); 1651 deferred_free_pages(nid, zid, spfn, epfn); 1652 1653 if (first_deferred_pfn == epfn) 1654 break; 1655 } 1656 pgdat->first_deferred_pfn = first_deferred_pfn; 1657 spin_unlock_irqrestore(&deferred_zone_grow_lock, flags); 1658 1659 return nr_pages >= nr_pages_needed; 1660 } 1661 --- 0-DAY kernel test infrastructure Open Source Technology Center https://lists.01.org/pipermail/kbuild-all Intel Corporation
Attachment:
.config.gz
Description: application/gzip