From: kernel test robot <lkp@intel.com>
To: Joshua Hahn <joshua.hahnjy@gmail.com>, shakeel.butt@linux.dev
Cc: oe-kbuild-all@lists.linux.dev, hannes@cmpxchg.org,
mhocko@kernel.org, roman.gushchin@linux.dev,
muchun.song@linux.dev, akpm@linux-foundation.org,
cgroups@vger.kernel.org, linux-mm@kvack.org,
linux-kernel@vger.kernel.org, kernel-team@meta.com
Subject: Re: [PATCH 2/3] memcg/hugetlb: Introduce mem_cgroup_charge_hugetlb
Date: Sat, 9 Nov 2024 11:42:43 +0800 [thread overview]
Message-ID: <202411091159.y6yDCkdf-lkp@intel.com> (raw)
In-Reply-To: <20241108212946.2642085-3-joshua.hahnjy@gmail.com>
Hi Joshua,
kernel test robot noticed the following build errors:
[auto build test ERROR on akpm-mm/mm-everything]
[also build test ERROR on next-20241108]
[cannot apply to linus/master v6.12-rc6]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch#_base_tree_information]
url: https://github.com/intel-lab-lkp/linux/commits/Joshua-Hahn/memcg-hugetlb-Introduce-memcg_accounts_hugetlb/20241109-053045
base: https://git.kernel.org/pub/scm/linux/kernel/git/akpm/mm.git mm-everything
patch link: https://lore.kernel.org/r/20241108212946.2642085-3-joshua.hahnjy%40gmail.com
patch subject: [PATCH 2/3] memcg/hugetlb: Introduce mem_cgroup_charge_hugetlb
config: x86_64-defconfig (https://download.01.org/0day-ci/archive/20241109/202411091159.y6yDCkdf-lkp@intel.com/config)
compiler: gcc-11 (Debian 11.3.0-12) 11.3.0
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20241109/202411091159.y6yDCkdf-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/oe-kbuild-all/202411091159.y6yDCkdf-lkp@intel.com/
All errors (new ones prefixed by >>):
mm/hugetlb.c: In function 'alloc_hugetlb_folio':
>> mm/hugetlb.c:3083:15: error: implicit declaration of function 'mem_cgroup_charge_hugetlb'; did you mean 'mem_cgroup_charge_skmem'? [-Werror=implicit-function-declaration]
3083 | ret = mem_cgroup_charge_hugetlb(folio, gfp);
| ^~~~~~~~~~~~~~~~~~~~~~~~~
| mem_cgroup_charge_skmem
cc1: some warnings being treated as errors
vim +3083 mm/hugetlb.c
2963
2964 struct folio *alloc_hugetlb_folio(struct vm_area_struct *vma,
2965 unsigned long addr, int avoid_reserve)
2966 {
2967 struct hugepage_subpool *spool = subpool_vma(vma);
2968 struct hstate *h = hstate_vma(vma);
2969 struct folio *folio;
2970 long map_chg, map_commit;
2971 long gbl_chg;
2972 int ret, idx;
2973 struct hugetlb_cgroup *h_cg = NULL;
2974 bool deferred_reserve;
2975 gfp_t gfp = htlb_alloc_mask(h) | __GFP_RETRY_MAYFAIL;
2976
2977 idx = hstate_index(h);
2978 /*
2979 * Examine the region/reserve map to determine if the process
2980 * has a reservation for the page to be allocated. A return
2981 * code of zero indicates a reservation exists (no change).
2982 */
2983 map_chg = gbl_chg = vma_needs_reservation(h, vma, addr);
2984 if (map_chg < 0)
2985 return ERR_PTR(-ENOMEM);
2986
2987 /*
2988 * Processes that did not create the mapping will have no
2989 * reserves as indicated by the region/reserve map. Check
2990 * that the allocation will not exceed the subpool limit.
2991 * Allocations for MAP_NORESERVE mappings also need to be
2992 * checked against any subpool limit.
2993 */
2994 if (map_chg || avoid_reserve) {
2995 gbl_chg = hugepage_subpool_get_pages(spool, 1);
2996 if (gbl_chg < 0)
2997 goto out_end_reservation;
2998
2999 /*
3000 * Even though there was no reservation in the region/reserve
3001 * map, there could be reservations associated with the
3002 * subpool that can be used. This would be indicated if the
3003 * return value of hugepage_subpool_get_pages() is zero.
3004 * However, if avoid_reserve is specified we still avoid even
3005 * the subpool reservations.
3006 */
3007 if (avoid_reserve)
3008 gbl_chg = 1;
3009 }
3010
3011 /* If this allocation is not consuming a reservation, charge it now.
3012 */
3013 deferred_reserve = map_chg || avoid_reserve;
3014 if (deferred_reserve) {
3015 ret = hugetlb_cgroup_charge_cgroup_rsvd(
3016 idx, pages_per_huge_page(h), &h_cg);
3017 if (ret)
3018 goto out_subpool_put;
3019 }
3020
3021 ret = hugetlb_cgroup_charge_cgroup(idx, pages_per_huge_page(h), &h_cg);
3022 if (ret)
3023 goto out_uncharge_cgroup_reservation;
3024
3025 spin_lock_irq(&hugetlb_lock);
3026 /*
3027 * glb_chg is passed to indicate whether or not a page must be taken
3028 * from the global free pool (global change). gbl_chg == 0 indicates
3029 * a reservation exists for the allocation.
3030 */
3031 folio = dequeue_hugetlb_folio_vma(h, vma, addr, avoid_reserve, gbl_chg);
3032 if (!folio) {
3033 spin_unlock_irq(&hugetlb_lock);
3034 folio = alloc_buddy_hugetlb_folio_with_mpol(h, vma, addr);
3035 if (!folio)
3036 goto out_uncharge_cgroup;
3037 spin_lock_irq(&hugetlb_lock);
3038 if (!avoid_reserve && vma_has_reserves(vma, gbl_chg)) {
3039 folio_set_hugetlb_restore_reserve(folio);
3040 h->resv_huge_pages--;
3041 }
3042 list_add(&folio->lru, &h->hugepage_activelist);
3043 folio_ref_unfreeze(folio, 1);
3044 /* Fall through */
3045 }
3046
3047 hugetlb_cgroup_commit_charge(idx, pages_per_huge_page(h), h_cg, folio);
3048 /* If allocation is not consuming a reservation, also store the
3049 * hugetlb_cgroup pointer on the page.
3050 */
3051 if (deferred_reserve) {
3052 hugetlb_cgroup_commit_charge_rsvd(idx, pages_per_huge_page(h),
3053 h_cg, folio);
3054 }
3055
3056 spin_unlock_irq(&hugetlb_lock);
3057
3058 hugetlb_set_folio_subpool(folio, spool);
3059
3060 map_commit = vma_commit_reservation(h, vma, addr);
3061 if (unlikely(map_chg > map_commit)) {
3062 /*
3063 * The page was added to the reservation map between
3064 * vma_needs_reservation and vma_commit_reservation.
3065 * This indicates a race with hugetlb_reserve_pages.
3066 * Adjust for the subpool count incremented above AND
3067 * in hugetlb_reserve_pages for the same page. Also,
3068 * the reservation count added in hugetlb_reserve_pages
3069 * no longer applies.
3070 */
3071 long rsv_adjust;
3072
3073 rsv_adjust = hugepage_subpool_put_pages(spool, 1);
3074 hugetlb_acct_memory(h, -rsv_adjust);
3075 if (deferred_reserve) {
3076 spin_lock_irq(&hugetlb_lock);
3077 hugetlb_cgroup_uncharge_folio_rsvd(hstate_index(h),
3078 pages_per_huge_page(h), folio);
3079 spin_unlock_irq(&hugetlb_lock);
3080 }
3081 }
3082
> 3083 ret = mem_cgroup_charge_hugetlb(folio, gfp);
3084 if (ret == -ENOMEM) {
3085 spin_unlock_irq(&hugetlb_lock);
3086 free_huge_folio(folio);
3087 return ERR_PTR(-ENOMEM);
3088 }
3089 else if (!ret)
3090 lruvec_stat_mod_folio(folio, NR_HUGETLB,
3091 pages_per_huge_page(h));
3092
3093 return folio;
3094
3095 out_uncharge_cgroup:
3096 hugetlb_cgroup_uncharge_cgroup(idx, pages_per_huge_page(h), h_cg);
3097 out_uncharge_cgroup_reservation:
3098 if (deferred_reserve)
3099 hugetlb_cgroup_uncharge_cgroup_rsvd(idx, pages_per_huge_page(h),
3100 h_cg);
3101 out_subpool_put:
3102 if (map_chg || avoid_reserve)
3103 hugepage_subpool_put_pages(spool, 1);
3104 out_end_reservation:
3105 vma_end_reservation(h, vma, addr);
3106 return ERR_PTR(-ENOSPC);
3107 }
3108
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
next prev parent reply other threads:[~2024-11-09 3:43 UTC|newest]
Thread overview: 18+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-11-08 21:29 [PATCH 0/3] memcg/hugetlb: Rework memcg hugetlb charging Joshua Hahn
2024-11-08 21:29 ` [PATCH 1/3] memcg/hugetlb: Introduce memcg_accounts_hugetlb Joshua Hahn
2024-11-08 22:21 ` Shakeel Butt
2024-11-08 23:03 ` Yosry Ahmed
2024-11-09 18:31 ` Joshua Hahn
2024-11-08 21:29 ` [PATCH 2/3] memcg/hugetlb: Introduce mem_cgroup_charge_hugetlb Joshua Hahn
2024-11-08 22:42 ` Shakeel Butt
2024-11-09 18:58 ` Joshua Hahn
2024-11-11 6:33 ` Shakeel Butt
2024-11-09 1:03 ` SeongJae Park
2024-11-09 18:41 ` Joshua Hahn
2024-11-09 20:52 ` SeongJae Park
2024-11-09 3:42 ` kernel test robot [this message]
2024-11-09 5:24 ` kernel test robot
2024-11-08 21:29 ` [PATCH 3/3] memcg/hugetlb: Deprecate memcg hugetlb try-commit-cancel protocol Joshua Hahn
2024-11-08 22:43 ` Shakeel Butt
2024-11-08 23:07 ` Yosry Ahmed
2024-11-09 18:34 ` Joshua Hahn
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=202411091159.y6yDCkdf-lkp@intel.com \
--to=lkp@intel.com \
--cc=akpm@linux-foundation.org \
--cc=cgroups@vger.kernel.org \
--cc=hannes@cmpxchg.org \
--cc=joshua.hahnjy@gmail.com \
--cc=kernel-team@meta.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=mhocko@kernel.org \
--cc=muchun.song@linux.dev \
--cc=oe-kbuild-all@lists.linux.dev \
--cc=roman.gushchin@linux.dev \
--cc=shakeel.butt@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.