[linux-next:master 4160/4460] mm/page_alloc.c:1304:3: error: implicit declaration of function 'set_zone_contiguous'

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



tree:   https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git master
head:   b613c2bfa3e843fdeff95878edc7326b763abd1b
commit: eddd1b1e54e09775f155bf6c8239e7167205606e [4160/4460] mm/compaction: speed up pageblock_pfn_to_page() when zone is contiguous
config: i386-tinyconfig (attached as .config)
reproduce:
        git checkout eddd1b1e54e09775f155bf6c8239e7167205606e
        # save the attached .config to linux build tree
        make ARCH=i386 

Note: the linux-next/master HEAD b613c2bfa3e843fdeff95878edc7326b763abd1b builds fine.
      It may have been fixed somewhere.

All error/warnings (new ones prefixed by >>):

   mm/page_alloc.c: In function 'page_alloc_init_late':
>> mm/page_alloc.c:1304:3: error: implicit declaration of function 'set_zone_contiguous' [-Werror=implicit-function-declaration]
      set_zone_contiguous(zone);
      ^
   mm/page_alloc.c: At top level:
>> mm/page_alloc.c:1350:6: warning: conflicting types for 'set_zone_contiguous'
    void set_zone_contiguous(struct zone *zone)
         ^
   mm/page_alloc.c:1304:3: note: previous implicit declaration of 'set_zone_contiguous' was here
      set_zone_contiguous(zone);
      ^
   mm/page_alloc.c: In function 'set_zone_contiguous':
>> mm/page_alloc.c:1354:16: warning: unused variable 'pfn' [-Wunused-variable]
     unsigned long pfn;
                   ^
   mm/page_alloc.c: In function 'free_area_init_nodes':
   mm/page_alloc.c:5929:34: warning: array subscript is below array bounds [-Warray-bounds]
       arch_zone_highest_possible_pfn[i-1];
                                     ^
   cc1: some warnings being treated as errors

vim +/set_zone_contiguous +1304 mm/page_alloc.c

  1298	
  1299		/* Reinit limits that are based on free pages after the kernel is up */
  1300		files_maxfiles_init();
  1301	#endif
  1302	
  1303		for_each_populated_zone(zone)
> 1304			set_zone_contiguous(zone);
  1305	}
  1306	
  1307	/*
  1308	 * Check that the whole (or subset of) a pageblock given by the interval of
  1309	 * [start_pfn, end_pfn) is valid and within the same zone, before scanning it
  1310	 * with the migration of free compaction scanner. The scanners then need to
  1311	 * use only pfn_valid_within() check for arches that allow holes within
  1312	 * pageblocks.
  1313	 *
  1314	 * Return struct page pointer of start_pfn, or NULL if checks were not passed.
  1315	 *
  1316	 * It's possible on some configurations to have a setup like node0 node1 node0
  1317	 * i.e. it's possible that all pages within a zones range of pages do not
  1318	 * belong to a single zone. We assume that a border between node0 and node1
  1319	 * can occur within a single pageblock, but not a node0 node1 node0
  1320	 * interleaving within a single pageblock. It is therefore sufficient to check
  1321	 * the first and last page of a pageblock and avoid checking each individual
  1322	 * page in a pageblock.
  1323	 */
  1324	struct page *__pageblock_pfn_to_page(unsigned long start_pfn,
  1325					unsigned long end_pfn, struct zone *zone)
  1326	{
  1327		struct page *start_page;
  1328		struct page *end_page;
  1329	
  1330		/* end_pfn is one past the range we are checking */
  1331		end_pfn--;
  1332	
  1333		if (!pfn_valid(start_pfn) || !pfn_valid(end_pfn))
  1334			return NULL;
  1335	
  1336		start_page = pfn_to_page(start_pfn);
  1337	
  1338		if (page_zone(start_page) != zone)
  1339			return NULL;
  1340	
  1341		end_page = pfn_to_page(end_pfn);
  1342	
  1343		/* This gives a shorter code than deriving page_zone(end_page) */
  1344		if (page_zone_id(start_page) != page_zone_id(end_page))
  1345			return NULL;
  1346	
  1347		return start_page;
  1348	}
  1349	
> 1350	void set_zone_contiguous(struct zone *zone)
  1351	{
  1352		unsigned long block_start_pfn = zone->zone_start_pfn;
  1353		unsigned long block_end_pfn;
> 1354		unsigned long pfn;
  1355	
  1356		block_end_pfn = ALIGN(block_start_pfn + 1, pageblock_nr_pages);
  1357		for (; block_start_pfn < zone_end_pfn(zone);

---
0-DAY kernel test infrastructure                Open Source Technology Center
https://lists.01.org/pipermail/kbuild-all                   Intel Corporation

Attachment: .config.gz
Description: Binary data


[Index of Archives]     [Linux ARM Kernel]     [Linux ARM]     [Linux Omap]     [Fedora ARM]     [IETF Annouce]     [Bugtraq]     [Linux]     [Linux OMAP]     [Linux MIPS]     [ECOS]     [Asterisk Internet PBX]     [Linux API]