All of lore.kernel.org
 help / color / mirror / Atom feed
* [willy-pagecache:hugetlb-20260728 6/22] mm/memory-failure.c:2751:18: error: use of undeclared identifier 'hugetlb_lock'; did you mean 'hugetlb_walk'?
@ 2026-07-29  8:12 kernel test robot
  0 siblings, 0 replies; only message in thread
From: kernel test robot @ 2026-07-29  8:12 UTC (permalink / raw)
  To: Matthew Wilcox; +Cc: oe-kbuild-all

tree:   git://git.infradead.org/users/willy/pagecache hugetlb-20260728
head:   9d175837a52482ede820b73b06d16914dfe184b9
commit: 4e9ba443c27579c311e9cc43d1ed6d4c01abcccf [6/22] hugetlb: Use the has_hwpoisoned flag
config: x86_64-kexec (https://download.01.org/0day-ci/archive/20260729/202607291537.yk07Dfte-lkp@intel.com/config)
compiler: clang version 22.1.3 (https://github.com/llvm/llvm-project e9846648fd6183ee6d8cbdb4502213fcf902a211)
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20260729/202607291537.yk07Dfte-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/202607291537.yk07Dfte-lkp@intel.com/

All errors (new ones prefixed by >>):

>> mm/memory-failure.c:2751:18: error: use of undeclared identifier 'hugetlb_lock'; did you mean 'hugetlb_walk'?
    2751 |                 spin_lock_irq(&hugetlb_lock);
         |                                ^~~~~~~~~~~~
         |                                hugetlb_walk
   include/linux/hugetlb.h:1349:1: note: 'hugetlb_walk' declared here
    1349 | hugetlb_walk(struct vm_area_struct *vma, unsigned long addr, unsigned long sz)
         | ^
>> mm/memory-failure.c:2751:17: error: incompatible pointer types passing 'pte_t *(*)(struct vm_area_struct *, unsigned long, unsigned long)' to parameter of type 'spinlock_t *' (aka 'struct spinlock *') [-Wincompatible-pointer-types]
    2751 |                 spin_lock_irq(&hugetlb_lock);
         |                               ^~~~~~~~~~~~~
   include/linux/spinlock.h:369:55: note: passing argument to parameter 'lock' here
     369 | static __always_inline void spin_lock_irq(spinlock_t *lock)
         |                                                       ^
   mm/memory-failure.c:2756:22: error: use of undeclared identifier 'hugetlb_lock'; did you mean 'hugetlb_walk'?
    2756 |                                 spin_unlock_irq(&hugetlb_lock);
         |                                                  ^~~~~~~~~~~~
         |                                                  hugetlb_walk
   include/linux/hugetlb.h:1349:1: note: 'hugetlb_walk' declared here
    1349 | hugetlb_walk(struct vm_area_struct *vma, unsigned long addr, unsigned long sz)
         | ^
   mm/memory-failure.c:2756:21: error: incompatible pointer types passing 'pte_t *(*)(struct vm_area_struct *, unsigned long, unsigned long)' to parameter of type 'spinlock_t *' (aka 'struct spinlock *') [-Wincompatible-pointer-types]
    2756 |                                 spin_unlock_irq(&hugetlb_lock);
         |                                                 ^~~~~~~~~~~~~
   include/linux/spinlock.h:399:57: note: passing argument to parameter 'lock' here
     399 | static __always_inline void spin_unlock_irq(spinlock_t *lock)
         |                                                         ^
   mm/memory-failure.c:2763:20: error: use of undeclared identifier 'hugetlb_lock'; did you mean 'hugetlb_walk'?
    2763 |                 spin_unlock_irq(&hugetlb_lock);
         |                                  ^~~~~~~~~~~~
         |                                  hugetlb_walk
   include/linux/hugetlb.h:1349:1: note: 'hugetlb_walk' declared here
    1349 | hugetlb_walk(struct vm_area_struct *vma, unsigned long addr, unsigned long sz)
         | ^
   mm/memory-failure.c:2763:19: error: incompatible pointer types passing 'pte_t *(*)(struct vm_area_struct *, unsigned long, unsigned long)' to parameter of type 'spinlock_t *' (aka 'struct spinlock *') [-Wincompatible-pointer-types]
    2763 |                 spin_unlock_irq(&hugetlb_lock);
         |                                 ^~~~~~~~~~~~~
   include/linux/spinlock.h:399:57: note: passing argument to parameter 'lock' here
     399 | static __always_inline void spin_unlock_irq(spinlock_t *lock)
         |                                                         ^
   6 errors generated.


vim +2751 mm/memory-failure.c

  2677	
  2678	/**
  2679	 * unpoison_memory - Unpoison a previously poisoned page
  2680	 * @pfn: Page number of the to be unpoisoned page
  2681	 *
  2682	 * Software-unpoison a page that has been poisoned by
  2683	 * memory_failure() earlier.
  2684	 *
  2685	 * This is only done on the software-level, so it only works
  2686	 * for linux injected failures, not real hardware failures
  2687	 *
  2688	 * Returns 0 for success, otherwise -errno.
  2689	 */
  2690	int unpoison_memory(unsigned long pfn)
  2691	{
  2692		struct folio *folio;
  2693		struct page *p;
  2694		int ret = -EBUSY, ghp;
  2695		unsigned long count;
  2696		bool huge = false;
  2697		static DEFINE_RATELIMIT_STATE(unpoison_rs, DEFAULT_RATELIMIT_INTERVAL,
  2698						DEFAULT_RATELIMIT_BURST);
  2699	
  2700		p = pfn_to_online_page(pfn);
  2701		if (!p)
  2702			return -EIO;
  2703		folio = page_folio(p);
  2704	
  2705		mutex_lock(&mf_mutex);
  2706	
  2707		if (hw_memory_failure) {
  2708			unpoison_pr_info("%#lx: disabled after HW memory failure\n",
  2709					 pfn, &unpoison_rs);
  2710			ret = -EOPNOTSUPP;
  2711			goto unlock_mutex;
  2712		}
  2713	
  2714		if (is_huge_zero_folio(folio)) {
  2715			unpoison_pr_info("%#lx: huge zero page is not supported\n",
  2716					 pfn, &unpoison_rs);
  2717			ret = -EOPNOTSUPP;
  2718			goto unlock_mutex;
  2719		}
  2720	
  2721		if (!is_page_hwpoison(p)) {
  2722			unpoison_pr_info("%#lx: page is not poisoned\n",
  2723					 pfn, &unpoison_rs);
  2724			goto unlock_mutex;
  2725		}
  2726	
  2727		if (folio_ref_count(folio) > 1) {
  2728			unpoison_pr_info("%#lx: someone grabs the hwpoison page\n",
  2729					 pfn, &unpoison_rs);
  2730			goto unlock_mutex;
  2731		}
  2732	
  2733		if (folio_test_slab(folio) || folio_test_pgtable(folio) ||
  2734		    folio_test_reserved(folio) || folio_test_offline(folio))
  2735			goto unlock_mutex;
  2736	
  2737		if (folio_mapped(folio)) {
  2738			unpoison_pr_info("%#lx: someone maps the hwpoison page\n",
  2739					 pfn, &unpoison_rs);
  2740			goto unlock_mutex;
  2741		}
  2742	
  2743		if (folio_mapping(folio)) {
  2744			unpoison_pr_info("%#lx: the hwpoison page has non-NULL mapping\n",
  2745					 pfn, &unpoison_rs);
  2746			goto unlock_mutex;
  2747		}
  2748	
  2749		ghp = get_hwpoison_page(p, MF_UNPOISON);
  2750		if (!ghp) {
> 2751			spin_lock_irq(&hugetlb_lock);
  2752			if (folio_test_hugetlb(folio)) {
  2753				huge = true;
  2754				count = folio_free_raw_hwp(folio, false);
  2755				if (count == 0) {
  2756					spin_unlock_irq(&hugetlb_lock);
  2757					goto unlock_mutex;
  2758				}
  2759				ret = hugetlb_clear_poison(folio);
  2760			} else {
  2761				ret = TestClearPageHWPoison(p) ? 0 : -EBUSY;
  2762			}
  2763			spin_unlock_irq(&hugetlb_lock);
  2764		} else if (ghp < 0) {
  2765			if (ghp == -EHWPOISON) {
  2766				ret = put_page_back_buddy(p) ? 0 : -EBUSY;
  2767			} else {
  2768				ret = ghp;
  2769				unpoison_pr_info("%#lx: failed to grab page\n",
  2770						 pfn, &unpoison_rs);
  2771			}
  2772		} else if (folio_test_hugetlb(folio)) {
  2773			huge = true;
  2774			count = folio_free_raw_hwp(folio, false);
  2775			if (count == 0) {
  2776				folio_put(folio);
  2777				goto unlock_mutex;
  2778			}
  2779			ret = hugetlb_clear_poison(folio);
  2780			folio_put(folio);
  2781			if (!ret)
  2782				folio_put(folio);
  2783		} else {
  2784			folio_put(folio);
  2785			if (TestClearPageHWPoison(p)) {
  2786				folio_put(folio);
  2787				ret = 0;
  2788			}
  2789		}
  2790	
  2791	unlock_mutex:
  2792		mutex_unlock(&mf_mutex);
  2793		if (!ret) {
  2794			if (!huge)
  2795				num_poisoned_pages_sub(pfn, 1);
  2796			unpoison_pr_info("%#lx: software-unpoisoned page\n",
  2797					 page_to_pfn(p), &unpoison_rs);
  2798		}
  2799		return ret;
  2800	}
  2801	EXPORT_SYMBOL(unpoison_memory);
  2802	

--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki

^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2026-07-29  8:13 UTC | newest]

Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-07-29  8:12 [willy-pagecache:hugetlb-20260728 6/22] mm/memory-failure.c:2751:18: error: use of undeclared identifier 'hugetlb_lock'; did you mean 'hugetlb_walk'? kernel test robot

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.