Lines Matching refs:h_cg
33 __hugetlb_cgroup_counter_from_cgroup(struct hugetlb_cgroup *h_cg, int idx,
37 return &h_cg->rsvd_hugepage[idx];
38 return &h_cg->hugepage[idx];
42 hugetlb_cgroup_counter_from_cgroup(struct hugetlb_cgroup *h_cg, int idx)
44 return __hugetlb_cgroup_counter_from_cgroup(h_cg, idx, false);
48 hugetlb_cgroup_counter_from_cgroup_rsvd(struct hugetlb_cgroup *h_cg, int idx)
50 return __hugetlb_cgroup_counter_from_cgroup(h_cg, idx, true);
65 static inline bool hugetlb_cgroup_is_root(struct hugetlb_cgroup *h_cg)
67 return (h_cg == root_h_cgroup);
71 parent_hugetlb_cgroup(struct hugetlb_cgroup *h_cg)
73 return hugetlb_cgroup_from_css(h_cg->css.parent);
76 static inline bool hugetlb_cgroup_have_usage(struct hugetlb_cgroup *h_cg)
82 hugetlb_cgroup_counter_from_cgroup(h_cg, hstate_index(h))))
187 static void hugetlb_cgroup_move_parent(int idx, struct hugetlb_cgroup *h_cg,
193 struct hugetlb_cgroup *parent = parent_hugetlb_cgroup(h_cg);
202 if (!page_hcg || page_hcg != h_cg)
211 counter = &h_cg->hugepage[idx];
226 struct hugetlb_cgroup *h_cg = hugetlb_cgroup_from_css(css);
234 hugetlb_cgroup_move_parent(hstate_index(h), h_cg, page);
239 } while (hugetlb_cgroup_have_usage(h_cg));
261 struct hugetlb_cgroup *h_cg = NULL;
273 h_cg = hugetlb_cgroup_from_task(current);
274 if (!css_tryget(&h_cg->css)) {
281 __hugetlb_cgroup_counter_from_cgroup(h_cg, idx, rsvd),
284 hugetlb_event(h_cg, idx, HUGETLB_MAX);
285 css_put(&h_cg->css);
292 css_put(&h_cg->css);
294 *ptr = h_cg;
312 struct hugetlb_cgroup *h_cg,
315 if (hugetlb_cgroup_disabled() || !h_cg)
318 __set_hugetlb_cgroup(folio, h_cg, rsvd);
321 h_cg->nodeinfo[folio_nid(folio)]->usage[idx];
327 WRITE_ONCE(h_cg->nodeinfo[folio_nid(folio)]->usage[idx],
333 struct hugetlb_cgroup *h_cg,
336 __hugetlb_cgroup_commit_charge(idx, nr_pages, h_cg, folio, false);
340 struct hugetlb_cgroup *h_cg,
343 __hugetlb_cgroup_commit_charge(idx, nr_pages, h_cg, folio, true);
352 struct hugetlb_cgroup *h_cg;
357 h_cg = __hugetlb_cgroup_from_folio(folio, rsvd);
358 if (unlikely(!h_cg))
362 page_counter_uncharge(__hugetlb_cgroup_counter_from_cgroup(h_cg, idx,
367 css_put(&h_cg->css);
370 h_cg->nodeinfo[folio_nid(folio)]->usage[idx];
376 WRITE_ONCE(h_cg->nodeinfo[folio_nid(folio)]->usage[idx],
394 struct hugetlb_cgroup *h_cg,
397 if (hugetlb_cgroup_disabled() || !h_cg)
403 page_counter_uncharge(__hugetlb_cgroup_counter_from_cgroup(h_cg, idx,
408 css_put(&h_cg->css);
412 struct hugetlb_cgroup *h_cg)
414 __hugetlb_cgroup_uncharge_cgroup(idx, nr_pages, h_cg, false);
418 struct hugetlb_cgroup *h_cg)
420 __hugetlb_cgroup_uncharge_cgroup(idx, nr_pages, h_cg, true);
473 struct hugetlb_cgroup *h_cg = hugetlb_cgroup_from_css(seq_css(seq));
481 usage += READ_ONCE(h_cg->nodeinfo[nid]->usage[idx]);
487 READ_ONCE(h_cg->nodeinfo[nid]->usage[idx]) *
497 page_counter_read(&h_cg->hugepage[idx]) * PAGE_SIZE);
506 css_for_each_descendant_pre(css, &h_cg->css) {
525 struct hugetlb_cgroup *h_cg = hugetlb_cgroup_from_css(css);
527 counter = &h_cg->hugepage[MEMFILE_IDX(cft->private)];
528 rsvd_counter = &h_cg->rsvd_hugepage[MEMFILE_IDX(cft->private)];
559 struct hugetlb_cgroup *h_cg = hugetlb_cgroup_from_css(seq_css(seq));
562 counter = &h_cg->hugepage[idx];
569 counter = &h_cg->rsvd_hugepage[idx];
576 counter = &h_cg->rsvd_hugepage[idx];
600 struct hugetlb_cgroup *h_cg = hugetlb_cgroup_from_css(of_css(of));
603 if (hugetlb_cgroup_is_root(h_cg)) /* Can't set limit on root */
621 __hugetlb_cgroup_counter_from_cgroup(h_cg, idx, rsvd),
649 struct hugetlb_cgroup *h_cg = hugetlb_cgroup_from_css(of_css(of));
651 counter = &h_cg->hugepage[MEMFILE_IDX(of_cft(of)->private)];
652 rsvd_counter = &h_cg->rsvd_hugepage[MEMFILE_IDX(of_cft(of)->private)];
690 struct hugetlb_cgroup *h_cg = hugetlb_cgroup_from_css(seq_css(seq));
695 max = atomic_long_read(&h_cg->events_local[idx][HUGETLB_MAX]);
697 max = atomic_long_read(&h_cg->events[idx][HUGETLB_MAX]);
889 struct hugetlb_cgroup *h_cg;
897 h_cg = hugetlb_cgroup_from_folio(old_folio);
902 /* move the h_cg details to new cgroup */
903 set_hugetlb_cgroup(new_folio, h_cg);