Bug 208245

Summary: Build error: mm/page_alloc.c:8348:48: warning: ‘struct compact_control’
Product: Drivers Reporter: Weilong Chen (chenweilong)
Component: OtherAssignee: drivers_other
Status: NEW ---    
Severity: normal    
Priority: P1    
Hardware: All   
OS: Linux   
Kernel Version: 5.8 Subsystem:
Regression: No Bisected commit-id:
Attachments: config

Description Weilong Chen 2020-06-19 06:57:45 UTC
Created attachment 289745 [details]
config

kernel version:
https://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next.git
head:69119673bd50b176ded34032fadd41530fb5af21
build cmd:
$cp config .config
$make ARCH=x86_64


Build error:
mm/page_alloc.c:8348:48: warning: ‘struct compact_control’ declared inside parameter list will not be visible outside of this definition or declaration
 static int __alloc_contig_migrate_range(struct compact_control *cc,
                                                ^~~~~~~~~~~~~~~
mm/page_alloc.c: In function ‘__alloc_contig_migrate_range’:
mm/page_alloc.c:8359:37: error: dereferencing pointer to incomplete type ‘struct compact_control’
  while (pfn < end || !list_empty(&cc->migratepages)) {
                                     ^~
mm/page_alloc.c:8367:10: error: implicit declaration of function ‘isolate_migratepages_range’; did you mean ‘populate_vma_page_range’? [-Werror=implicit-function-declaration]
    pfn = isolate_migratepages_range(cc, pfn, end);
          ^~~~~~~~~~~~~~~~~~~~~~~~~~
          populate_vma_page_range
mm/page_alloc.c: In function ‘alloc_contig_range’:
mm/page_alloc.c:8420:9: error: variable ‘cc’ has initializer but incomplete type
  struct compact_control cc = {
         ^~~~~~~~~~~~~~~
mm/page_alloc.c:8421:4: error: ‘struct compact_control’ has no member named ‘nr_migratepages’
   .nr_migratepages = 0,
    ^~~~~~~~~~~~~~~
mm/page_alloc.c:8421:22: warning: excess elements in struct initializer
   .nr_migratepages = 0,
                      ^
mm/page_alloc.c:8421:22: note: (near initialization for ‘cc’)
mm/page_alloc.c:8422:4: error: ‘struct compact_control’ has no member named ‘order’
   .order = -1,
    ^~~~~
mm/page_alloc.c:8422:12: warning: excess elements in struct initializer
   .order = -1,
            ^
mm/page_alloc.c:8422:12: note: (near initialization for ‘cc’)
mm/page_alloc.c:8423:4: error: ‘struct compact_control’ has no member named ‘zone’
   .zone = page_zone(pfn_to_page(start)),
    ^~~~
mm/page_alloc.c:8423:11: warning: excess elements in struct initializer
   .zone = page_zone(pfn_to_page(start)),
           ^~~~~~~~~
mm/page_alloc.c:8423:11: note: (near initialization for ‘cc’)
mm/page_alloc.c:8424:4: error: ‘struct compact_control’ has no member named ‘mode’
   .mode = MIGRATE_SYNC,
    ^~~~
mm/page_alloc.c:8424:11: warning: excess elements in struct initializer
   .mode = MIGRATE_SYNC,
           ^~~~~~~~~~~~
mm/page_alloc.c:8424:11: note: (near initialization for ‘cc’)
mm/page_alloc.c:8425:4: error: ‘struct compact_control’ has no member named ‘ignore_skip_hint’
   .ignore_skip_hint = true,
    ^~~~~~~~~~~~~~~~
mm/page_alloc.c:8425:23: warning: excess elements in struct initializer
   .ignore_skip_hint = true,
                       ^~~~
mm/page_alloc.c:8425:23: note: (near initialization for ‘cc’)
mm/page_alloc.c:8426:4: error: ‘struct compact_control’ has no member named ‘no_set_skip_hint’
   .no_set_skip_hint = true,
    ^~~~~~~~~~~~~~~~
mm/page_alloc.c:8426:23: warning: excess elements in struct initializer
   .no_set_skip_hint = true,
                       ^~~~
mm/page_alloc.c:8426:23: note: (near initialization for ‘cc’)
mm/page_alloc.c:8427:4: error: ‘struct compact_control’ has no member named ‘gfp_mask’
   .gfp_mask = current_gfp_context(gfp_mask),
    ^~~~~~~~
mm/page_alloc.c:8427:15: warning: excess elements in struct initializer
   .gfp_mask = current_gfp_context(gfp_mask),
               ^~~~~~~~~~~~~~~~~~~
mm/page_alloc.c:8427:15: note: (near initialization for ‘cc’)
mm/page_alloc.c:8428:4: error: ‘struct compact_control’ has no member named ‘alloc_contig’
   .alloc_contig = true,
    ^~~~~~~~~~~~
mm/page_alloc.c:8428:19: warning: excess elements in struct initializer
   .alloc_contig = true,
                   ^~~~
mm/page_alloc.c:8428:19: note: (near initialization for ‘cc’)
mm/page_alloc.c:8420:25: error: storage size of ‘cc’ isn’t known
  struct compact_control cc = {
                         ^~
mm/page_alloc.c:8527:14: error: implicit declaration of function ‘isolate_freepages_range’; did you mean ‘populate_vma_page_range’? [-Werror=implicit-function-declaration]
  outer_end = isolate_freepages_range(&cc, outer_start, end);
              ^~~~~~~~~~~~~~~~~~~~~~~
              populate_vma_page_range
mm/page_alloc.c:8420:25: warning: unused variable ‘cc’ [-Wunused-variable]
  struct compact_control cc = {
                         ^~
cc1: some warnings being treated as errors
make[1]: *** [mm/page_alloc.o] Error 1
make: *** [mm] Error 2
make: *** Waiting for unfinished jobs....