From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by smtp.lore.kernel.org (Postfix) with ESMTP id 6A3F4C7EE39 for ; Sun, 29 Jun 2025 06:48:38 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 6A3676B0089; Sun, 29 Jun 2025 02:48:37 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 67A6D6B008A; Sun, 29 Jun 2025 02:48:37 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 590636B0092; Sun, 29 Jun 2025 02:48:37 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0017.hostedemail.com [216.40.44.17]) by kanga.kvack.org (Postfix) with ESMTP id 468C06B0089 for ; Sun, 29 Jun 2025 02:48:37 -0400 (EDT) Received: from smtpin16.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay07.hostedemail.com (Postfix) with ESMTP id BF3C2160782 for ; Sun, 29 Jun 2025 06:48:36 +0000 (UTC) X-FDA: 83607509832.16.0F13E6D Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.133.124]) by imf18.hostedemail.com (Postfix) with ESMTP id 87E361C0008 for ; Sun, 29 Jun 2025 06:48:34 +0000 (UTC) Authentication-Results: imf18.hostedemail.com; dkim=pass header.d=redhat.com header.s=mimecast20190719 header.b=ZLF5p0Lt; spf=pass (imf18.hostedemail.com: domain of npache@redhat.com designates 170.10.133.124 as permitted sender) smtp.mailfrom=npache@redhat.com; dmarc=pass (policy=quarantine) header.from=redhat.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1751179714; h=from:from:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:mime-version:mime-version: content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=P6mktgM6+MmVaHytEpAMM+qdx8QznZfzldVcD0zz/aI=; b=bBJyHgz3328JrJM/TH8TNTtgoEm7Y6pr0CI909GHA5wlyhWvLXR41G6zd2t9KUxoly4zuD +OfKxiBIVOX13z3R8jj8JpCIMercvqmiTj4d8L7xRzAc2LZzYxuSw32rYyaVR/TcSxm47b 8TrjhDuB+byDJH5Ff3FH4KbU0Yh3Hts= ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1751179714; a=rsa-sha256; cv=none; b=svwdKIUK+tN6bTli0ob11HA5DB+JwKqId6bXj/CmckXpPk+rAwlSlNVD0rc9ML33nFL/bb rJY7F756nOpsQ/LSS7ybm4j3ioTiuk1NFVyxPt6KCxeNf1eXgnuZo0zgJ4PnUUpC07HUSx np1AccHXdPwOrEwKGv7DixCVf5fM13Y= ARC-Authentication-Results: i=1; imf18.hostedemail.com; dkim=pass header.d=redhat.com header.s=mimecast20190719 header.b=ZLF5p0Lt; spf=pass (imf18.hostedemail.com: domain of npache@redhat.com designates 170.10.133.124 as permitted sender) smtp.mailfrom=npache@redhat.com; dmarc=pass (policy=quarantine) header.from=redhat.com DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1751179713; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=P6mktgM6+MmVaHytEpAMM+qdx8QznZfzldVcD0zz/aI=; b=ZLF5p0LtFliy28hcY17UsjV/549k0gmNeInULmCElSgx7Ksogze4HzOlf0dyuRP5VHLxy+ NkEc4LmvtPN45nVl2ssBAGTgW6fUb85sg2FT94N0F5myuG7yiJftZrdbb54Ypk1NZTPN6b LN8cpJy2tdZS/aymWsPz1kzLDgez5Bk= Received: from mail-yw1-f200.google.com (mail-yw1-f200.google.com [209.85.128.200]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-322-T-PlFGWfNfCzPCGbHDLrCQ-1; Sun, 29 Jun 2025 02:48:32 -0400 X-MC-Unique: T-PlFGWfNfCzPCGbHDLrCQ-1 X-Mimecast-MFC-AGG-ID: T-PlFGWfNfCzPCGbHDLrCQ_1751179712 Received: by mail-yw1-f200.google.com with SMTP id 00721157ae682-7111d608131so16701207b3.1 for ; Sat, 28 Jun 2025 23:48:32 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1751179712; x=1751784512; h=content-transfer-encoding:to:subject:message-id:date:from :in-reply-to:references:mime-version:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=P6mktgM6+MmVaHytEpAMM+qdx8QznZfzldVcD0zz/aI=; b=WZXWr91hoItTx/cNs44w+G8nGDvXxzhHOqTqgRciCvGtee2JZMqVFNUvVM8bLpEl03 4ogwLozU5YVH96bPKbCvkJHL0CkMu7b3deyTZv+EX7sfYca7NIs47T5rSo7SMQFHPpGK /PkxScZZeSrv2NMpyfXNPnD13fRVGBZ01EXfUYWq1Lnyk/w1bgaphbbL2aqyUc9ewCQu gnEeckKU0yE+PGip4KTeby39fbZi0AfIjLAEPuplUNpHwtCEAx3kUuAx5Qd9NjsDsIfk uRmDZHUEhjhBCk27S1ThXGjgRtWSljdYMZu6viVVrB7uZaqCL0KIq1fFz761Gv2gy+Ra DCpw== X-Forwarded-Encrypted: i=1; AJvYcCXBkax69dTZSB5kTSTs9HNqggCQIXrLLTzAB+aMhiPGZOoKTpudKKDa99g6CAgjy7WThWsfst2W8g==@kvack.org X-Gm-Message-State: AOJu0Yw2oRbM2j4zCdVNMEUGRh8AtaYQNoRi/ufIyX2hunK5b1PTW6lZ AWfWALH2Qivj+LPhCIc06I3ckTOOwtM74WiMjONhimHMjMZB6bQJLZaOwifm656iOXIu2s8jAvU f+RygH72+Fy8eNL42F/hfRv3Ex3XU7JyiYK+8inwMxM8Fxa8kvFbuKsgQDoChs1xsTyLyMCxuQC IGZhyIlJYoaRGDygoUE2ivQRTy+e8= X-Gm-Gg: ASbGnctGYZafDPuTCHc/BkSMInPpKmzqp+r9RI5brM0wBwcGMIBRBB/VNdvN8fvpYtg is9w2oN1H7CNQynnVhRguu64LoWzNxhOGtwNLvChT4o2Kn6EEQxeRCZz+BzsOWo4nPJL1jRviUK QtHCbYtg== X-Received: by 2002:a05:690c:61c2:b0:70f:84c8:311a with SMTP id 00721157ae682-7151713d1a6mr133727527b3.5.1751179711760; Sat, 28 Jun 2025 23:48:31 -0700 (PDT) X-Google-Smtp-Source: AGHT+IHRQbpojGgiAkQ7Ac7AxkhV+xB+GtuRKr4Wp9yAF0gg/Z4YFPBXAMv/fqRNF7JnWSSQbIuDAanbsoTvVZAp10g= X-Received: by 2002:a05:690c:61c2:b0:70f:84c8:311a with SMTP id 00721157ae682-7151713d1a6mr133727177b3.5.1751179711336; Sat, 28 Jun 2025 23:48:31 -0700 (PDT) MIME-Version: 1.0 References: <20250515032226.128900-1-npache@redhat.com> <20250515032226.128900-2-npache@redhat.com> In-Reply-To: From: Nico Pache Date: Sun, 29 Jun 2025 00:48:04 -0600 X-Gm-Features: Ac12FXwPRqqeSXJYrLqYRGBqWORzrJk_aeEbyURWs0vjZvlYe2C0Hz_e3si4Y_M Message-ID: Subject: Re: [PATCH v7 01/12] khugepaged: rename hpage_collapse_* to khugepaged_* To: "Liam R. Howlett" , Nico Pache , linux-mm@kvack.org, linux-doc@vger.kernel.org, linux-kernel@vger.kernel.org, linux-trace-kernel@vger.kernel.org, david@redhat.com, ziy@nvidia.com, baolin.wang@linux.alibaba.com, lorenzo.stoakes@oracle.com, ryan.roberts@arm.com, dev.jain@arm.com, corbet@lwn.net, rostedt@goodmis.org, mhiramat@kernel.org, mathieu.desnoyers@efficios.com, akpm@linux-foundation.org, baohua@kernel.org, willy@infradead.org, peterx@redhat.com, wangkefeng.wang@huawei.com, usamaarif642@gmail.com, sunnanyong@huawei.com, vishal.moola@gmail.com, thomas.hellstrom@linux.intel.com, yang@os.amperecomputing.com, kirill.shutemov@linux.intel.com, aarcange@redhat.com, raquini@redhat.com, anshuman.khandual@arm.com, catalin.marinas@arm.com, tiwai@suse.de, will@kernel.org, dave.hansen@linux.intel.com, jack@suse.cz, cl@gentwo.org, jglisse@google.com, surenb@google.com, zokeefe@google.com, hannes@cmpxchg.org, rientjes@google.com, mhocko@suse.com, rdunlap@infradead.org X-Mimecast-Spam-Score: 0 X-Mimecast-MFC-PROC-ID: RDWwZFDl64R6xgh2Q0gCySpEjgx0LrYRRf09Q1I8BVQ_1751179712 X-Mimecast-Originator: redhat.com Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-Rspamd-Server: rspam03 X-Rspamd-Queue-Id: 87E361C0008 X-Stat-Signature: qgxz8u6bdoijo8m9ukcu93cio9fwxesx X-Rspam-User: X-HE-Tag: 1751179714-980913 X-HE-Meta: U2FsdGVkX1/8Fhi8ZD4Lt5RVphztosOUKKV9WGcHbarmbcfFuegnwkNLGb9vKX1HcXz3tW6gT0MAqtdtjRori2HxY/ALBkl9BkoSjmht/cpljZP3x//HyQ8Zrxm4wIPWN0irh9c6M3FJW7wzgJ4p1Hp+7ZtKIj4b7sSTApCxN4mKK8qo7amvIdO5MCFOi1Kxd8xPwMLKyzeGPVtCwInF/kpqTxzhy7nzpAf4AeV8clQuSsyru79KnwQlPndoQPAbtpCL6D5GqSDvnc+/c2M43vaFIKbRdS/P2UdeOKebUfPow41mnE9M8l3PbwlIaQ+M/oEAfvI99FfTWLUUx1+uXuEwG8Djpi6N2MTKk4LsNqizI6FGlO0n+JXFHdbZrZt7CB8ahxTh4psb7L4DLe8XgEecSYhdF6i6z7T5pAI3VooqOYJ08IoKNj5vo0iemTakJIwGZOr+F6JlOmEZ/afDDssiwAVKNv/+PIDn7wEqviK90ypQD8RddyI8PrA4o7Gp9IAMkBNJSr4uWQl0d6VVCJmmB4zj2iBILgLfGoRaiVcBHztkR6iHfmT0D2ChHsaafhFt7IDsmp1VIsUvxfZxLxDQeVUJ2Cci8QMl+27HNiDszvMUNIqxFKjgOIGso8Z1T59GeUcxR8I1dKOwYV7jgxqB/4l7CX2/DfdxiV8t5t9bVq8/76nzvrU6i3zJuvyhfZWzMcOws9vDS8JI45nE+qCfFkBQYc3dYGHXZzV6gBjKS2yDBOrrfPsb43UC9WhpsvGxTYqDGPZWlMdoV+gURqB+T2UMfc+qfP8u4sIr8CyIzVy8UI5OLhqd0h8ach9UlP4sgRNIefESUuMEnqQsuICO201mTwBkIgIfCAtdRsa455dlnPIfZQlt1VVWYDRKOe/ioiLJCvibD2zRhYjiODIDpDiCadPN7sGKa+gW46qd6dRPdFaFvUsSdK/P5cD69pM2TIKhHy7pUZ/i32G sZGh8gUS wekj8qi0elOTB+LeUVhT5UY9KrnrIiLyAr1PNyuK93lcIWYoh6/47g+Qbkapl2vDkEA6zT25ZwHQgdKky2A62FSkFeNVhaJ7cp6CnE2NVtoEMSXYN1l0Yq3x1cw2usU5QCw83NflfMuvHS1roF7HWMTzTwQhRNvi+cj5aFue2FtAroGBrrRdqjLf49+fy6en+cHjFTao27xcolLcp5grEQPy+u1SVsjDnCpgrrNaOPZ6QjvXEQVphUGcOMvCVESyt5XXtJZIgodL5xVBG+7lfRWdqKYy/fZhvxoUj5NTCKraTuBE2VRsIk7u8IRvQTZ3K5WQuD2A0sAG3CI9WdU9C5yRoEQuTH3HPd/iC5u5pb4c5fpArKIFDH2kcAl/h+HcBi/9a8TVCWNgB9QrOCvYNFJ8oHmJofNy7E0z2DDw/yRTRTRZkU8C2BRNdLDOyXjQsfDpAN5nVXQmd3msXgZMiNFSOiwV4vXenWkJZ88+mXXhZgVtXavFW5iFFBA== X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: List-Subscribe: List-Unsubscribe: On Fri, May 16, 2025 at 11:36=E2=80=AFAM Liam R. Howlett wrote: > > * Nico Pache [250514 23:23]: > > functions in khugepaged.c use a mix of hpage_collapse and khugepaged > > as the function prefix. > > > > rename all of them to khugepaged to keep things consistent and slightly > > shorten the function names. > > I don't like what was done here, we've lost the context of what these > functions are used for (collapse). Are they used for other things > besides collapse? Hi Liam, Most of the renamed functions are used by the daemon to determine the state of the khugepaged operations. You could argue that madvise_collapse is not part of the daemon, and a couple of them are both khugepaged and madvise_collapse, but what I do in the subsequent patch is *mostly* unify madvise_collapse and khugepaged. I personally believe this rename makes sense (and it was recommended by David H.) -- Nico > > I'd rather drop the prefix entirely than drop collapse from them all. > They are all static, so do we really need khugepaged_ at the start of > every static function in khugepaged.c? > > > > > > Reviewed-by: Zi Yan > > Reviewed-by: Baolin Wang > > Signed-off-by: Nico Pache > > --- > > mm/khugepaged.c | 42 +++++++++++++++++++++--------------------- > > 1 file changed, 21 insertions(+), 21 deletions(-) > > > > diff --git a/mm/khugepaged.c b/mm/khugepaged.c > > index cdf5a581368b..806bcd8c5185 100644 > > --- a/mm/khugepaged.c > > +++ b/mm/khugepaged.c > > @@ -402,14 +402,14 @@ void __init khugepaged_destroy(void) > > kmem_cache_destroy(mm_slot_cache); > > } > > > > -static inline int hpage_collapse_test_exit(struct mm_struct *mm) > > +static inline int khugepaged_test_exit(struct mm_struct *mm) > > { > > return atomic_read(&mm->mm_users) =3D=3D 0; > > } > > > > -static inline int hpage_collapse_test_exit_or_disable(struct mm_struct= *mm) > > +static inline int khugepaged_test_exit_or_disable(struct mm_struct *mm= ) > > { > > - return hpage_collapse_test_exit(mm) || > > + return khugepaged_test_exit(mm) || > > test_bit(MMF_DISABLE_THP, &mm->flags); > > } > > > > @@ -444,7 +444,7 @@ void __khugepaged_enter(struct mm_struct *mm) > > int wakeup; > > > > /* __khugepaged_exit() must not run from under us */ > > - VM_BUG_ON_MM(hpage_collapse_test_exit(mm), mm); > > + VM_BUG_ON_MM(khugepaged_test_exit(mm), mm); > > if (unlikely(test_and_set_bit(MMF_VM_HUGEPAGE, &mm->flags))) > > return; > > > > @@ -503,7 +503,7 @@ void __khugepaged_exit(struct mm_struct *mm) > > } else if (mm_slot) { > > /* > > * This is required to serialize against > > - * hpage_collapse_test_exit() (which is guaranteed to run > > + * khugepaged_test_exit() (which is guaranteed to run > > * under mmap sem read mode). Stop here (after we return = all > > * pagetables will be destroyed) until khugepaged has fin= ished > > * working on the pagetables under the mmap_lock. > > @@ -851,7 +851,7 @@ struct collapse_control khugepaged_collapse_control= =3D { > > .is_khugepaged =3D true, > > }; > > > > -static bool hpage_collapse_scan_abort(int nid, struct collapse_control= *cc) > > +static bool khugepaged_scan_abort(int nid, struct collapse_control *cc= ) > > { > > int i; > > > > @@ -886,7 +886,7 @@ static inline gfp_t alloc_hugepage_khugepaged_gfpma= sk(void) > > } > > > > #ifdef CONFIG_NUMA > > -static int hpage_collapse_find_target_node(struct collapse_control *cc= ) > > +static int khugepaged_find_target_node(struct collapse_control *cc) > > { > > int nid, target_node =3D 0, max_value =3D 0; > > > > @@ -905,7 +905,7 @@ static int hpage_collapse_find_target_node(struct c= ollapse_control *cc) > > return target_node; > > } > > #else > > -static int hpage_collapse_find_target_node(struct collapse_control *cc= ) > > +static int khugepaged_find_target_node(struct collapse_control *cc) > > { > > return 0; > > } > > @@ -925,7 +925,7 @@ static int hugepage_vma_revalidate(struct mm_struct= *mm, unsigned long address, > > struct vm_area_struct *vma; > > unsigned long tva_flags =3D cc->is_khugepaged ? TVA_ENFORCE_SYSFS= : 0; > > > > - if (unlikely(hpage_collapse_test_exit_or_disable(mm))) > > + if (unlikely(khugepaged_test_exit_or_disable(mm))) > > return SCAN_ANY_PROCESS; > > > > *vmap =3D vma =3D find_vma(mm, address); > > @@ -992,7 +992,7 @@ static int check_pmd_still_valid(struct mm_struct *= mm, > > > > /* > > * Bring missing pages in from swap, to complete THP collapse. > > - * Only done if hpage_collapse_scan_pmd believes it is worthwhile. > > + * Only done if khugepaged_scan_pmd believes it is worthwhile. > > * > > * Called and returns without pte mapped or spinlocks held. > > * Returns result: if not SCAN_SUCCEED, mmap_lock has been released. > > @@ -1078,7 +1078,7 @@ static int alloc_charge_folio(struct folio **foli= op, struct mm_struct *mm, > > { > > gfp_t gfp =3D (cc->is_khugepaged ? alloc_hugepage_khugepaged_gfpm= ask() : > > GFP_TRANSHUGE); > > - int node =3D hpage_collapse_find_target_node(cc); > > + int node =3D khugepaged_find_target_node(cc); > > struct folio *folio; > > > > folio =3D __folio_alloc(gfp, HPAGE_PMD_ORDER, node, &cc->alloc_nm= ask); > > @@ -1264,7 +1264,7 @@ static int collapse_huge_page(struct mm_struct *m= m, unsigned long address, > > return result; > > } > > > > -static int hpage_collapse_scan_pmd(struct mm_struct *mm, > > +static int khugepaged_scan_pmd(struct mm_struct *mm, > > struct vm_area_struct *vma, > > unsigned long address, bool *mmap_lock= ed, > > struct collapse_control *cc) > > @@ -1378,7 +1378,7 @@ static int hpage_collapse_scan_pmd(struct mm_stru= ct *mm, > > * hit record. > > */ > > node =3D folio_nid(folio); > > - if (hpage_collapse_scan_abort(node, cc)) { > > + if (khugepaged_scan_abort(node, cc)) { > > result =3D SCAN_SCAN_ABORT; > > goto out_unmap; > > } > > @@ -1447,7 +1447,7 @@ static void collect_mm_slot(struct khugepaged_mm_= slot *mm_slot) > > > > lockdep_assert_held(&khugepaged_mm_lock); > > > > - if (hpage_collapse_test_exit(mm)) { > > + if (khugepaged_test_exit(mm)) { > > /* free mm_slot */ > > hash_del(&slot->hash); > > list_del(&slot->mm_node); > > @@ -1740,7 +1740,7 @@ static void retract_page_tables(struct address_sp= ace *mapping, pgoff_t pgoff) > > if (find_pmd_or_thp_or_none(mm, addr, &pmd) !=3D SCAN_SUC= CEED) > > continue; > > > > - if (hpage_collapse_test_exit(mm)) > > + if (khugepaged_test_exit(mm)) > > continue; > > /* > > * When a vma is registered with uffd-wp, we cannot recyc= le > > @@ -2262,7 +2262,7 @@ static int collapse_file(struct mm_struct *mm, un= signed long addr, > > return result; > > } > > > > -static int hpage_collapse_scan_file(struct mm_struct *mm, unsigned lon= g addr, > > +static int khugepaged_scan_file(struct mm_struct *mm, unsigned long ad= dr, > > struct file *file, pgoff_t start, > > struct collapse_control *cc) > > { > > @@ -2307,7 +2307,7 @@ static int hpage_collapse_scan_file(struct mm_str= uct *mm, unsigned long addr, > > } > > > > node =3D folio_nid(folio); > > - if (hpage_collapse_scan_abort(node, cc)) { > > + if (khugepaged_scan_abort(node, cc)) { > > result =3D SCAN_SCAN_ABORT; > > break; > > } > > @@ -2391,7 +2391,7 @@ static unsigned int khugepaged_scan_mm_slot(unsig= ned int pages, int *result, > > goto breakouterloop_mmap_lock; > > > > progress++; > > - if (unlikely(hpage_collapse_test_exit_or_disable(mm))) > > + if (unlikely(khugepaged_test_exit_or_disable(mm))) > > goto breakouterloop; > > > > vma_iter_init(&vmi, mm, khugepaged_scan.address); > > @@ -2399,7 +2399,7 @@ static unsigned int khugepaged_scan_mm_slot(unsig= ned int pages, int *result, > > unsigned long hstart, hend; > > > > cond_resched(); > > - if (unlikely(hpage_collapse_test_exit_or_disable(mm))) { > > + if (unlikely(khugepaged_test_exit_or_disable(mm))) { > > progress++; > > break; > > } > > @@ -2421,7 +2421,7 @@ static unsigned int khugepaged_scan_mm_slot(unsig= ned int pages, int *result, > > bool mmap_locked =3D true; > > > > cond_resched(); > > - if (unlikely(hpage_collapse_test_exit_or_disable(= mm))) > > + if (unlikely(khugepaged_test_exit_or_disable(mm))= ) > > goto breakouterloop; > > > > VM_BUG_ON(khugepaged_scan.address < hstart || > > @@ -2481,7 +2481,7 @@ static unsigned int khugepaged_scan_mm_slot(unsig= ned int pages, int *result, > > * Release the current mm_slot if this mm is about to die, or > > * if we scanned all vmas of this mm. > > */ > > - if (hpage_collapse_test_exit(mm) || !vma) { > > + if (khugepaged_test_exit(mm) || !vma) { > > /* > > * Make sure that if mm_users is reaching zero while > > * khugepaged runs here, khugepaged_exit will find > > -- > > 2.49.0 > > >