All of lore.kernel.org
 help / color / mirror / Atom feed
From: kernel test robot <lkp@intel.com>
To: oe-kbuild@lists.linux.dev
Cc: lkp@intel.com
Subject: [gourryinverse:movable_gigantic 1/1] mm/hugetlb.c:505:9: error: incomplete definition of type 'struct hugetlb_cgroup'
Date: Wed, 26 Nov 2025 12:16:48 +0100	[thread overview]
Message-ID: <202511261216.RaY4WDHN-lkp@intel.com> (raw)

:::::: 
:::::: Manual check reason: "low confidence bisect report"
:::::: 

BCC: lkp@intel.com
CC: oe-kbuild-all@lists.linux.dev
CC: Gregory Price <gourry@gourry.net>
TO: Gregory Price <gourry@gourry.net>

tree:   https://github.com/gourryinverse/linux movable_gigantic
head:   ba138827f6a776a1b329ebd87f3510e2d45302bd
commit: ba138827f6a776a1b329ebd87f3510e2d45302bd [1/1] mm, hugetlb: implement movable_gigantic_pages sysctl
:::::: branch date: 21 hours ago
:::::: commit date: 21 hours ago
config: i386-allnoconfig-bpf (https://download.01.org/0day-ci/archive/20251126/202511261216.RaY4WDHN-lkp@intel.com/config)
compiler: clang version 20.1.8 (https://github.com/llvm/llvm-project 87f0227cb60147a26a1eeb4fb06e3b505e9c7261)
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20251126/202511261216.RaY4WDHN-lkp@intel.com/reproduce)

If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@intel.com>
| Closes: https://lore.kernel.org/r/202511261216.RaY4WDHN-lkp@intel.com/

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

>> mm/hugetlb.c:497:56: warning: declaration of 'struct hugetlb_cgroup' will not be visible outside of this function [-Wvisibility]
     497 | static void record_hugetlb_cgroup_uncharge_info(struct hugetlb_cgroup *h_cg,
         |                                                        ^
>> mm/hugetlb.c:505:9: error: incomplete definition of type 'struct hugetlb_cgroup'
     505 |                         &h_cg->rsvd_hugepage[hstate_index(h)];
         |                          ~~~~^
   mm/hugetlb.c:497:56: note: forward declaration of 'struct hugetlb_cgroup'
     497 | static void record_hugetlb_cgroup_uncharge_info(struct hugetlb_cgroup *h_cg,
         |                                                        ^
   mm/hugetlb.c:506:19: error: incomplete definition of type 'struct hugetlb_cgroup'
     506 |                 nrg->css = &h_cg->css;
         |                             ~~~~^
   mm/hugetlb.c:497:56: note: forward declaration of 'struct hugetlb_cgroup'
     497 | static void record_hugetlb_cgroup_uncharge_info(struct hugetlb_cgroup *h_cg,
         |                                                        ^
   mm/hugetlb.c:517:16: error: incomplete definition of type 'struct hugetlb_cgroup'
     517 |                 css_get(&h_cg->css);
         |                          ~~~~^
   mm/hugetlb.c:497:56: note: forward declaration of 'struct hugetlb_cgroup'
     497 | static void record_hugetlb_cgroup_uncharge_info(struct hugetlb_cgroup *h_cg,
         |                                                        ^
   mm/hugetlb.c:580:42: warning: declaration of 'struct hugetlb_cgroup' will not be visible outside of this function [-Wvisibility]
     580 |                      long to, struct hstate *h, struct hugetlb_cgroup *cg,
         |                                                        ^
>> mm/hugetlb.c:587:39: error: incompatible pointer types passing 'struct hugetlb_cgroup *' to parameter of type 'struct hugetlb_cgroup *' [-Werror,-Wincompatible-pointer-types]
     587 |                 record_hugetlb_cgroup_uncharge_info(cg, h, map, nrg);
         |                                                     ^~
   mm/hugetlb.c:497:72: note: passing argument to parameter 'h_cg' here
     497 | static void record_hugetlb_cgroup_uncharge_info(struct hugetlb_cgroup *h_cg,
         |                                                                        ^
   mm/hugetlb.c:605:17: warning: declaration of 'struct hugetlb_cgroup' will not be visible outside of this function [-Wvisibility]
     605 |                                      struct hugetlb_cgroup *h_cg,
         |                                             ^
   mm/hugetlb.c:646:26: error: incompatible pointer types passing 'struct hugetlb_cgroup *' to parameter of type 'struct hugetlb_cgroup *' [-Werror,-Wincompatible-pointer-types]
     646 |                                                     iter->from, h, h_cg,
         |                                                                    ^~~~
   mm/hugetlb.c:580:58: note: passing argument to parameter 'cg' here
     580 |                      long to, struct hstate *h, struct hugetlb_cgroup *cg,
         |                                                                        ^
   mm/hugetlb.c:659:16: error: incompatible pointer types passing 'struct hugetlb_cgroup *' to parameter of type 'struct hugetlb_cgroup *' [-Werror,-Wincompatible-pointer-types]
     659 |                                             t, h, h_cg, regions_needed);
         |                                                   ^~~~
   mm/hugetlb.c:580:58: note: passing argument to parameter 'cg' here
     580 |                      long to, struct hstate *h, struct hugetlb_cgroup *cg,
         |                                                                        ^
   mm/hugetlb.c:739:17: warning: declaration of 'struct hugetlb_cgroup' will not be visible outside of this function [-Wvisibility]
     739 |                        struct hugetlb_cgroup *h_cg)
         |                               ^
   mm/hugetlb.c:776:45: error: incompatible pointer types passing 'struct hugetlb_cgroup *' to parameter of type 'struct hugetlb_cgroup *' [-Werror,-Wincompatible-pointer-types]
     776 |         add = add_reservation_in_range(resv, f, t, h_cg, h, NULL);
         |                                                    ^~~~
   mm/hugetlb.c:605:33: note: passing argument to parameter 'h_cg' here
     605 |                                      struct hugetlb_cgroup *h_cg,
         |                                                             ^
>> mm/hugetlb.c:909:4: error: call to undeclared function 'hugetlb_cgroup_uncharge_file_region'; ISO C99 and later do not support implicit function declarations [-Wimplicit-function-declaration]
     909 |                         hugetlb_cgroup_uncharge_file_region(
         |                         ^
   mm/hugetlb.c:930:4: error: call to undeclared function 'hugetlb_cgroup_uncharge_file_region'; ISO C99 and later do not support implicit function declarations [-Wimplicit-function-declaration]
     930 |                         hugetlb_cgroup_uncharge_file_region(resv, rg,
         |                         ^
   mm/hugetlb.c:938:4: error: call to undeclared function 'hugetlb_cgroup_uncharge_file_region'; ISO C99 and later do not support implicit function declarations [-Wimplicit-function-declaration]
     938 |                         hugetlb_cgroup_uncharge_file_region(resv, rg,
         |                         ^
   mm/hugetlb.c:944:4: error: call to undeclared function 'hugetlb_cgroup_uncharge_file_region'; ISO C99 and later do not support implicit function declarations [-Wimplicit-function-declaration]
     944 |                         hugetlb_cgroup_uncharge_file_region(resv, rg,
         |                         ^
   mm/hugetlb.c:1097:15: warning: declaration of 'struct hugetlb_cgroup' will not be visible outside of this function [-Wvisibility]
    1097 |                                           struct hugetlb_cgroup *h_cg,
         |                                                  ^
   mm/hugetlb.c:1107:9: error: incomplete definition of type 'struct hugetlb_cgroup'
    1107 |                         &h_cg->rsvd_hugepage[hstate_index(h)];
         |                          ~~~~^
   mm/hugetlb.c:1097:15: note: forward declaration of 'struct hugetlb_cgroup'
    1097 |                                           struct hugetlb_cgroup *h_cg,
         |                                                  ^
   mm/hugetlb.c:1109:24: error: incomplete definition of type 'struct hugetlb_cgroup'
    1109 |                 resv_map->css = &h_cg->css;
         |                                  ~~~~^
   mm/hugetlb.c:1097:15: note: forward declaration of 'struct hugetlb_cgroup'
    1097 |                                           struct hugetlb_cgroup *h_cg,
         |                                                  ^
>> mm/hugetlb.c:1287:3: error: call to undeclared function 'resv_map_put_hugetlb_cgroup_uncharge_info'; ISO C99 and later do not support implicit function declarations [-Wimplicit-function-declaration]
    1287 |                 resv_map_put_hugetlb_cgroup_uncharge_info(reservations);
         |                 ^
   mm/hugetlb.c:1287:3: note: did you mean 'resv_map_set_hugetlb_cgroup_uncharge_info'?
   mm/hugetlb.c:1096:1: note: 'resv_map_set_hugetlb_cgroup_uncharge_info' declared here
    1096 | resv_map_set_hugetlb_cgroup_uncharge_info(struct resv_map *resv_map,
         | ^
>> mm/hugetlb.c:1479:18: error: call to undeclared function 'hugetlb_cgroup_from_folio'; ISO C99 and later do not support implicit function declarations [-Wimplicit-function-declaration]
    1479 |         VM_BUG_ON_FOLIO(hugetlb_cgroup_from_folio(folio), folio);
         |                         ^
   mm/hugetlb.c:1479:18: note: did you mean 'get_obj_cgroup_from_folio'?
   ./include/linux/memcontrol.h:1689:20: note: 'get_obj_cgroup_from_folio' declared here
    1689 | struct obj_cgroup *get_obj_cgroup_from_folio(struct folio *folio);
         |                    ^
>> mm/hugetlb.c:1480:18: error: call to undeclared function 'hugetlb_cgroup_from_folio_rsvd'; ISO C99 and later do not support implicit function declarations [-Wimplicit-function-declaration]
    1480 |         VM_BUG_ON_FOLIO(hugetlb_cgroup_from_folio_rsvd(folio), folio);
         |                         ^
>> mm/hugetlb.c:1483:6: error: call to undeclared function 'hstate_is_gigantic_no_runtime'; ISO C99 and later do not support implicit function declarations [-Wimplicit-function-declaration]
    1483 |         if (hstate_is_gigantic_no_runtime(h))
         |             ^
>> mm/hugetlb.c:1474:6: warning: no previous prototype for function 'remove_hugetlb_folio' [-Wmissing-prototypes]
    1474 | void remove_hugetlb_folio(struct hstate *h, struct folio *folio,
         |      ^
   mm/hugetlb.c:1474:1: note: declare 'static' if the function is not intended to be used outside of this translation unit
    1474 | void remove_hugetlb_folio(struct hstate *h, struct folio *folio,
         | ^
         | static 
>> mm/hugetlb.c:1510:6: warning: no previous prototype for function 'add_hugetlb_folio' [-Wmissing-prototypes]
    1510 | void add_hugetlb_folio(struct hstate *h, struct folio *folio,
         |      ^
   mm/hugetlb.c:1510:1: note: declare 'static' if the function is not intended to be used outside of this translation unit
    1510 | void add_hugetlb_folio(struct hstate *h, struct folio *folio,
         | ^
         | static 
   mm/hugetlb.c:1545:6: error: call to undeclared function 'hstate_is_gigantic_no_runtime'; ISO C99 and later do not support implicit function declarations [-Wimplicit-function-declaration]
    1545 |         if (hstate_is_gigantic_no_runtime(h))
         |             ^
>> mm/hugetlb.c:1807:2: error: call to undeclared function 'hugetlb_cgroup_uncharge_folio'; ISO C99 and later do not support implicit function declarations [-Wimplicit-function-declaration]
    1807 |         hugetlb_cgroup_uncharge_folio(hstate_index(h),
         |         ^
   fatal error: too many errors emitted, stopping now [-ferror-limit=]
   7 warnings and 20 errors generated.


vim +505 mm/hugetlb.c

075a61d07a8eca Mina Almasry  2020-04-01  495  
075a61d07a8eca Mina Almasry  2020-04-01  496  /* Helper that records hugetlb_cgroup uncharge info. */
075a61d07a8eca Mina Almasry  2020-04-01 @497  static void record_hugetlb_cgroup_uncharge_info(struct hugetlb_cgroup *h_cg,
075a61d07a8eca Mina Almasry  2020-04-01  498  						struct hstate *h,
075a61d07a8eca Mina Almasry  2020-04-01  499  						struct resv_map *resv,
075a61d07a8eca Mina Almasry  2020-04-01  500  						struct file_region *nrg)
075a61d07a8eca Mina Almasry  2020-04-01  501  {
075a61d07a8eca Mina Almasry  2020-04-01  502  #ifdef CONFIG_CGROUP_HUGETLB
075a61d07a8eca Mina Almasry  2020-04-01  503  	if (h_cg) {
075a61d07a8eca Mina Almasry  2020-04-01  504  		nrg->reservation_counter =
075a61d07a8eca Mina Almasry  2020-04-01 @505  			&h_cg->rsvd_hugepage[hstate_index(h)];
075a61d07a8eca Mina Almasry  2020-04-01  506  		nrg->css = &h_cg->css;
d85aecf2844ff0 Miaohe Lin    2021-03-24  507  		/*
d85aecf2844ff0 Miaohe Lin    2021-03-24  508  		 * The caller will hold exactly one h_cg->css reference for the
d85aecf2844ff0 Miaohe Lin    2021-03-24  509  		 * whole contiguous reservation region. But this area might be
d85aecf2844ff0 Miaohe Lin    2021-03-24  510  		 * scattered when there are already some file_regions reside in
d85aecf2844ff0 Miaohe Lin    2021-03-24  511  		 * it. As a result, many file_regions may share only one css
d85aecf2844ff0 Miaohe Lin    2021-03-24  512  		 * reference. In order to ensure that one file_region must hold
d85aecf2844ff0 Miaohe Lin    2021-03-24  513  		 * exactly one h_cg->css reference, we should do css_get for
d85aecf2844ff0 Miaohe Lin    2021-03-24  514  		 * each file_region and leave the reference held by caller
d85aecf2844ff0 Miaohe Lin    2021-03-24  515  		 * untouched.
d85aecf2844ff0 Miaohe Lin    2021-03-24  516  		 */
d85aecf2844ff0 Miaohe Lin    2021-03-24 @517  		css_get(&h_cg->css);
075a61d07a8eca Mina Almasry  2020-04-01  518  		if (!resv->pages_per_hpage)
075a61d07a8eca Mina Almasry  2020-04-01  519  			resv->pages_per_hpage = pages_per_huge_page(h);
075a61d07a8eca Mina Almasry  2020-04-01  520  		/* pages_per_hpage should be the same for all entries in
075a61d07a8eca Mina Almasry  2020-04-01  521  		 * a resv_map.
075a61d07a8eca Mina Almasry  2020-04-01  522  		 */
075a61d07a8eca Mina Almasry  2020-04-01  523  		VM_BUG_ON(resv->pages_per_hpage != pages_per_huge_page(h));
075a61d07a8eca Mina Almasry  2020-04-01  524  	} else {
075a61d07a8eca Mina Almasry  2020-04-01  525  		nrg->reservation_counter = NULL;
075a61d07a8eca Mina Almasry  2020-04-01  526  		nrg->css = NULL;
075a61d07a8eca Mina Almasry  2020-04-01  527  	}
075a61d07a8eca Mina Almasry  2020-04-01  528  #endif
075a61d07a8eca Mina Almasry  2020-04-01  529  }
075a61d07a8eca Mina Almasry  2020-04-01  530  
d85aecf2844ff0 Miaohe Lin    2021-03-24  531  static void put_uncharge_info(struct file_region *rg)
d85aecf2844ff0 Miaohe Lin    2021-03-24  532  {
d85aecf2844ff0 Miaohe Lin    2021-03-24  533  #ifdef CONFIG_CGROUP_HUGETLB
d85aecf2844ff0 Miaohe Lin    2021-03-24  534  	if (rg->css)
d85aecf2844ff0 Miaohe Lin    2021-03-24  535  		css_put(rg->css);
d85aecf2844ff0 Miaohe Lin    2021-03-24  536  #endif
d85aecf2844ff0 Miaohe Lin    2021-03-24  537  }
d85aecf2844ff0 Miaohe Lin    2021-03-24  538  
a9b3f867404b35 Mina Almasry  2020-04-01  539  static bool has_same_uncharge_info(struct file_region *rg,
a9b3f867404b35 Mina Almasry  2020-04-01  540  				   struct file_region *org)
a9b3f867404b35 Mina Almasry  2020-04-01  541  {
a9b3f867404b35 Mina Almasry  2020-04-01  542  #ifdef CONFIG_CGROUP_HUGETLB
0739eb437f3d39 Baolin Wang   2021-11-05  543  	return rg->reservation_counter == org->reservation_counter &&
a9b3f867404b35 Mina Almasry  2020-04-01  544  	       rg->css == org->css;
a9b3f867404b35 Mina Almasry  2020-04-01  545  
a9b3f867404b35 Mina Almasry  2020-04-01  546  #else
a9b3f867404b35 Mina Almasry  2020-04-01  547  	return true;
a9b3f867404b35 Mina Almasry  2020-04-01  548  #endif
a9b3f867404b35 Mina Almasry  2020-04-01  549  }
a9b3f867404b35 Mina Almasry  2020-04-01  550  
a9b3f867404b35 Mina Almasry  2020-04-01  551  static void coalesce_file_region(struct resv_map *resv, struct file_region *rg)
a9b3f867404b35 Mina Almasry  2020-04-01  552  {
3259914f8cab1b XU pengfei    2022-09-14  553  	struct file_region *nrg, *prg;
a9b3f867404b35 Mina Almasry  2020-04-01  554  
a9b3f867404b35 Mina Almasry  2020-04-01  555  	prg = list_prev_entry(rg, link);
a9b3f867404b35 Mina Almasry  2020-04-01  556  	if (&prg->link != &resv->regions && prg->to == rg->from &&
a9b3f867404b35 Mina Almasry  2020-04-01  557  	    has_same_uncharge_info(prg, rg)) {
a9b3f867404b35 Mina Almasry  2020-04-01  558  		prg->to = rg->to;
a9b3f867404b35 Mina Almasry  2020-04-01  559  
a9b3f867404b35 Mina Almasry  2020-04-01  560  		list_del(&rg->link);
d85aecf2844ff0 Miaohe Lin    2021-03-24  561  		put_uncharge_info(rg);
a9b3f867404b35 Mina Almasry  2020-04-01  562  		kfree(rg);
a9b3f867404b35 Mina Almasry  2020-04-01  563  
7db5e7b67e3e8d Wei Yang      2020-10-13  564  		rg = prg;
a9b3f867404b35 Mina Almasry  2020-04-01  565  	}
a9b3f867404b35 Mina Almasry  2020-04-01  566  
a9b3f867404b35 Mina Almasry  2020-04-01  567  	nrg = list_next_entry(rg, link);
a9b3f867404b35 Mina Almasry  2020-04-01  568  	if (&nrg->link != &resv->regions && nrg->from == rg->to &&
a9b3f867404b35 Mina Almasry  2020-04-01  569  	    has_same_uncharge_info(nrg, rg)) {
a9b3f867404b35 Mina Almasry  2020-04-01  570  		nrg->from = rg->from;
a9b3f867404b35 Mina Almasry  2020-04-01  571  
a9b3f867404b35 Mina Almasry  2020-04-01  572  		list_del(&rg->link);
d85aecf2844ff0 Miaohe Lin    2021-03-24  573  		put_uncharge_info(rg);
a9b3f867404b35 Mina Almasry  2020-04-01  574  		kfree(rg);
a9b3f867404b35 Mina Almasry  2020-04-01  575  	}
a9b3f867404b35 Mina Almasry  2020-04-01  576  }
a9b3f867404b35 Mina Almasry  2020-04-01  577  
2103cf9c3f3ba0 Peter Xu      2021-03-12  578  static inline long
84448c8ecd9a13 Jakob Koschel 2022-04-28  579  hugetlb_resv_map_add(struct resv_map *map, struct list_head *rg, long from,
2103cf9c3f3ba0 Peter Xu      2021-03-12  580  		     long to, struct hstate *h, struct hugetlb_cgroup *cg,
2103cf9c3f3ba0 Peter Xu      2021-03-12  581  		     long *regions_needed)
2103cf9c3f3ba0 Peter Xu      2021-03-12  582  {
2103cf9c3f3ba0 Peter Xu      2021-03-12  583  	struct file_region *nrg;
2103cf9c3f3ba0 Peter Xu      2021-03-12  584  
2103cf9c3f3ba0 Peter Xu      2021-03-12  585  	if (!regions_needed) {
2103cf9c3f3ba0 Peter Xu      2021-03-12  586  		nrg = get_file_region_entry_from_cache(map, from, to);
2103cf9c3f3ba0 Peter Xu      2021-03-12 @587  		record_hugetlb_cgroup_uncharge_info(cg, h, map, nrg);
84448c8ecd9a13 Jakob Koschel 2022-04-28  588  		list_add(&nrg->link, rg);
2103cf9c3f3ba0 Peter Xu      2021-03-12  589  		coalesce_file_region(map, nrg);
2103cf9c3f3ba0 Peter Xu      2021-03-12  590  	} else
2103cf9c3f3ba0 Peter Xu      2021-03-12  591  		*regions_needed += 1;
2103cf9c3f3ba0 Peter Xu      2021-03-12  592  
2103cf9c3f3ba0 Peter Xu      2021-03-12  593  	return to - from;
2103cf9c3f3ba0 Peter Xu      2021-03-12  594  }
2103cf9c3f3ba0 Peter Xu      2021-03-12  595  

:::::: The code at line 505 was first introduced by commit
:::::: 075a61d07a8eca2fe980acd94105ed5d6429c55d hugetlb_cgroup: add accounting for shared mappings

:::::: TO: Mina Almasry <almasrymina@google.com>
:::::: CC: Linus Torvalds <torvalds@linux-foundation.org>

-- 
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki

             reply	other threads:[~2025-11-26 11:17 UTC|newest]

Thread overview: 2+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-11-26 11:16 kernel test robot [this message]
  -- strict thread matches above, loose matches on Subject: below --
2025-11-26 13:09 [gourryinverse:movable_gigantic 1/1] mm/hugetlb.c:505:9: error: incomplete definition of type 'struct hugetlb_cgroup' kernel test robot

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=202511261216.RaY4WDHN-lkp@intel.com \
    --to=lkp@intel.com \
    --cc=oe-kbuild@lists.linux.dev \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.