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
next prev 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.