* Re: [PATCH v7 mm-new 01/10] mm: thp: remove disabled task from khugepaged_mm_slot
[not found] <20250910024447.64788-2-laoar.shao@gmail.com>
@ 2025-09-10 17:27 ` kernel test robot
2025-09-11 2:12 ` Lance Yang
0 siblings, 1 reply; 7+ messages in thread
From: kernel test robot @ 2025-09-10 17:27 UTC (permalink / raw)
To: Yafang Shao, akpm, david, ziy, baolin.wang, lorenzo.stoakes,
Liam.Howlett, npache, ryan.roberts, dev.jain, hannes,
usamaarif642, gutierrez.asier, willy, ast, daniel, andrii,
ameryhung, rientjes, corbet, 21cnbao, shakeel.butt
Cc: llvm, oe-kbuild-all, bpf, linux-mm, linux-doc, Yafang Shao,
Lance Yang
Hi Yafang,
kernel test robot noticed the following build errors:
[auto build test ERROR on akpm-mm/mm-everything]
url: https://github.com/intel-lab-lkp/linux/commits/Yafang-Shao/mm-thp-remove-disabled-task-from-khugepaged_mm_slot/20250910-144850
base: https://git.kernel.org/pub/scm/linux/kernel/git/akpm/mm.git mm-everything
patch link: https://lore.kernel.org/r/20250910024447.64788-2-laoar.shao%40gmail.com
patch subject: [PATCH v7 mm-new 01/10] mm: thp: remove disabled task from khugepaged_mm_slot
config: x86_64-allnoconfig (https://download.01.org/0day-ci/archive/20250911/202509110109.PSgSHb31-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/20250911/202509110109.PSgSHb31-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/202509110109.PSgSHb31-lkp@intel.com/
All errors (new ones prefixed by >>):
>> kernel/sys.c:2500:6: error: call to undeclared function 'hugepage_pmd_enabled'; ISO C99 and later do not support implicit function declarations [-Wimplicit-function-declaration]
2500 | hugepage_pmd_enabled())
| ^
>> kernel/sys.c:2501:3: error: call to undeclared function '__khugepaged_enter'; ISO C99 and later do not support implicit function declarations [-Wimplicit-function-declaration]
2501 | __khugepaged_enter(mm);
| ^
2 errors generated.
vim +/hugepage_pmd_enabled +2500 kernel/sys.c
2471
2472 static int prctl_set_thp_disable(bool thp_disable, unsigned long flags,
2473 unsigned long arg4, unsigned long arg5)
2474 {
2475 struct mm_struct *mm = current->mm;
2476
2477 if (arg4 || arg5)
2478 return -EINVAL;
2479
2480 /* Flags are only allowed when disabling. */
2481 if ((!thp_disable && flags) || (flags & ~PR_THP_DISABLE_EXCEPT_ADVISED))
2482 return -EINVAL;
2483 if (mmap_write_lock_killable(current->mm))
2484 return -EINTR;
2485 if (thp_disable) {
2486 if (flags & PR_THP_DISABLE_EXCEPT_ADVISED) {
2487 mm_flags_clear(MMF_DISABLE_THP_COMPLETELY, mm);
2488 mm_flags_set(MMF_DISABLE_THP_EXCEPT_ADVISED, mm);
2489 } else {
2490 mm_flags_set(MMF_DISABLE_THP_COMPLETELY, mm);
2491 mm_flags_clear(MMF_DISABLE_THP_EXCEPT_ADVISED, mm);
2492 }
2493 } else {
2494 mm_flags_clear(MMF_DISABLE_THP_COMPLETELY, mm);
2495 mm_flags_clear(MMF_DISABLE_THP_EXCEPT_ADVISED, mm);
2496 }
2497
2498 if (!mm_flags_test(MMF_DISABLE_THP_COMPLETELY, mm) &&
2499 !mm_flags_test(MMF_VM_HUGEPAGE, mm) &&
> 2500 hugepage_pmd_enabled())
> 2501 __khugepaged_enter(mm);
2502 mmap_write_unlock(current->mm);
2503 return 0;
2504 }
2505
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH v7 mm-new 01/10] mm: thp: remove disabled task from khugepaged_mm_slot
2025-09-10 17:27 ` [PATCH v7 mm-new 01/10] mm: thp: remove disabled task from khugepaged_mm_slot kernel test robot
@ 2025-09-11 2:12 ` Lance Yang
2025-09-11 2:28 ` Zi Yan
0 siblings, 1 reply; 7+ messages in thread
From: Lance Yang @ 2025-09-11 2:12 UTC (permalink / raw)
To: Yafang Shao
Cc: llvm, oe-kbuild-all, bpf, linux-mm, linux-doc, Lance Yang, akpm,
gutierrez.asier, rientjes, andrii, david, ziy, baolin.wang,
Liam.Howlett, ameryhung, ryan.roberts, lorenzo.stoakes,
usamaarif642, willy, corbet, npache, dev.jain, 21cnbao,
shakeel.butt, ast, daniel, hannes, kernel test robot
Hi Yafang,
On 2025/9/11 01:27, kernel test robot wrote:
> Hi Yafang,
>
> kernel test robot noticed the following build errors:
>
> [auto build test ERROR on akpm-mm/mm-everything]
>
> url: https://github.com/intel-lab-lkp/linux/commits/Yafang-Shao/mm-thp-remove-disabled-task-from-khugepaged_mm_slot/20250910-144850
> base: https://git.kernel.org/pub/scm/linux/kernel/git/akpm/mm.git mm-everything
> patch link: https://lore.kernel.org/r/20250910024447.64788-2-laoar.shao%40gmail.com
> patch subject: [PATCH v7 mm-new 01/10] mm: thp: remove disabled task from khugepaged_mm_slot
> config: x86_64-allnoconfig (https://download.01.org/0day-ci/archive/20250911/202509110109.PSgSHb31-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/20250911/202509110109.PSgSHb31-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/202509110109.PSgSHb31-lkp@intel.com/
>
> All errors (new ones prefixed by >>):
>
>>> kernel/sys.c:2500:6: error: call to undeclared function 'hugepage_pmd_enabled'; ISO C99 and later do not support implicit function declarations [-Wimplicit-function-declaration]
> 2500 | hugepage_pmd_enabled())
> | ^
>>> kernel/sys.c:2501:3: error: call to undeclared function '__khugepaged_enter'; ISO C99 and later do not support implicit function declarations [-Wimplicit-function-declaration]
> 2501 | __khugepaged_enter(mm);
> | ^
> 2 errors generated.
Oops, seems like hugepage_pmd_enabled() and __khugepaged_enter() are only
available when CONFIG_TRANSPARENT_HUGEPAGE is enabled ;)
>
>
> vim +/hugepage_pmd_enabled +2500 kernel/sys.c
>
> 2471
> 2472 static int prctl_set_thp_disable(bool thp_disable, unsigned long flags,
> 2473 unsigned long arg4, unsigned long arg5)
> 2474 {
> 2475 struct mm_struct *mm = current->mm;
> 2476
> 2477 if (arg4 || arg5)
> 2478 return -EINVAL;
> 2479
> 2480 /* Flags are only allowed when disabling. */
> 2481 if ((!thp_disable && flags) || (flags & ~PR_THP_DISABLE_EXCEPT_ADVISED))
> 2482 return -EINVAL;
> 2483 if (mmap_write_lock_killable(current->mm))
> 2484 return -EINTR;
> 2485 if (thp_disable) {
> 2486 if (flags & PR_THP_DISABLE_EXCEPT_ADVISED) {
> 2487 mm_flags_clear(MMF_DISABLE_THP_COMPLETELY, mm);
> 2488 mm_flags_set(MMF_DISABLE_THP_EXCEPT_ADVISED, mm);
> 2489 } else {
> 2490 mm_flags_set(MMF_DISABLE_THP_COMPLETELY, mm);
> 2491 mm_flags_clear(MMF_DISABLE_THP_EXCEPT_ADVISED, mm);
> 2492 }
> 2493 } else {
> 2494 mm_flags_clear(MMF_DISABLE_THP_COMPLETELY, mm);
> 2495 mm_flags_clear(MMF_DISABLE_THP_EXCEPT_ADVISED, mm);
> 2496 }
> 2497
> 2498 if (!mm_flags_test(MMF_DISABLE_THP_COMPLETELY, mm) &&
> 2499 !mm_flags_test(MMF_VM_HUGEPAGE, mm) &&
>> 2500 hugepage_pmd_enabled())
>> 2501 __khugepaged_enter(mm);
> 2502 mmap_write_unlock(current->mm);
> 2503 return 0;
> 2504 }
> 2505
So, let's wrap the new logic in an #ifdef CONFIG_TRANSPARENT_HUGEPAGE block.
diff --git a/kernel/sys.c b/kernel/sys.c
index a1c1e8007f2d..c8600e017933 100644
--- a/kernel/sys.c
+++ b/kernel/sys.c
@@ -2495,10 +2495,13 @@ static int prctl_set_thp_disable(bool
thp_disable, unsigned long flags,
mm_flags_clear(MMF_DISABLE_THP_EXCEPT_ADVISED, mm);
}
+#ifdef CONFIG_TRANSPARENT_HUGEPAGE
if (!mm_flags_test(MMF_DISABLE_THP_COMPLETELY, mm) &&
!mm_flags_test(MMF_VM_HUGEPAGE, mm) &&
hugepage_pmd_enabled())
__khugepaged_enter(mm);
+#endif
+
mmap_write_unlock(current->mm);
return 0;
}
Cheers,
Lance
^ permalink raw reply related [flat|nested] 7+ messages in thread
* Re: [PATCH v7 mm-new 01/10] mm: thp: remove disabled task from khugepaged_mm_slot
2025-09-11 2:12 ` Lance Yang
@ 2025-09-11 2:28 ` Zi Yan
2025-09-11 2:35 ` Yafang Shao
` (2 more replies)
0 siblings, 3 replies; 7+ messages in thread
From: Zi Yan @ 2025-09-11 2:28 UTC (permalink / raw)
To: Lance Yang
Cc: Yafang Shao, llvm, oe-kbuild-all, bpf, linux-mm, linux-doc,
Lance Yang, akpm, gutierrez.asier, rientjes, andrii, david,
baolin.wang, Liam.Howlett, ameryhung, ryan.roberts,
lorenzo.stoakes, usamaarif642, willy, corbet, npache, dev.jain,
21cnbao, shakeel.butt, ast, daniel, hannes, kernel test robot
On 10 Sep 2025, at 22:12, Lance Yang wrote:
> Hi Yafang,
>
> On 2025/9/11 01:27, kernel test robot wrote:
>> Hi Yafang,
>>
>> kernel test robot noticed the following build errors:
>>
>> [auto build test ERROR on akpm-mm/mm-everything]
>>
>> url: https://github.com/intel-lab-lkp/linux/commits/Yafang-Shao/mm-thp-remove-disabled-task-from-khugepaged_mm_slot/20250910-144850
>> base: https://git.kernel.org/pub/scm/linux/kernel/git/akpm/mm.git mm-everything
>> patch link: https://lore.kernel.org/r/20250910024447.64788-2-laoar.shao%40gmail.com
>> patch subject: [PATCH v7 mm-new 01/10] mm: thp: remove disabled task from khugepaged_mm_slot
>> config: x86_64-allnoconfig (https://download.01.org/0day-ci/archive/20250911/202509110109.PSgSHb31-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/20250911/202509110109.PSgSHb31-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/202509110109.PSgSHb31-lkp@intel.com/
>>
>> All errors (new ones prefixed by >>):
>>
>>>> kernel/sys.c:2500:6: error: call to undeclared function 'hugepage_pmd_enabled'; ISO C99 and later do not support implicit function declarations [-Wimplicit-function-declaration]
>> 2500 | hugepage_pmd_enabled())
>> | ^
>>>> kernel/sys.c:2501:3: error: call to undeclared function '__khugepaged_enter'; ISO C99 and later do not support implicit function declarations [-Wimplicit-function-declaration]
>> 2501 | __khugepaged_enter(mm);
>> | ^
>> 2 errors generated.
>
> Oops, seems like hugepage_pmd_enabled() and __khugepaged_enter() are only
> available when CONFIG_TRANSPARENT_HUGEPAGE is enabled ;)
>
>>
>>
>> vim +/hugepage_pmd_enabled +2500 kernel/sys.c
>>
>> 2471
>> 2472 static int prctl_set_thp_disable(bool thp_disable, unsigned long flags,
>> 2473 unsigned long arg4, unsigned long arg5)
>> 2474 {
>> 2475 struct mm_struct *mm = current->mm;
>> 2476
>> 2477 if (arg4 || arg5)
>> 2478 return -EINVAL;
>> 2479
>> 2480 /* Flags are only allowed when disabling. */
>> 2481 if ((!thp_disable && flags) || (flags & ~PR_THP_DISABLE_EXCEPT_ADVISED))
>> 2482 return -EINVAL;
>> 2483 if (mmap_write_lock_killable(current->mm))
>> 2484 return -EINTR;
>> 2485 if (thp_disable) {
>> 2486 if (flags & PR_THP_DISABLE_EXCEPT_ADVISED) {
>> 2487 mm_flags_clear(MMF_DISABLE_THP_COMPLETELY, mm);
>> 2488 mm_flags_set(MMF_DISABLE_THP_EXCEPT_ADVISED, mm);
>> 2489 } else {
>> 2490 mm_flags_set(MMF_DISABLE_THP_COMPLETELY, mm);
>> 2491 mm_flags_clear(MMF_DISABLE_THP_EXCEPT_ADVISED, mm);
>> 2492 }
>> 2493 } else {
>> 2494 mm_flags_clear(MMF_DISABLE_THP_COMPLETELY, mm);
>> 2495 mm_flags_clear(MMF_DISABLE_THP_EXCEPT_ADVISED, mm);
>> 2496 }
>> 2497
>> 2498 if (!mm_flags_test(MMF_DISABLE_THP_COMPLETELY, mm) &&
>> 2499 !mm_flags_test(MMF_VM_HUGEPAGE, mm) &&
>>> 2500 hugepage_pmd_enabled())
>>> 2501 __khugepaged_enter(mm);
>> 2502 mmap_write_unlock(current->mm);
>> 2503 return 0;
>> 2504 }
>> 2505
>
> So, let's wrap the new logic in an #ifdef CONFIG_TRANSPARENT_HUGEPAGE block.
>
> diff --git a/kernel/sys.c b/kernel/sys.c
> index a1c1e8007f2d..c8600e017933 100644
> --- a/kernel/sys.c
> +++ b/kernel/sys.c
> @@ -2495,10 +2495,13 @@ static int prctl_set_thp_disable(bool thp_disable, unsigned long flags,
> mm_flags_clear(MMF_DISABLE_THP_EXCEPT_ADVISED, mm);
> }
>
> +#ifdef CONFIG_TRANSPARENT_HUGEPAGE
> if (!mm_flags_test(MMF_DISABLE_THP_COMPLETELY, mm) &&
> !mm_flags_test(MMF_VM_HUGEPAGE, mm) &&
> hugepage_pmd_enabled())
> __khugepaged_enter(mm);
> +#endif
> +
> mmap_write_unlock(current->mm);
> return 0;
> }
Or in the header file,
#ifdef CONFIG_TRANSPARENT_HUGEPAGE
...
#else
bool hugepage_pmd_enabled()
{
return false;
}
int __khugepaged_enter(struct mm_struct *mm)
{
return 0;
}
#endif
Best Regards,
Yan, Zi
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH v7 mm-new 01/10] mm: thp: remove disabled task from khugepaged_mm_slot
2025-09-11 2:28 ` Zi Yan
@ 2025-09-11 2:35 ` Yafang Shao
2025-09-11 2:38 ` Lance Yang
2025-09-11 13:47 ` Lorenzo Stoakes
2 siblings, 0 replies; 7+ messages in thread
From: Yafang Shao @ 2025-09-11 2:35 UTC (permalink / raw)
To: Zi Yan, Lance Yang
Cc: llvm, oe-kbuild-all, bpf, linux-mm, linux-doc, Lance Yang, akpm,
gutierrez.asier, rientjes, andrii, david, baolin.wang,
Liam.Howlett, ameryhung, ryan.roberts, lorenzo.stoakes,
usamaarif642, willy, corbet, npache, dev.jain, 21cnbao,
shakeel.butt, ast, daniel, hannes, kernel test robot
On Thu, Sep 11, 2025 at 10:28 AM Zi Yan <ziy@nvidia.com> wrote:
>
> On 10 Sep 2025, at 22:12, Lance Yang wrote:
>
> > Hi Yafang,
> >
> > On 2025/9/11 01:27, kernel test robot wrote:
> >> Hi Yafang,
> >>
> >> kernel test robot noticed the following build errors:
> >>
> >> [auto build test ERROR on akpm-mm/mm-everything]
> >>
> >> url: https://github.com/intel-lab-lkp/linux/commits/Yafang-Shao/mm-thp-remove-disabled-task-from-khugepaged_mm_slot/20250910-144850
> >> base: https://git.kernel.org/pub/scm/linux/kernel/git/akpm/mm.git mm-everything
> >> patch link: https://lore.kernel.org/r/20250910024447.64788-2-laoar.shao%40gmail.com
> >> patch subject: [PATCH v7 mm-new 01/10] mm: thp: remove disabled task from khugepaged_mm_slot
> >> config: x86_64-allnoconfig (https://download.01.org/0day-ci/archive/20250911/202509110109.PSgSHb31-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/20250911/202509110109.PSgSHb31-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/202509110109.PSgSHb31-lkp@intel.com/
> >>
> >> All errors (new ones prefixed by >>):
> >>
> >>>> kernel/sys.c:2500:6: error: call to undeclared function 'hugepage_pmd_enabled'; ISO C99 and later do not support implicit function declarations [-Wimplicit-function-declaration]
> >> 2500 | hugepage_pmd_enabled())
> >> | ^
> >>>> kernel/sys.c:2501:3: error: call to undeclared function '__khugepaged_enter'; ISO C99 and later do not support implicit function declarations [-Wimplicit-function-declaration]
> >> 2501 | __khugepaged_enter(mm);
> >> | ^
> >> 2 errors generated.
> >
> > Oops, seems like hugepage_pmd_enabled() and __khugepaged_enter() are only
> > available when CONFIG_TRANSPARENT_HUGEPAGE is enabled ;)
> >
> >>
> >>
> >> vim +/hugepage_pmd_enabled +2500 kernel/sys.c
> >>
> >> 2471
> >> 2472 static int prctl_set_thp_disable(bool thp_disable, unsigned long flags,
> >> 2473 unsigned long arg4, unsigned long arg5)
> >> 2474 {
> >> 2475 struct mm_struct *mm = current->mm;
> >> 2476
> >> 2477 if (arg4 || arg5)
> >> 2478 return -EINVAL;
> >> 2479
> >> 2480 /* Flags are only allowed when disabling. */
> >> 2481 if ((!thp_disable && flags) || (flags & ~PR_THP_DISABLE_EXCEPT_ADVISED))
> >> 2482 return -EINVAL;
> >> 2483 if (mmap_write_lock_killable(current->mm))
> >> 2484 return -EINTR;
> >> 2485 if (thp_disable) {
> >> 2486 if (flags & PR_THP_DISABLE_EXCEPT_ADVISED) {
> >> 2487 mm_flags_clear(MMF_DISABLE_THP_COMPLETELY, mm);
> >> 2488 mm_flags_set(MMF_DISABLE_THP_EXCEPT_ADVISED, mm);
> >> 2489 } else {
> >> 2490 mm_flags_set(MMF_DISABLE_THP_COMPLETELY, mm);
> >> 2491 mm_flags_clear(MMF_DISABLE_THP_EXCEPT_ADVISED, mm);
> >> 2492 }
> >> 2493 } else {
> >> 2494 mm_flags_clear(MMF_DISABLE_THP_COMPLETELY, mm);
> >> 2495 mm_flags_clear(MMF_DISABLE_THP_EXCEPT_ADVISED, mm);
> >> 2496 }
> >> 2497
> >> 2498 if (!mm_flags_test(MMF_DISABLE_THP_COMPLETELY, mm) &&
> >> 2499 !mm_flags_test(MMF_VM_HUGEPAGE, mm) &&
> >>> 2500 hugepage_pmd_enabled())
> >>> 2501 __khugepaged_enter(mm);
> >> 2502 mmap_write_unlock(current->mm);
> >> 2503 return 0;
> >> 2504 }
> >> 2505
> >
> > So, let's wrap the new logic in an #ifdef CONFIG_TRANSPARENT_HUGEPAGE block.
> >
> > diff --git a/kernel/sys.c b/kernel/sys.c
> > index a1c1e8007f2d..c8600e017933 100644
> > --- a/kernel/sys.c
> > +++ b/kernel/sys.c
> > @@ -2495,10 +2495,13 @@ static int prctl_set_thp_disable(bool thp_disable, unsigned long flags,
> > mm_flags_clear(MMF_DISABLE_THP_EXCEPT_ADVISED, mm);
> > }
> >
> > +#ifdef CONFIG_TRANSPARENT_HUGEPAGE
> > if (!mm_flags_test(MMF_DISABLE_THP_COMPLETELY, mm) &&
> > !mm_flags_test(MMF_VM_HUGEPAGE, mm) &&
> > hugepage_pmd_enabled())
> > __khugepaged_enter(mm);
> > +#endif
> > +
> > mmap_write_unlock(current->mm);
> > return 0;
> > }
>
> Or in the header file,
>
> #ifdef CONFIG_TRANSPARENT_HUGEPAGE
> ...
> #else
> bool hugepage_pmd_enabled()
> {
> return false;
> }
>
> int __khugepaged_enter(struct mm_struct *mm)
> {
> return 0;
> }
> #endif
Thank you, both. I will address this in the next version.
--
Regards
Yafang
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH v7 mm-new 01/10] mm: thp: remove disabled task from khugepaged_mm_slot
2025-09-11 2:28 ` Zi Yan
2025-09-11 2:35 ` Yafang Shao
@ 2025-09-11 2:38 ` Lance Yang
2025-09-11 13:47 ` Lorenzo Stoakes
2 siblings, 0 replies; 7+ messages in thread
From: Lance Yang @ 2025-09-11 2:38 UTC (permalink / raw)
To: Zi Yan
Cc: Yafang Shao, llvm, oe-kbuild-all, bpf, linux-mm, linux-doc,
Lance Yang, akpm, gutierrez.asier, rientjes, andrii, david,
baolin.wang, Liam.Howlett, ameryhung, ryan.roberts,
lorenzo.stoakes, usamaarif642, willy, corbet, npache, dev.jain,
21cnbao, shakeel.butt, ast, daniel, hannes, kernel test robot
On 2025/9/11 10:28, Zi Yan wrote:
> On 10 Sep 2025, at 22:12, Lance Yang wrote:
>
>> Hi Yafang,
>>
>> On 2025/9/11 01:27, kernel test robot wrote:
>>> Hi Yafang,
>>>
>>> kernel test robot noticed the following build errors:
>>>
>>> [auto build test ERROR on akpm-mm/mm-everything]
>>>
>>> url: https://github.com/intel-lab-lkp/linux/commits/Yafang-Shao/mm-thp-remove-disabled-task-from-khugepaged_mm_slot/20250910-144850
>>> base: https://git.kernel.org/pub/scm/linux/kernel/git/akpm/mm.git mm-everything
>>> patch link: https://lore.kernel.org/r/20250910024447.64788-2-laoar.shao%40gmail.com
>>> patch subject: [PATCH v7 mm-new 01/10] mm: thp: remove disabled task from khugepaged_mm_slot
>>> config: x86_64-allnoconfig (https://download.01.org/0day-ci/archive/20250911/202509110109.PSgSHb31-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/20250911/202509110109.PSgSHb31-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/202509110109.PSgSHb31-lkp@intel.com/
>>>
>>> All errors (new ones prefixed by >>):
>>>
>>>>> kernel/sys.c:2500:6: error: call to undeclared function 'hugepage_pmd_enabled'; ISO C99 and later do not support implicit function declarations [-Wimplicit-function-declaration]
>>> 2500 | hugepage_pmd_enabled())
>>> | ^
>>>>> kernel/sys.c:2501:3: error: call to undeclared function '__khugepaged_enter'; ISO C99 and later do not support implicit function declarations [-Wimplicit-function-declaration]
>>> 2501 | __khugepaged_enter(mm);
>>> | ^
>>> 2 errors generated.
>>
>> Oops, seems like hugepage_pmd_enabled() and __khugepaged_enter() are only
>> available when CONFIG_TRANSPARENT_HUGEPAGE is enabled ;)
>>
>>>
>>>
>>> vim +/hugepage_pmd_enabled +2500 kernel/sys.c
>>>
>>> 2471
>>> 2472 static int prctl_set_thp_disable(bool thp_disable, unsigned long flags,
>>> 2473 unsigned long arg4, unsigned long arg5)
>>> 2474 {
>>> 2475 struct mm_struct *mm = current->mm;
>>> 2476
>>> 2477 if (arg4 || arg5)
>>> 2478 return -EINVAL;
>>> 2479
>>> 2480 /* Flags are only allowed when disabling. */
>>> 2481 if ((!thp_disable && flags) || (flags & ~PR_THP_DISABLE_EXCEPT_ADVISED))
>>> 2482 return -EINVAL;
>>> 2483 if (mmap_write_lock_killable(current->mm))
>>> 2484 return -EINTR;
>>> 2485 if (thp_disable) {
>>> 2486 if (flags & PR_THP_DISABLE_EXCEPT_ADVISED) {
>>> 2487 mm_flags_clear(MMF_DISABLE_THP_COMPLETELY, mm);
>>> 2488 mm_flags_set(MMF_DISABLE_THP_EXCEPT_ADVISED, mm);
>>> 2489 } else {
>>> 2490 mm_flags_set(MMF_DISABLE_THP_COMPLETELY, mm);
>>> 2491 mm_flags_clear(MMF_DISABLE_THP_EXCEPT_ADVISED, mm);
>>> 2492 }
>>> 2493 } else {
>>> 2494 mm_flags_clear(MMF_DISABLE_THP_COMPLETELY, mm);
>>> 2495 mm_flags_clear(MMF_DISABLE_THP_EXCEPT_ADVISED, mm);
>>> 2496 }
>>> 2497
>>> 2498 if (!mm_flags_test(MMF_DISABLE_THP_COMPLETELY, mm) &&
>>> 2499 !mm_flags_test(MMF_VM_HUGEPAGE, mm) &&
>>>> 2500 hugepage_pmd_enabled())
>>>> 2501 __khugepaged_enter(mm);
>>> 2502 mmap_write_unlock(current->mm);
>>> 2503 return 0;
>>> 2504 }
>>> 2505
>>
>> So, let's wrap the new logic in an #ifdef CONFIG_TRANSPARENT_HUGEPAGE block.
>>
>> diff --git a/kernel/sys.c b/kernel/sys.c
>> index a1c1e8007f2d..c8600e017933 100644
>> --- a/kernel/sys.c
>> +++ b/kernel/sys.c
>> @@ -2495,10 +2495,13 @@ static int prctl_set_thp_disable(bool thp_disable, unsigned long flags,
>> mm_flags_clear(MMF_DISABLE_THP_EXCEPT_ADVISED, mm);
>> }
>>
>> +#ifdef CONFIG_TRANSPARENT_HUGEPAGE
>> if (!mm_flags_test(MMF_DISABLE_THP_COMPLETELY, mm) &&
>> !mm_flags_test(MMF_VM_HUGEPAGE, mm) &&
>> hugepage_pmd_enabled())
>> __khugepaged_enter(mm);
>> +#endif
>> +
>> mmap_write_unlock(current->mm);
>> return 0;
>> }
>
> Or in the header file,
>
> #ifdef CONFIG_TRANSPARENT_HUGEPAGE
> ...
> #else
> bool hugepage_pmd_enabled()
> {
> return false;
> }
>
> int __khugepaged_enter(struct mm_struct *mm)
> {
> return 0;
> }
> #endif
Nice. That's a much better approach.
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH v7 mm-new 01/10] mm: thp: remove disabled task from khugepaged_mm_slot
2025-09-11 2:28 ` Zi Yan
2025-09-11 2:35 ` Yafang Shao
2025-09-11 2:38 ` Lance Yang
@ 2025-09-11 13:47 ` Lorenzo Stoakes
2025-09-14 2:48 ` Yafang Shao
2 siblings, 1 reply; 7+ messages in thread
From: Lorenzo Stoakes @ 2025-09-11 13:47 UTC (permalink / raw)
To: Zi Yan
Cc: Lance Yang, Yafang Shao, llvm, oe-kbuild-all, bpf, linux-mm,
linux-doc, Lance Yang, akpm, gutierrez.asier, rientjes, andrii,
david, baolin.wang, Liam.Howlett, ameryhung, ryan.roberts,
usamaarif642, willy, corbet, npache, dev.jain, 21cnbao,
shakeel.butt, ast, daniel, hannes, kernel test robot
On Wed, Sep 10, 2025 at 10:28:30PM -0400, Zi Yan wrote:
> On 10 Sep 2025, at 22:12, Lance Yang wrote:
>
> > Hi Yafang,
> >
> > On 2025/9/11 01:27, kernel test robot wrote:
> >> Hi Yafang,
> >>
> >> kernel test robot noticed the following build errors:
> >>
> >> [auto build test ERROR on akpm-mm/mm-everything]
> >>
> >> url: https://github.com/intel-lab-lkp/linux/commits/Yafang-Shao/mm-thp-remove-disabled-task-from-khugepaged_mm_slot/20250910-144850
> >> base: https://git.kernel.org/pub/scm/linux/kernel/git/akpm/mm.git mm-everything
> >> patch link: https://lore.kernel.org/r/20250910024447.64788-2-laoar.shao%40gmail.com
> >> patch subject: [PATCH v7 mm-new 01/10] mm: thp: remove disabled task from khugepaged_mm_slot
> >> config: x86_64-allnoconfig (https://download.01.org/0day-ci/archive/20250911/202509110109.PSgSHb31-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/20250911/202509110109.PSgSHb31-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/202509110109.PSgSHb31-lkp@intel.com/
> >>
> >> All errors (new ones prefixed by >>):
> >>
> >>>> kernel/sys.c:2500:6: error: call to undeclared function 'hugepage_pmd_enabled'; ISO C99 and later do not support implicit function declarations [-Wimplicit-function-declaration]
> >> 2500 | hugepage_pmd_enabled())
> >> | ^
> >>>> kernel/sys.c:2501:3: error: call to undeclared function '__khugepaged_enter'; ISO C99 and later do not support implicit function declarations [-Wimplicit-function-declaration]
> >> 2501 | __khugepaged_enter(mm);
> >> | ^
> >> 2 errors generated.
> >
> > Oops, seems like hugepage_pmd_enabled() and __khugepaged_enter() are only
> > available when CONFIG_TRANSPARENT_HUGEPAGE is enabled ;)
> >
> >>
> >>
> >> vim +/hugepage_pmd_enabled +2500 kernel/sys.c
> >>
> >> 2471
> >> 2472 static int prctl_set_thp_disable(bool thp_disable, unsigned long flags,
> >> 2473 unsigned long arg4, unsigned long arg5)
> >> 2474 {
> >> 2475 struct mm_struct *mm = current->mm;
> >> 2476
> >> 2477 if (arg4 || arg5)
> >> 2478 return -EINVAL;
> >> 2479
> >> 2480 /* Flags are only allowed when disabling. */
> >> 2481 if ((!thp_disable && flags) || (flags & ~PR_THP_DISABLE_EXCEPT_ADVISED))
> >> 2482 return -EINVAL;
> >> 2483 if (mmap_write_lock_killable(current->mm))
> >> 2484 return -EINTR;
> >> 2485 if (thp_disable) {
> >> 2486 if (flags & PR_THP_DISABLE_EXCEPT_ADVISED) {
> >> 2487 mm_flags_clear(MMF_DISABLE_THP_COMPLETELY, mm);
> >> 2488 mm_flags_set(MMF_DISABLE_THP_EXCEPT_ADVISED, mm);
> >> 2489 } else {
> >> 2490 mm_flags_set(MMF_DISABLE_THP_COMPLETELY, mm);
> >> 2491 mm_flags_clear(MMF_DISABLE_THP_EXCEPT_ADVISED, mm);
> >> 2492 }
> >> 2493 } else {
> >> 2494 mm_flags_clear(MMF_DISABLE_THP_COMPLETELY, mm);
> >> 2495 mm_flags_clear(MMF_DISABLE_THP_EXCEPT_ADVISED, mm);
> >> 2496 }
> >> 2497
> >> 2498 if (!mm_flags_test(MMF_DISABLE_THP_COMPLETELY, mm) &&
> >> 2499 !mm_flags_test(MMF_VM_HUGEPAGE, mm) &&
> >>> 2500 hugepage_pmd_enabled())
> >>> 2501 __khugepaged_enter(mm);
> >> 2502 mmap_write_unlock(current->mm);
> >> 2503 return 0;
> >> 2504 }
> >> 2505
> >
> > So, let's wrap the new logic in an #ifdef CONFIG_TRANSPARENT_HUGEPAGE block.
> >
> > diff --git a/kernel/sys.c b/kernel/sys.c
> > index a1c1e8007f2d..c8600e017933 100644
> > --- a/kernel/sys.c
> > +++ b/kernel/sys.c
> > @@ -2495,10 +2495,13 @@ static int prctl_set_thp_disable(bool thp_disable, unsigned long flags,
> > mm_flags_clear(MMF_DISABLE_THP_EXCEPT_ADVISED, mm);
> > }
> >
> > +#ifdef CONFIG_TRANSPARENT_HUGEPAGE
> > if (!mm_flags_test(MMF_DISABLE_THP_COMPLETELY, mm) &&
> > !mm_flags_test(MMF_VM_HUGEPAGE, mm) &&
> > hugepage_pmd_enabled())
> > __khugepaged_enter(mm);
> > +#endif
> > +
> > mmap_write_unlock(current->mm);
> > return 0;
> > }
>
> Or in the header file,
>
> #ifdef CONFIG_TRANSPARENT_HUGEPAGE
> ...
> #else
> bool hugepage_pmd_enabled()
> {
> return false;
> }
>
> int __khugepaged_enter(struct mm_struct *mm)
> {
> return 0;
> }
It seems we have a convention of just not implementing things here if they're
necessarily used in core code paths (and _with my suggested change_) it's _just_
khugepaged that's invoking them).
Anyway with my suggestion we can fix this entirely with:
#ifdef CONFIG_TRANSPARENT_HUGEPAGE
void khugepaged_enter_mm(struct mm_struct *mm);
#else
void khugepaged_enter_mm(struct mm_struct *mm)
{
}
#endif
Cheers, Lorenzo
> #endif
>
> Best Regards,
> Yan, Zi
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH v7 mm-new 01/10] mm: thp: remove disabled task from khugepaged_mm_slot
2025-09-11 13:47 ` Lorenzo Stoakes
@ 2025-09-14 2:48 ` Yafang Shao
0 siblings, 0 replies; 7+ messages in thread
From: Yafang Shao @ 2025-09-14 2:48 UTC (permalink / raw)
To: Lorenzo Stoakes
Cc: Zi Yan, Lance Yang, llvm, oe-kbuild-all, bpf, linux-mm, linux-doc,
Lance Yang, akpm, gutierrez.asier, rientjes, andrii, david,
baolin.wang, Liam.Howlett, ameryhung, ryan.roberts, usamaarif642,
willy, corbet, npache, dev.jain, 21cnbao, shakeel.butt, ast,
daniel, hannes, kernel test robot
On Thu, Sep 11, 2025 at 9:47 PM Lorenzo Stoakes
<lorenzo.stoakes@oracle.com> wrote:
>
> On Wed, Sep 10, 2025 at 10:28:30PM -0400, Zi Yan wrote:
> > On 10 Sep 2025, at 22:12, Lance Yang wrote:
> >
> > > Hi Yafang,
> > >
> > > On 2025/9/11 01:27, kernel test robot wrote:
> > >> Hi Yafang,
> > >>
> > >> kernel test robot noticed the following build errors:
> > >>
> > >> [auto build test ERROR on akpm-mm/mm-everything]
> > >>
> > >> url: https://github.com/intel-lab-lkp/linux/commits/Yafang-Shao/mm-thp-remove-disabled-task-from-khugepaged_mm_slot/20250910-144850
> > >> base: https://git.kernel.org/pub/scm/linux/kernel/git/akpm/mm.git mm-everything
> > >> patch link: https://lore.kernel.org/r/20250910024447.64788-2-laoar.shao%40gmail.com
> > >> patch subject: [PATCH v7 mm-new 01/10] mm: thp: remove disabled task from khugepaged_mm_slot
> > >> config: x86_64-allnoconfig (https://download.01.org/0day-ci/archive/20250911/202509110109.PSgSHb31-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/20250911/202509110109.PSgSHb31-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/202509110109.PSgSHb31-lkp@intel.com/
> > >>
> > >> All errors (new ones prefixed by >>):
> > >>
> > >>>> kernel/sys.c:2500:6: error: call to undeclared function 'hugepage_pmd_enabled'; ISO C99 and later do not support implicit function declarations [-Wimplicit-function-declaration]
> > >> 2500 | hugepage_pmd_enabled())
> > >> | ^
> > >>>> kernel/sys.c:2501:3: error: call to undeclared function '__khugepaged_enter'; ISO C99 and later do not support implicit function declarations [-Wimplicit-function-declaration]
> > >> 2501 | __khugepaged_enter(mm);
> > >> | ^
> > >> 2 errors generated.
> > >
> > > Oops, seems like hugepage_pmd_enabled() and __khugepaged_enter() are only
> > > available when CONFIG_TRANSPARENT_HUGEPAGE is enabled ;)
> > >
> > >>
> > >>
> > >> vim +/hugepage_pmd_enabled +2500 kernel/sys.c
> > >>
> > >> 2471
> > >> 2472 static int prctl_set_thp_disable(bool thp_disable, unsigned long flags,
> > >> 2473 unsigned long arg4, unsigned long arg5)
> > >> 2474 {
> > >> 2475 struct mm_struct *mm = current->mm;
> > >> 2476
> > >> 2477 if (arg4 || arg5)
> > >> 2478 return -EINVAL;
> > >> 2479
> > >> 2480 /* Flags are only allowed when disabling. */
> > >> 2481 if ((!thp_disable && flags) || (flags & ~PR_THP_DISABLE_EXCEPT_ADVISED))
> > >> 2482 return -EINVAL;
> > >> 2483 if (mmap_write_lock_killable(current->mm))
> > >> 2484 return -EINTR;
> > >> 2485 if (thp_disable) {
> > >> 2486 if (flags & PR_THP_DISABLE_EXCEPT_ADVISED) {
> > >> 2487 mm_flags_clear(MMF_DISABLE_THP_COMPLETELY, mm);
> > >> 2488 mm_flags_set(MMF_DISABLE_THP_EXCEPT_ADVISED, mm);
> > >> 2489 } else {
> > >> 2490 mm_flags_set(MMF_DISABLE_THP_COMPLETELY, mm);
> > >> 2491 mm_flags_clear(MMF_DISABLE_THP_EXCEPT_ADVISED, mm);
> > >> 2492 }
> > >> 2493 } else {
> > >> 2494 mm_flags_clear(MMF_DISABLE_THP_COMPLETELY, mm);
> > >> 2495 mm_flags_clear(MMF_DISABLE_THP_EXCEPT_ADVISED, mm);
> > >> 2496 }
> > >> 2497
> > >> 2498 if (!mm_flags_test(MMF_DISABLE_THP_COMPLETELY, mm) &&
> > >> 2499 !mm_flags_test(MMF_VM_HUGEPAGE, mm) &&
> > >>> 2500 hugepage_pmd_enabled())
> > >>> 2501 __khugepaged_enter(mm);
> > >> 2502 mmap_write_unlock(current->mm);
> > >> 2503 return 0;
> > >> 2504 }
> > >> 2505
> > >
> > > So, let's wrap the new logic in an #ifdef CONFIG_TRANSPARENT_HUGEPAGE block.
> > >
> > > diff --git a/kernel/sys.c b/kernel/sys.c
> > > index a1c1e8007f2d..c8600e017933 100644
> > > --- a/kernel/sys.c
> > > +++ b/kernel/sys.c
> > > @@ -2495,10 +2495,13 @@ static int prctl_set_thp_disable(bool thp_disable, unsigned long flags,
> > > mm_flags_clear(MMF_DISABLE_THP_EXCEPT_ADVISED, mm);
> > > }
> > >
> > > +#ifdef CONFIG_TRANSPARENT_HUGEPAGE
> > > if (!mm_flags_test(MMF_DISABLE_THP_COMPLETELY, mm) &&
> > > !mm_flags_test(MMF_VM_HUGEPAGE, mm) &&
> > > hugepage_pmd_enabled())
> > > __khugepaged_enter(mm);
> > > +#endif
> > > +
> > > mmap_write_unlock(current->mm);
> > > return 0;
> > > }
> >
> > Or in the header file,
> >
> > #ifdef CONFIG_TRANSPARENT_HUGEPAGE
> > ...
> > #else
> > bool hugepage_pmd_enabled()
> > {
> > return false;
> > }
> >
> > int __khugepaged_enter(struct mm_struct *mm)
> > {
> > return 0;
> > }
>
> It seems we have a convention of just not implementing things here if they're
> necessarily used in core code paths (and _with my suggested change_) it's _just_
> khugepaged that's invoking them).
>
> Anyway with my suggestion we can fix this entirely with:
>
> #ifdef CONFIG_TRANSPARENT_HUGEPAGE
>
> void khugepaged_enter_mm(struct mm_struct *mm);
>
> #else
>
> void khugepaged_enter_mm(struct mm_struct *mm)
> {
> }
>
> #endif
ack
Thanks for all the suggestions.
--
Regards
Yafang
^ permalink raw reply [flat|nested] 7+ messages in thread
end of thread, other threads:[~2025-09-14 2:49 UTC | newest]
Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
[not found] <20250910024447.64788-2-laoar.shao@gmail.com>
2025-09-10 17:27 ` [PATCH v7 mm-new 01/10] mm: thp: remove disabled task from khugepaged_mm_slot kernel test robot
2025-09-11 2:12 ` Lance Yang
2025-09-11 2:28 ` Zi Yan
2025-09-11 2:35 ` Yafang Shao
2025-09-11 2:38 ` Lance Yang
2025-09-11 13:47 ` Lorenzo Stoakes
2025-09-14 2:48 ` Yafang Shao
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox