All of lore.kernel.org
 help / color / mirror / Atom feed
From: kernel test robot <lkp@intel.com>
To: Jakub Acs <acsjakub@amazon.de>, aliceryhl@google.com, djwong@kernel.org
Cc: oe-kbuild-all@lists.linux.dev, jhubbard@nvidia.com,
	acsjakub@amazon.de, akpm@linux-foundation.org,
	axelrasmussen@google.com, chengming.zhou@linux.dev,
	david@redhat.com, linux-fsdevel@vger.kernel.org,
	linux-kernel@vger.kernel.org, linux-mm@kvack.org,
	peterx@redhat.com, rust-for-linux@vger.kernel.org,
	xu.xin16@zte.com.cn
Subject: Re: [PATCH] mm: use enum for vm_flags
Date: Sat, 11 Oct 2025 08:18:05 +0800	[thread overview]
Message-ID: <202510110743.9G4osLTr-lkp@intel.com> (raw)
In-Reply-To: <20251008125427.68735-1-acsjakub@amazon.de>

Hi Jakub,

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/Jakub-Acs/mm-use-enum-for-vm_flags/20251010-124738
base:   https://git.kernel.org/pub/scm/linux/kernel/git/akpm/mm.git mm-everything
patch link:    https://lore.kernel.org/r/20251008125427.68735-1-acsjakub%40amazon.de
patch subject: [PATCH] mm: use enum for vm_flags
config: s390-randconfig-001-20251011 (https://download.01.org/0day-ci/archive/20251011/202510110743.9G4osLTr-lkp@intel.com/config)
compiler: s390-linux-gcc (GCC) 9.5.0
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20251011/202510110743.9G4osLTr-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/202510110743.9G4osLTr-lkp@intel.com/

All error/warnings (new ones prefixed by >>):

   In file included from arch/s390/include/asm/mmu_context.h:11,
                    from arch/s390/include/asm/elf.h:178,
                    from include/linux/elf.h:6,
                    from include/linux/module.h:20,
                    from include/linux/device/driver.h:21,
                    from include/linux/device.h:32,
                    from include/linux/node.h:18,
                    from include/linux/cpu.h:17,
                    from include/linux/static_call.h:135,
                    from include/linux/tracepoint.h:22,
                    from include/linux/mm.h:39,
                    from include/linux/pid_namespace.h:7,
                    from include/linux/ptrace.h:10,
                    from arch/s390/include/asm/stacktrace.h:7,
                    from arch/s390/kernel/asm-offsets.c:15:
   arch/s390/include/asm/pgalloc.h: In function 'p4d_alloc_one_noprof':
>> arch/s390/include/asm/pgalloc.h:62:2: error: implicit declaration of function 'pagetable_p4d_ctor' [-Werror=implicit-function-declaration]
      62 |  pagetable_p4d_ctor(virt_to_ptdesc(table));
         |  ^~~~~~~~~~~~~~~~~~
>> arch/s390/include/asm/pgalloc.h:62:21: error: implicit declaration of function 'virt_to_ptdesc'; did you mean 'virt_to_kpte'? [-Werror=implicit-function-declaration]
      62 |  pagetable_p4d_ctor(virt_to_ptdesc(table));
         |                     ^~~~~~~~~~~~~~
         |                     virt_to_kpte
   arch/s390/include/asm/pgalloc.h: In function 'p4d_free':
>> arch/s390/include/asm/pgalloc.h:73:2: error: implicit declaration of function 'pagetable_dtor'; did you mean 'page_table_free'? [-Werror=implicit-function-declaration]
      73 |  pagetable_dtor(virt_to_ptdesc(p4d));
         |  ^~~~~~~~~~~~~~
         |  page_table_free
   arch/s390/include/asm/pgalloc.h: In function 'pud_alloc_one_noprof':
>> arch/s390/include/asm/pgalloc.h:84:2: error: implicit declaration of function 'pagetable_pud_ctor' [-Werror=implicit-function-declaration]
      84 |  pagetable_pud_ctor(virt_to_ptdesc(table));
         |  ^~~~~~~~~~~~~~~~~~
   arch/s390/include/asm/pgalloc.h: In function 'pmd_alloc_one_noprof':
>> arch/s390/include/asm/pgalloc.h:106:7: error: implicit declaration of function 'pagetable_pmd_ctor' [-Werror=implicit-function-declaration]
     106 |  if (!pagetable_pmd_ctor(mm, virt_to_ptdesc(table))) {
         |       ^~~~~~~~~~~~~~~~~~
   arch/s390/include/asm/pgalloc.h: In function 'pgd_alloc_noprof':
>> arch/s390/include/asm/pgalloc.h:143:2: error: implicit declaration of function 'pagetable_pgd_ctor' [-Werror=implicit-function-declaration]
     143 |  pagetable_pgd_ctor(virt_to_ptdesc(table));
         |  ^~~~~~~~~~~~~~~~~~
   In file included from include/linux/pid_namespace.h:7,
                    from include/linux/ptrace.h:10,
                    from arch/s390/include/asm/stacktrace.h:7,
                    from arch/s390/kernel/asm-offsets.c:15:
   include/linux/mm.h: At top level:
>> include/linux/mm.h:3011:30: error: conflicting types for 'virt_to_ptdesc'
    3011 | static inline struct ptdesc *virt_to_ptdesc(const void *x)
         |                              ^~~~~~~~~~~~~~
   In file included from arch/s390/include/asm/mmu_context.h:11,
                    from arch/s390/include/asm/elf.h:178,
                    from include/linux/elf.h:6,
                    from include/linux/module.h:20,
                    from include/linux/device/driver.h:21,
                    from include/linux/device.h:32,
                    from include/linux/node.h:18,
                    from include/linux/cpu.h:17,
                    from include/linux/static_call.h:135,
                    from include/linux/tracepoint.h:22,
                    from include/linux/mm.h:39,
                    from include/linux/pid_namespace.h:7,
                    from include/linux/ptrace.h:10,
                    from arch/s390/include/asm/stacktrace.h:7,
                    from arch/s390/kernel/asm-offsets.c:15:
   arch/s390/include/asm/pgalloc.h:62:21: note: previous implicit declaration of 'virt_to_ptdesc' was here
      62 |  pagetable_p4d_ctor(virt_to_ptdesc(table));
         |                     ^~~~~~~~~~~~~~
   In file included from include/linux/pid_namespace.h:7,
                    from include/linux/ptrace.h:10,
                    from arch/s390/include/asm/stacktrace.h:7,
                    from arch/s390/kernel/asm-offsets.c:15:
>> include/linux/mm.h:3152:20: warning: conflicting types for 'pagetable_dtor'
    3152 | static inline void pagetable_dtor(struct ptdesc *ptdesc)
         |                    ^~~~~~~~~~~~~~
>> include/linux/mm.h:3152:20: error: static declaration of 'pagetable_dtor' follows non-static declaration
   In file included from arch/s390/include/asm/mmu_context.h:11,
                    from arch/s390/include/asm/elf.h:178,
                    from include/linux/elf.h:6,
                    from include/linux/module.h:20,
                    from include/linux/device/driver.h:21,
                    from include/linux/device.h:32,
                    from include/linux/node.h:18,
                    from include/linux/cpu.h:17,
                    from include/linux/static_call.h:135,
                    from include/linux/tracepoint.h:22,
                    from include/linux/mm.h:39,
                    from include/linux/pid_namespace.h:7,
                    from include/linux/ptrace.h:10,
                    from arch/s390/include/asm/stacktrace.h:7,
                    from arch/s390/kernel/asm-offsets.c:15:
   arch/s390/include/asm/pgalloc.h:73:2: note: previous implicit declaration of 'pagetable_dtor' was here
      73 |  pagetable_dtor(virt_to_ptdesc(p4d));
         |  ^~~~~~~~~~~~~~
   In file included from include/linux/pid_namespace.h:7,
                    from include/linux/ptrace.h:10,
                    from arch/s390/include/asm/stacktrace.h:7,
                    from arch/s390/kernel/asm-offsets.c:15:
>> include/linux/mm.h:3274:20: error: conflicting types for 'pagetable_pmd_ctor'
    3274 | static inline bool pagetable_pmd_ctor(struct mm_struct *mm,
         |                    ^~~~~~~~~~~~~~~~~~
   In file included from arch/s390/include/asm/mmu_context.h:11,
                    from arch/s390/include/asm/elf.h:178,
                    from include/linux/elf.h:6,
                    from include/linux/module.h:20,
                    from include/linux/device/driver.h:21,
                    from include/linux/device.h:32,
                    from include/linux/node.h:18,
                    from include/linux/cpu.h:17,
                    from include/linux/static_call.h:135,
                    from include/linux/tracepoint.h:22,
                    from include/linux/mm.h:39,
                    from include/linux/pid_namespace.h:7,
                    from include/linux/ptrace.h:10,
                    from arch/s390/include/asm/stacktrace.h:7,
                    from arch/s390/kernel/asm-offsets.c:15:
   arch/s390/include/asm/pgalloc.h:106:7: note: previous implicit declaration of 'pagetable_pmd_ctor' was here
     106 |  if (!pagetable_pmd_ctor(mm, virt_to_ptdesc(table))) {
         |       ^~~~~~~~~~~~~~~~~~
   In file included from include/linux/pid_namespace.h:7,
                    from include/linux/ptrace.h:10,
                    from arch/s390/include/asm/stacktrace.h:7,
                    from arch/s390/kernel/asm-offsets.c:15:
>> include/linux/mm.h:3303:20: warning: conflicting types for 'pagetable_pud_ctor'
    3303 | static inline void pagetable_pud_ctor(struct ptdesc *ptdesc)
         |                    ^~~~~~~~~~~~~~~~~~
>> include/linux/mm.h:3303:20: error: static declaration of 'pagetable_pud_ctor' follows non-static declaration
   In file included from arch/s390/include/asm/mmu_context.h:11,
                    from arch/s390/include/asm/elf.h:178,
                    from include/linux/elf.h:6,
                    from include/linux/module.h:20,
                    from include/linux/device/driver.h:21,
                    from include/linux/device.h:32,
                    from include/linux/node.h:18,
                    from include/linux/cpu.h:17,
                    from include/linux/static_call.h:135,
                    from include/linux/tracepoint.h:22,
                    from include/linux/mm.h:39,
                    from include/linux/pid_namespace.h:7,
                    from include/linux/ptrace.h:10,
                    from arch/s390/include/asm/stacktrace.h:7,
                    from arch/s390/kernel/asm-offsets.c:15:
   arch/s390/include/asm/pgalloc.h:84:2: note: previous implicit declaration of 'pagetable_pud_ctor' was here
      84 |  pagetable_pud_ctor(virt_to_ptdesc(table));
         |  ^~~~~~~~~~~~~~~~~~
   In file included from include/linux/pid_namespace.h:7,
                    from include/linux/ptrace.h:10,
                    from arch/s390/include/asm/stacktrace.h:7,
                    from arch/s390/kernel/asm-offsets.c:15:
>> include/linux/mm.h:3308:20: warning: conflicting types for 'pagetable_p4d_ctor'
    3308 | static inline void pagetable_p4d_ctor(struct ptdesc *ptdesc)
         |                    ^~~~~~~~~~~~~~~~~~
>> include/linux/mm.h:3308:20: error: static declaration of 'pagetable_p4d_ctor' follows non-static declaration
   In file included from arch/s390/include/asm/mmu_context.h:11,
                    from arch/s390/include/asm/elf.h:178,
                    from include/linux/elf.h:6,
                    from include/linux/module.h:20,
                    from include/linux/device/driver.h:21,
                    from include/linux/device.h:32,
                    from include/linux/node.h:18,
                    from include/linux/cpu.h:17,
                    from include/linux/static_call.h:135,
                    from include/linux/tracepoint.h:22,
                    from include/linux/mm.h:39,
                    from include/linux/pid_namespace.h:7,
                    from include/linux/ptrace.h:10,
                    from arch/s390/include/asm/stacktrace.h:7,
                    from arch/s390/kernel/asm-offsets.c:15:
   arch/s390/include/asm/pgalloc.h:62:2: note: previous implicit declaration of 'pagetable_p4d_ctor' was here
      62 |  pagetable_p4d_ctor(virt_to_ptdesc(table));
         |  ^~~~~~~~~~~~~~~~~~
   In file included from include/linux/pid_namespace.h:7,
                    from include/linux/ptrace.h:10,
                    from arch/s390/include/asm/stacktrace.h:7,
                    from arch/s390/kernel/asm-offsets.c:15:
>> include/linux/mm.h:3313:20: warning: conflicting types for 'pagetable_pgd_ctor'
    3313 | static inline void pagetable_pgd_ctor(struct ptdesc *ptdesc)
         |                    ^~~~~~~~~~~~~~~~~~
>> include/linux/mm.h:3313:20: error: static declaration of 'pagetable_pgd_ctor' follows non-static declaration
   In file included from arch/s390/include/asm/mmu_context.h:11,
                    from arch/s390/include/asm/elf.h:178,
                    from include/linux/elf.h:6,
                    from include/linux/module.h:20,
                    from include/linux/device/driver.h:21,
                    from include/linux/device.h:32,
                    from include/linux/node.h:18,
                    from include/linux/cpu.h:17,
                    from include/linux/static_call.h:135,
                    from include/linux/tracepoint.h:22,
                    from include/linux/mm.h:39,
                    from include/linux/pid_namespace.h:7,
                    from include/linux/ptrace.h:10,
                    from arch/s390/include/asm/stacktrace.h:7,
                    from arch/s390/kernel/asm-offsets.c:15:
   arch/s390/include/asm/pgalloc.h:143:2: note: previous implicit declaration of 'pagetable_pgd_ctor' was here
     143 |  pagetable_pgd_ctor(virt_to_ptdesc(table));
         |  ^~~~~~~~~~~~~~~~~~
   cc1: some warnings being treated as errors
   make[3]: *** [scripts/Makefile.build:182: arch/s390/kernel/asm-offsets.s] Error 1 shuffle=2098624972
   make[3]: Target 'prepare' not remade because of errors.
   make[2]: *** [Makefile:1280: prepare0] Error 2 shuffle=2098624972
   make[2]: Target 'prepare' not remade because of errors.
   make[1]: *** [Makefile:248: __sub-make] Error 2 shuffle=2098624972
   make[1]: Target 'prepare' not remade because of errors.
   make: *** [Makefile:248: __sub-make] Error 2 shuffle=2098624972
   make: Target 'prepare' not remade because of errors.


vim +/virt_to_ptdesc +3011 include/linux/mm.h

522abd92279a8e Matthew Wilcox (Oracle  2025-09-08  3010) 
bf2d4334f72e4e Vishal Moola (Oracle    2023-08-07 @3011) static inline struct ptdesc *virt_to_ptdesc(const void *x)
bf2d4334f72e4e Vishal Moola (Oracle    2023-08-07  3012) {
bf2d4334f72e4e Vishal Moola (Oracle    2023-08-07  3013) 	return page_ptdesc(virt_to_page(x));
bf2d4334f72e4e Vishal Moola (Oracle    2023-08-07  3014) }
bf2d4334f72e4e Vishal Moola (Oracle    2023-08-07  3015) 
90ec2df9dd3165 Matthew Wilcox (Oracle  2025-09-08  3016) /**
90ec2df9dd3165 Matthew Wilcox (Oracle  2025-09-08  3017)  * ptdesc_address - Virtual address of page table.
90ec2df9dd3165 Matthew Wilcox (Oracle  2025-09-08  3018)  * @pt: Page table descriptor.
90ec2df9dd3165 Matthew Wilcox (Oracle  2025-09-08  3019)  *
90ec2df9dd3165 Matthew Wilcox (Oracle  2025-09-08  3020)  * Return: The first byte of the page table described by @pt.
90ec2df9dd3165 Matthew Wilcox (Oracle  2025-09-08  3021)  */
bf2d4334f72e4e Vishal Moola (Oracle    2023-08-07  3022) static inline void *ptdesc_address(const struct ptdesc *pt)
bf2d4334f72e4e Vishal Moola (Oracle    2023-08-07  3023) {
bf2d4334f72e4e Vishal Moola (Oracle    2023-08-07  3024) 	return folio_address(ptdesc_folio(pt));
bf2d4334f72e4e Vishal Moola (Oracle    2023-08-07  3025) }
bf2d4334f72e4e Vishal Moola (Oracle    2023-08-07  3026) 
bf2d4334f72e4e Vishal Moola (Oracle    2023-08-07  3027) static inline bool pagetable_is_reserved(struct ptdesc *pt)
bf2d4334f72e4e Vishal Moola (Oracle    2023-08-07  3028) {
522abd92279a8e Matthew Wilcox (Oracle  2025-09-08  3029) 	return test_bit(PT_reserved, &pt->pt_flags.f);
bf2d4334f72e4e Vishal Moola (Oracle    2023-08-07  3030) }
bf2d4334f72e4e Vishal Moola (Oracle    2023-08-07  3031) 
bf2d4334f72e4e Vishal Moola (Oracle    2023-08-07  3032) /**
bf2d4334f72e4e Vishal Moola (Oracle    2023-08-07  3033)  * pagetable_alloc - Allocate pagetables
bf2d4334f72e4e Vishal Moola (Oracle    2023-08-07  3034)  * @gfp:    GFP flags
bf2d4334f72e4e Vishal Moola (Oracle    2023-08-07  3035)  * @order:  desired pagetable order
bf2d4334f72e4e Vishal Moola (Oracle    2023-08-07  3036)  *
bf2d4334f72e4e Vishal Moola (Oracle    2023-08-07  3037)  * pagetable_alloc allocates memory for page tables as well as a page table
bf2d4334f72e4e Vishal Moola (Oracle    2023-08-07  3038)  * descriptor to describe that memory.
bf2d4334f72e4e Vishal Moola (Oracle    2023-08-07  3039)  *
bf2d4334f72e4e Vishal Moola (Oracle    2023-08-07  3040)  * Return: The ptdesc describing the allocated page tables.
bf2d4334f72e4e Vishal Moola (Oracle    2023-08-07  3041)  */
2c321f3f70bc28 Suren Baghdasaryan      2024-04-14  3042  static inline struct ptdesc *pagetable_alloc_noprof(gfp_t gfp, unsigned int order)
bf2d4334f72e4e Vishal Moola (Oracle    2023-08-07  3043) {
2c321f3f70bc28 Suren Baghdasaryan      2024-04-14  3044  	struct page *page = alloc_pages_noprof(gfp | __GFP_COMP, order);
bf2d4334f72e4e Vishal Moola (Oracle    2023-08-07  3045) 
bf2d4334f72e4e Vishal Moola (Oracle    2023-08-07  3046) 	return page_ptdesc(page);
bf2d4334f72e4e Vishal Moola (Oracle    2023-08-07  3047) }
2c321f3f70bc28 Suren Baghdasaryan      2024-04-14  3048  #define pagetable_alloc(...)	alloc_hooks(pagetable_alloc_noprof(__VA_ARGS__))
bf2d4334f72e4e Vishal Moola (Oracle    2023-08-07  3049) 
bf2d4334f72e4e Vishal Moola (Oracle    2023-08-07  3050) /**
bf2d4334f72e4e Vishal Moola (Oracle    2023-08-07  3051)  * pagetable_free - Free pagetables
bf2d4334f72e4e Vishal Moola (Oracle    2023-08-07  3052)  * @pt:	The page table descriptor
bf2d4334f72e4e Vishal Moola (Oracle    2023-08-07  3053)  *
bf2d4334f72e4e Vishal Moola (Oracle    2023-08-07  3054)  * pagetable_free frees the memory of all page tables described by a page
bf2d4334f72e4e Vishal Moola (Oracle    2023-08-07  3055)  * table descriptor and the memory for the descriptor itself.
bf2d4334f72e4e Vishal Moola (Oracle    2023-08-07  3056)  */
bf2d4334f72e4e Vishal Moola (Oracle    2023-08-07  3057) static inline void pagetable_free(struct ptdesc *pt)
bf2d4334f72e4e Vishal Moola (Oracle    2023-08-07  3058) {
bf2d4334f72e4e Vishal Moola (Oracle    2023-08-07  3059) 	struct page *page = ptdesc_page(pt);
bf2d4334f72e4e Vishal Moola (Oracle    2023-08-07  3060) 
bf2d4334f72e4e Vishal Moola (Oracle    2023-08-07  3061) 	__free_pages(page, compound_order(page));
bf2d4334f72e4e Vishal Moola (Oracle    2023-08-07  3062) }
bf2d4334f72e4e Vishal Moola (Oracle    2023-08-07  3063) 
394290cba9664e David Hildenbrand       2024-07-26  3064  #if defined(CONFIG_SPLIT_PTE_PTLOCKS)
597d795a2a786d Kirill A. Shutemov      2013-12-20  3065  #if ALLOC_SPLIT_PTLOCKS
b35f1819acd924 Kirill A. Shutemov      2014-01-21  3066  void __init ptlock_cache_init(void);
f5ecca06b3a5d0 Vishal Moola (Oracle    2023-08-07  3067) bool ptlock_alloc(struct ptdesc *ptdesc);
6ed1b8a09deb0b Vishal Moola (Oracle    2023-08-07  3068) void ptlock_free(struct ptdesc *ptdesc);
539edb5846c740 Peter Zijlstra          2013-11-14  3069  
1865484af6b2ce Vishal Moola (Oracle    2023-08-07  3070) static inline spinlock_t *ptlock_ptr(struct ptdesc *ptdesc)
539edb5846c740 Peter Zijlstra          2013-11-14  3071  {
1865484af6b2ce Vishal Moola (Oracle    2023-08-07  3072) 	return ptdesc->ptl;
539edb5846c740 Peter Zijlstra          2013-11-14  3073  }
597d795a2a786d Kirill A. Shutemov      2013-12-20  3074  #else /* ALLOC_SPLIT_PTLOCKS */
b35f1819acd924 Kirill A. Shutemov      2014-01-21  3075  static inline void ptlock_cache_init(void)
b35f1819acd924 Kirill A. Shutemov      2014-01-21  3076  {
b35f1819acd924 Kirill A. Shutemov      2014-01-21  3077  }
b35f1819acd924 Kirill A. Shutemov      2014-01-21  3078  
f5ecca06b3a5d0 Vishal Moola (Oracle    2023-08-07  3079) static inline bool ptlock_alloc(struct ptdesc *ptdesc)
49076ec2ccaf68 Kirill A. Shutemov      2013-11-14  3080  {
49076ec2ccaf68 Kirill A. Shutemov      2013-11-14  3081  	return true;
49076ec2ccaf68 Kirill A. Shutemov      2013-11-14  3082  }
539edb5846c740 Peter Zijlstra          2013-11-14  3083  
6ed1b8a09deb0b Vishal Moola (Oracle    2023-08-07  3084) static inline void ptlock_free(struct ptdesc *ptdesc)
49076ec2ccaf68 Kirill A. Shutemov      2013-11-14  3085  {
49076ec2ccaf68 Kirill A. Shutemov      2013-11-14  3086  }
49076ec2ccaf68 Kirill A. Shutemov      2013-11-14  3087  
1865484af6b2ce Vishal Moola (Oracle    2023-08-07  3088) static inline spinlock_t *ptlock_ptr(struct ptdesc *ptdesc)
49076ec2ccaf68 Kirill A. Shutemov      2013-11-14  3089  {
1865484af6b2ce Vishal Moola (Oracle    2023-08-07  3090) 	return &ptdesc->ptl;
49076ec2ccaf68 Kirill A. Shutemov      2013-11-14  3091  }
597d795a2a786d Kirill A. Shutemov      2013-12-20  3092  #endif /* ALLOC_SPLIT_PTLOCKS */
49076ec2ccaf68 Kirill A. Shutemov      2013-11-14  3093  
49076ec2ccaf68 Kirill A. Shutemov      2013-11-14  3094  static inline spinlock_t *pte_lockptr(struct mm_struct *mm, pmd_t *pmd)
49076ec2ccaf68 Kirill A. Shutemov      2013-11-14  3095  {
1865484af6b2ce Vishal Moola (Oracle    2023-08-07  3096) 	return ptlock_ptr(page_ptdesc(pmd_page(*pmd)));
49076ec2ccaf68 Kirill A. Shutemov      2013-11-14  3097  }
49076ec2ccaf68 Kirill A. Shutemov      2013-11-14  3098  
5f75cfbd6bb022 David Hildenbrand       2024-08-01  3099  static inline spinlock_t *ptep_lockptr(struct mm_struct *mm, pte_t *pte)
5f75cfbd6bb022 David Hildenbrand       2024-08-01  3100  {
5f75cfbd6bb022 David Hildenbrand       2024-08-01  3101  	BUILD_BUG_ON(IS_ENABLED(CONFIG_HIGHPTE));
5f75cfbd6bb022 David Hildenbrand       2024-08-01  3102  	BUILD_BUG_ON(MAX_PTRS_PER_PTE * sizeof(pte_t) > PAGE_SIZE);
5f75cfbd6bb022 David Hildenbrand       2024-08-01  3103  	return ptlock_ptr(virt_to_ptdesc(pte));
5f75cfbd6bb022 David Hildenbrand       2024-08-01  3104  }
5f75cfbd6bb022 David Hildenbrand       2024-08-01  3105  
75b25d49ca6638 Vishal Moola (Oracle    2023-08-07  3106) static inline bool ptlock_init(struct ptdesc *ptdesc)
49076ec2ccaf68 Kirill A. Shutemov      2013-11-14  3107  {
4c21e2f2441dc5 Hugh Dickins            2005-10-29  3108  	/*
49076ec2ccaf68 Kirill A. Shutemov      2013-11-14  3109  	 * prep_new_page() initialize page->private (and therefore page->ptl)
49076ec2ccaf68 Kirill A. Shutemov      2013-11-14  3110  	 * with 0. Make sure nobody took it in use in between.
49076ec2ccaf68 Kirill A. Shutemov      2013-11-14  3111  	 *
49076ec2ccaf68 Kirill A. Shutemov      2013-11-14  3112  	 * It can happen if arch try to use slab for page table allocation:
1d798ca3f16437 Kirill A. Shutemov      2015-11-06  3113  	 * slab code uses page->slab_cache, which share storage with page->ptl.
4c21e2f2441dc5 Hugh Dickins            2005-10-29  3114  	 */
75b25d49ca6638 Vishal Moola (Oracle    2023-08-07  3115) 	VM_BUG_ON_PAGE(*(unsigned long *)&ptdesc->ptl, ptdesc_page(ptdesc));
75b25d49ca6638 Vishal Moola (Oracle    2023-08-07  3116) 	if (!ptlock_alloc(ptdesc))
49076ec2ccaf68 Kirill A. Shutemov      2013-11-14  3117  		return false;
75b25d49ca6638 Vishal Moola (Oracle    2023-08-07  3118) 	spin_lock_init(ptlock_ptr(ptdesc));
49076ec2ccaf68 Kirill A. Shutemov      2013-11-14  3119  	return true;
49076ec2ccaf68 Kirill A. Shutemov      2013-11-14  3120  }
49076ec2ccaf68 Kirill A. Shutemov      2013-11-14  3121  
394290cba9664e David Hildenbrand       2024-07-26  3122  #else	/* !defined(CONFIG_SPLIT_PTE_PTLOCKS) */
4c21e2f2441dc5 Hugh Dickins            2005-10-29  3123  /*
4c21e2f2441dc5 Hugh Dickins            2005-10-29  3124   * We use mm->page_table_lock to guard all pagetable pages of the mm.
4c21e2f2441dc5 Hugh Dickins            2005-10-29  3125   */
49076ec2ccaf68 Kirill A. Shutemov      2013-11-14  3126  static inline spinlock_t *pte_lockptr(struct mm_struct *mm, pmd_t *pmd)
49076ec2ccaf68 Kirill A. Shutemov      2013-11-14  3127  {
49076ec2ccaf68 Kirill A. Shutemov      2013-11-14  3128  	return &mm->page_table_lock;
49076ec2ccaf68 Kirill A. Shutemov      2013-11-14  3129  }
5f75cfbd6bb022 David Hildenbrand       2024-08-01  3130  static inline spinlock_t *ptep_lockptr(struct mm_struct *mm, pte_t *pte)
5f75cfbd6bb022 David Hildenbrand       2024-08-01  3131  {
5f75cfbd6bb022 David Hildenbrand       2024-08-01  3132  	return &mm->page_table_lock;
5f75cfbd6bb022 David Hildenbrand       2024-08-01  3133  }
b35f1819acd924 Kirill A. Shutemov      2014-01-21  3134  static inline void ptlock_cache_init(void) {}
75b25d49ca6638 Vishal Moola (Oracle    2023-08-07  3135) static inline bool ptlock_init(struct ptdesc *ptdesc) { return true; }
6ed1b8a09deb0b Vishal Moola (Oracle    2023-08-07  3136) static inline void ptlock_free(struct ptdesc *ptdesc) {}
394290cba9664e David Hildenbrand       2024-07-26  3137  #endif /* defined(CONFIG_SPLIT_PTE_PTLOCKS) */
4c21e2f2441dc5 Hugh Dickins            2005-10-29  3138  
f0c92726e89f5c Matthew Wilcox (Oracle  2025-09-08  3139) static inline unsigned long ptdesc_nr_pages(const struct ptdesc *ptdesc)
f0c92726e89f5c Matthew Wilcox (Oracle  2025-09-08  3140) {
f0c92726e89f5c Matthew Wilcox (Oracle  2025-09-08  3141) 	return compound_nr(ptdesc_page(ptdesc));
f0c92726e89f5c Matthew Wilcox (Oracle  2025-09-08  3142) }
f0c92726e89f5c Matthew Wilcox (Oracle  2025-09-08  3143) 
11e2400b21a3e2 Kevin Brodsky           2025-01-03  3144  static inline void __pagetable_ctor(struct ptdesc *ptdesc)
2f569afd9ced9e Martin Schwidefsky      2008-02-08  3145  {
f0c92726e89f5c Matthew Wilcox (Oracle  2025-09-08  3146) 	pg_data_t *pgdat = NODE_DATA(memdesc_nid(ptdesc->pt_flags));
7e11dca14b27e1 Vishal Moola (Oracle    2023-08-07  3147) 
f0c92726e89f5c Matthew Wilcox (Oracle  2025-09-08  3148) 	__SetPageTable(ptdesc_page(ptdesc));
f0c92726e89f5c Matthew Wilcox (Oracle  2025-09-08  3149) 	mod_node_page_state(pgdat, NR_PAGETABLE, ptdesc_nr_pages(ptdesc));
2f569afd9ced9e Martin Schwidefsky      2008-02-08  3150  }
2f569afd9ced9e Martin Schwidefsky      2008-02-08  3151  
db6b435d731a8d Qi Zheng                2025-01-08 @3152  static inline void pagetable_dtor(struct ptdesc *ptdesc)
7e11dca14b27e1 Vishal Moola (Oracle    2023-08-07  3153) {
f0c92726e89f5c Matthew Wilcox (Oracle  2025-09-08  3154) 	pg_data_t *pgdat = NODE_DATA(memdesc_nid(ptdesc->pt_flags));
7e11dca14b27e1 Vishal Moola (Oracle    2023-08-07  3155) 
7e11dca14b27e1 Vishal Moola (Oracle    2023-08-07  3156) 	ptlock_free(ptdesc);
f0c92726e89f5c Matthew Wilcox (Oracle  2025-09-08  3157) 	__ClearPageTable(ptdesc_page(ptdesc));
f0c92726e89f5c Matthew Wilcox (Oracle  2025-09-08  3158) 	mod_node_page_state(pgdat, NR_PAGETABLE, -ptdesc_nr_pages(ptdesc));
7e11dca14b27e1 Vishal Moola (Oracle    2023-08-07  3159) }
7e11dca14b27e1 Vishal Moola (Oracle    2023-08-07  3160) 

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


  parent reply	other threads:[~2025-10-11  0:18 UTC|newest]

Thread overview: 15+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-10-02  7:52 [PATCH v4] mm: redefine VM_* flag constants with BIT() Jakub Acs
2025-10-02  7:54 ` David Hildenbrand
2025-10-02 17:43 ` SeongJae Park
2025-10-07 16:21 ` [PATCH] mm: use enum for vm_flags Alice Ryhl
2025-10-07 17:01   ` Darrick J. Wong
2025-10-08  2:36   ` John Hubbard
2025-10-08 12:54   ` Jakub Acs
2025-10-08 13:15     ` Alice Ryhl
2025-10-10 15:10       ` Darrick J. Wong
2025-10-08 14:17     ` Steven Rostedt
2025-10-09  2:33     ` John Hubbard
2025-10-11  0:18     ` kernel test robot [this message]
2025-10-11  0:39     ` kernel test robot
2025-10-10 16:13   ` kernel test robot
2025-10-11  0:50   ` kernel test robot

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=202510110743.9G4osLTr-lkp@intel.com \
    --to=lkp@intel.com \
    --cc=acsjakub@amazon.de \
    --cc=akpm@linux-foundation.org \
    --cc=aliceryhl@google.com \
    --cc=axelrasmussen@google.com \
    --cc=chengming.zhou@linux.dev \
    --cc=david@redhat.com \
    --cc=djwong@kernel.org \
    --cc=jhubbard@nvidia.com \
    --cc=linux-fsdevel@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-mm@kvack.org \
    --cc=oe-kbuild-all@lists.linux.dev \
    --cc=peterx@redhat.com \
    --cc=rust-for-linux@vger.kernel.org \
    --cc=xu.xin16@zte.com.cn \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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.