[akpm-mm:mm-unstable 154/159] mm/memory-failure.c:1538:9: error: implicit declaration of function 'hugetlb_set_page_hwpoison'

From: kernel test robot
Date: Thu Jun 02 2022 - 20:28:06 EST


tree: https://git.kernel.org/pub/scm/linux/kernel/git/akpm/mm.git mm-unstable
head: 1bdf44dbc966e31c635199d413ee064a7d320844
commit: d4edf38ab95397f32ae017848deeeb3b6d2c5bb7 [154/159] mm, hwpoison, hugetlb: introduce SUBPAGE_INDEX_HWPOISON to save raw error page
config: x86_64-kexec (https://download.01.org/0day-ci/archive/20220603/202206030829.0eS2kZa0-lkp@xxxxxxxxx/config)
compiler: gcc-11 (Debian 11.3.0-1) 11.3.0
reproduce (this is a W=1 build):
# https://git.kernel.org/pub/scm/linux/kernel/git/akpm/mm.git/commit/?id=d4edf38ab95397f32ae017848deeeb3b6d2c5bb7
git remote add akpm-mm https://git.kernel.org/pub/scm/linux/kernel/git/akpm/mm.git
git fetch --no-tags akpm-mm mm-unstable
git checkout d4edf38ab95397f32ae017848deeeb3b6d2c5bb7
# save the config file
mkdir build_dir && cp config build_dir/.config
make W=1 O=build_dir ARCH=x86_64 SHELL=/bin/bash

If you fix the issue, kindly add following tag where applicable
Reported-by: kernel test robot <lkp@xxxxxxxxx>

All errors (new ones prefixed by >>):

mm/memory-failure.c: In function '__get_huge_page_for_hwpoison':
>> mm/memory-failure.c:1538:9: error: implicit declaration of function 'hugetlb_set_page_hwpoison' [-Werror=implicit-function-declaration]
1538 | hugetlb_set_page_hwpoison(head, page);
| ^~~~~~~~~~~~~~~~~~~~~~~~~
cc1: some warnings being treated as errors


vim +/hugetlb_set_page_hwpoison +1538 mm/memory-failure.c

1498
1499 /*
1500 * Called from hugetlb code with hugetlb_lock held.
1501 *
1502 * Return values:
1503 * 0 - free hugepage
1504 * 1 - in-use hugepage
1505 * 2 - not a hugepage
1506 * -EBUSY - the hugepage is busy (try to retry)
1507 * -EHWPOISON - the hugepage is already hwpoisoned
1508 */
1509 int __get_huge_page_for_hwpoison(unsigned long pfn, int flags)
1510 {
1511 struct page *page = pfn_to_page(pfn);
1512 struct page *head = compound_head(page);
1513 int ret = 2; /* fallback to normal page handling */
1514 bool count_increased = false;
1515
1516 if (!PageHeadHuge(head))
1517 goto out;
1518
1519 if (flags & MF_COUNT_INCREASED) {
1520 ret = 1;
1521 count_increased = true;
1522 } else if (HPageFreed(head)) {
1523 ret = 0;
1524 } else if (HPageMigratable(head)) {
1525 ret = get_page_unless_zero(head);
1526 if (ret)
1527 count_increased = true;
1528 } else {
1529 ret = -EBUSY;
1530 goto out;
1531 }
1532
1533 if (TestSetPageHWPoison(head)) {
1534 ret = -EHWPOISON;
1535 goto out;
1536 }
1537
> 1538 hugetlb_set_page_hwpoison(head, page);
1539
1540 return ret;
1541 out:
1542 if (count_increased)
1543 put_page(head);
1544 return ret;
1545 }
1546

--
0-DAY CI Kernel Test Service
https://01.org/lkp