From: kernel test robot <lkp@intel.com>
To: "brookxu.cn" <brookxu.cn@gmail.com>,
bsingharora@gmail.com, juri.lelli@redhat.com,
peterz@infradead.org, vincent.guittot@linaro.org
Cc: oe-kbuild-all@lists.linux.dev, linux-kernel@vger.kernel.org
Subject: Re: [PATCH 2/3] delayacct: convert task->delays to a object
Date: Sun, 8 Oct 2023 23:47:14 +0800 [thread overview]
Message-ID: <202310082358.5mUe4Xjy-lkp@intel.com> (raw)
In-Reply-To: <531ddc82793a39f4c09316d701a4b1170bcad4ab.1696761522.git.chunguang.xu@shopee.com>
Hi brookxu.cn,
kernel test robot noticed the following build errors:
[auto build test ERROR on tip/sched/core]
[also build test ERROR on linus/master v6.6-rc4 next-20231006]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch#_base_tree_information]
url: https://github.com/intel-lab-lkp/linux/commits/brookxu-cn/delayacct-introduce-delayacct_enabled-to-simplify-implement/20231008-185144
base: tip/sched/core
patch link: https://lore.kernel.org/r/531ddc82793a39f4c09316d701a4b1170bcad4ab.1696761522.git.chunguang.xu%40shopee.com
patch subject: [PATCH 2/3] delayacct: convert task->delays to a object
config: arm64-randconfig-003-20231008 (https://download.01.org/0day-ci/archive/20231008/202310082358.5mUe4Xjy-lkp@intel.com/config)
compiler: aarch64-linux-gcc (GCC) 13.2.0
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20231008/202310082358.5mUe4Xjy-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/202310082358.5mUe4Xjy-lkp@intel.com/
All error/warnings (new ones prefixed by >>):
In file included from include/linux/kasan.h:33,
from include/linux/slab.h:180,
from include/linux/delayacct.h:62,
from include/linux/sched.h:40,
from arch/arm64/include/asm/mte.h:16,
from arch/arm64/include/asm/pgtable.h:12,
from arch/arm64/include/asm/vmalloc.h:5,
from include/linux/vmalloc.h:13,
from mm/vmalloc.c:11:
include/linux/pgtable.h: In function 'pte_offset_kernel':
include/linux/pgtable.h:94:25: error: implicit declaration of function 'pmd_page_vaddr'; did you mean 'pgd_page_vaddr'? [-Werror=implicit-function-declaration]
94 | return (pte_t *)pmd_page_vaddr(*pmd) + pte_index(address);
| ^~~~~~~~~~~~~~
| pgd_page_vaddr
include/linux/pgtable.h:94:16: warning: cast to pointer from integer of different size [-Wint-to-pointer-cast]
94 | return (pte_t *)pmd_page_vaddr(*pmd) + pte_index(address);
| ^
include/linux/pgtable.h: In function 'pmd_offset':
include/linux/pgtable.h:123:16: error: implicit declaration of function 'pud_pgtable'; did you mean 'p4d_pgtable'? [-Werror=implicit-function-declaration]
123 | return pud_pgtable(*pud) + pmd_index(address);
| ^~~~~~~~~~~
| p4d_pgtable
include/linux/pgtable.h:123:34: warning: returning 'long unsigned int' from a function with return type 'pmd_t *' makes pointer from integer without a cast [-Wint-conversion]
123 | return pud_pgtable(*pud) + pmd_index(address);
| ~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~
include/linux/pgtable.h: In function 'virt_to_kpte':
include/linux/pgtable.h:177:16: error: implicit declaration of function 'pmd_none'; did you mean 'p4d_none'? [-Werror=implicit-function-declaration]
177 | return pmd_none(*pmd) ? NULL : pte_offset_kernel(pmd, vaddr);
| ^~~~~~~~
| p4d_none
In file included from arch/arm64/include/asm/kasan.h:10,
from arch/arm64/include/asm/processor.h:40,
from include/asm-generic/qrwlock.h:18,
from ./arch/arm64/include/generated/asm/qrwlock.h:1,
from arch/arm64/include/asm/spinlock.h:9,
from include/linux/spinlock.h:95,
from include/linux/vmalloc.h:5:
include/linux/pgtable.h: In function 'pte_next_pfn':
include/linux/pgtable.h:213:45: error: 'PFN_PTE_SHIFT' undeclared (first use in this function); did you mean 'CONT_PTE_SHIFT'?
213 | return __pte(pte_val(pte) + (1UL << PFN_PTE_SHIFT));
| ^~~~~~~~~~~~~
arch/arm64/include/asm/pgtable-types.h:25:37: note: in definition of macro '__pte'
25 | #define __pte(x) ((pte_t) { (x) } )
| ^
include/linux/pgtable.h:213:45: note: each undeclared identifier is reported only once for each function it appears in
213 | return __pte(pte_val(pte) + (1UL << PFN_PTE_SHIFT));
| ^~~~~~~~~~~~~
arch/arm64/include/asm/pgtable-types.h:25:37: note: in definition of macro '__pte'
25 | #define __pte(x) ((pte_t) { (x) } )
| ^
include/linux/pgtable.h: In function 'set_ptes':
include/linux/pgtable.h:238:17: error: implicit declaration of function 'set_pte'; did you mean 'set_ptes'? [-Werror=implicit-function-declaration]
238 | set_pte(ptep, pte);
| ^~~~~~~
| set_ptes
include/linux/pgtable.h: In function 'ptep_test_and_clear_young':
include/linux/pgtable.h:302:14: error: implicit declaration of function 'pte_young'; did you mean 'pmd_young'? [-Werror=implicit-function-declaration]
302 | if (!pte_young(pte))
| ^~~~~~~~~
| pmd_young
include/linux/pgtable.h:305:55: error: implicit declaration of function 'pte_mkold' [-Werror=implicit-function-declaration]
305 | set_pte_at(vma->vm_mm, address, ptep, pte_mkold(pte));
| ^~~~~~~~~
include/linux/pgtable.h:247:66: note: in definition of macro 'set_pte_at'
247 | #define set_pte_at(mm, addr, ptep, pte) set_ptes(mm, addr, ptep, pte, 1)
| ^~~
include/linux/pgtable.h:305:55: error: incompatible type for argument 4 of 'set_ptes'
305 | set_pte_at(vma->vm_mm, address, ptep, pte_mkold(pte));
| ^~~~~~~~~~~~~~
| |
| int
include/linux/pgtable.h:247:66: note: in definition of macro 'set_pte_at'
247 | #define set_pte_at(mm, addr, ptep, pte) set_ptes(mm, addr, ptep, pte, 1)
| ^~~
include/linux/pgtable.h:232:36: note: expected 'pte_t' but argument is of type 'int'
232 | pte_t *ptep, pte_t pte, unsigned int nr)
| ~~~~~~^~~
include/linux/pgtable.h: In function 'pmdp_test_and_clear_young':
>> include/linux/pgtable.h:321:17: error: implicit declaration of function 'set_pmd_at'; did you mean 'set_pte_at'? [-Werror=implicit-function-declaration]
321 | set_pmd_at(vma->vm_mm, address, pmdp, pmd_mkold(pmd));
| ^~~~~~~~~~
| set_pte_at
>> include/linux/pgtable.h:321:55: error: implicit declaration of function 'pmd_mkold' [-Werror=implicit-function-declaration]
321 | set_pmd_at(vma->vm_mm, address, pmdp, pmd_mkold(pmd));
| ^~~~~~~~~
include/linux/pgtable.h: In function 'ptep_get_and_clear':
include/linux/pgtable.h:402:9: error: implicit declaration of function 'pte_clear'; did you mean 'p4d_clear'? [-Werror=implicit-function-declaration]
402 | pte_clear(mm, address, ptep);
| ^~~~~~~~~
| p4d_clear
include/linux/pgtable.h: In function 'pmdp_huge_get_and_clear':
>> include/linux/pgtable.h:505:9: error: implicit declaration of function 'pmd_clear'; did you mean 'p4d_clear'? [-Werror=implicit-function-declaration]
505 | pmd_clear(pmdp);
| ^~~~~~~~~
| p4d_clear
include/linux/pgtable.h: In function 'pudp_huge_get_and_clear':
>> include/linux/pgtable.h:518:9: error: implicit declaration of function 'pud_clear'; did you mean 'p4d_clear'? [-Werror=implicit-function-declaration]
518 | pud_clear(pudp);
| ^~~~~~~~~
| p4d_clear
include/linux/pgtable.h: In function 'pte_mkwrite':
include/linux/pgtable.h:605:16: error: implicit declaration of function 'pte_mkwrite_novma'; did you mean 'pte_mkwrite'? [-Werror=implicit-function-declaration]
605 | return pte_mkwrite_novma(pte);
| ^~~~~~~~~~~~~~~~~
| pte_mkwrite
include/linux/pgtable.h:605:16: error: incompatible types when returning type 'int' but 'pte_t' was expected
605 | return pte_mkwrite_novma(pte);
| ^~~~~~~~~~~~~~~~~~~~~~
include/linux/pgtable.h: In function 'pmd_mkwrite':
>> include/linux/pgtable.h:612:16: error: implicit declaration of function 'pmd_mkwrite_novma'; did you mean 'pmd_mkwrite'? [-Werror=implicit-function-declaration]
612 | return pmd_mkwrite_novma(pmd);
| ^~~~~~~~~~~~~~~~~
| pmd_mkwrite
>> include/linux/pgtable.h:612:16: error: incompatible types when returning type 'int' but 'pmd_t' was expected
612 | return pmd_mkwrite_novma(pmd);
| ^~~~~~~~~~~~~~~~~~~~~~
include/linux/pgtable.h: In function 'ptep_set_wrprotect':
include/linux/pgtable.h:621:39: error: implicit declaration of function 'pte_wrprotect'; did you mean 'ptep_set_wrprotect'? [-Werror=implicit-function-declaration]
621 | set_pte_at(mm, address, ptep, pte_wrprotect(old_pte));
| ^~~~~~~~~~~~~
include/linux/pgtable.h:247:66: note: in definition of macro 'set_pte_at'
247 | #define set_pte_at(mm, addr, ptep, pte) set_ptes(mm, addr, ptep, pte, 1)
| ^~~
include/linux/pgtable.h:621:39: error: incompatible type for argument 4 of 'set_ptes'
621 | set_pte_at(mm, address, ptep, pte_wrprotect(old_pte));
| ^~~~~~~~~~~~~~~~~~~~~~
| |
| int
include/linux/pgtable.h:247:66: note: in definition of macro 'set_pte_at'
247 | #define set_pte_at(mm, addr, ptep, pte) set_ptes(mm, addr, ptep, pte, 1)
| ^~~
include/linux/pgtable.h:232:36: note: expected 'pte_t' but argument is of type 'int'
232 | pte_t *ptep, pte_t pte, unsigned int nr)
| ~~~~~~^~~
include/linux/pgtable.h: In function 'pmdp_set_wrprotect':
>> include/linux/pgtable.h:647:39: error: implicit declaration of function 'pmd_wrprotect'; did you mean 'pmdp_set_wrprotect'? [-Werror=implicit-function-declaration]
647 | set_pmd_at(mm, address, pmdp, pmd_wrprotect(old_pmd));
| ^~~~~~~~~~~~~
| pmdp_set_wrprotect
include/linux/pgtable.h: In function 'pud_none_or_clear_bad':
include/linux/pgtable.h:1015:13: error: implicit declaration of function 'pud_none'; did you mean 'p4d_none'? [-Werror=implicit-function-declaration]
1015 | if (pud_none(*pud))
| ^~~~~~~~
| p4d_none
In file included from include/linux/export.h:5,
from include/linux/linkage.h:7,
from include/linux/preempt.h:10,
from include/linux/spinlock.h:56:
include/linux/pgtable.h:1017:22: error: implicit declaration of function 'pud_bad'; did you mean 'p4d_bad'? [-Werror=implicit-function-declaration]
1017 | if (unlikely(pud_bad(*pud))) {
| ^~~~~~~
include/linux/compiler.h:77:45: note: in definition of macro 'unlikely'
77 | # define unlikely(x) __builtin_expect(!!(x), 0)
| ^
include/linux/pgtable.h: In function 'pmd_none_or_clear_bad':
include/linux/pgtable.h:1028:22: error: implicit declaration of function 'pmd_bad'; did you mean 'p4d_bad'? [-Werror=implicit-function-declaration]
1028 | if (unlikely(pmd_bad(*pmd))) {
| ^~~~~~~
include/linux/compiler.h:77:45: note: in definition of macro 'unlikely'
77 | # define unlikely(x) __builtin_expect(!!(x), 0)
| ^
In file included from arch/arm64/include/asm/pgtable.h:14:
arch/arm64/include/asm/pgtable-prot.h: At top level:
arch/arm64/include/asm/pgtable-prot.h:85: warning: "PAGE_KERNEL_RO" redefined
85 | #define PAGE_KERNEL_RO __pgprot(_PAGE_KERNEL_RO)
|
include/linux/pgtable.h:1539: note: this is the location of the previous definition
1539 | # define PAGE_KERNEL_RO PAGE_KERNEL
|
arch/arm64/include/asm/pgtable-prot.h:87: warning: "PAGE_KERNEL_EXEC" redefined
87 | #define PAGE_KERNEL_EXEC __pgprot(_PAGE_KERNEL_EXEC)
|
include/linux/pgtable.h:1543: note: this is the location of the previous definition
1543 | # define PAGE_KERNEL_EXEC PAGE_KERNEL
|
>> arch/arm64/include/asm/pgtable.h:42: warning: "flush_pmd_tlb_range" redefined
42 | #define flush_pmd_tlb_range(vma, addr, end) \
|
include/linux/pgtable.h:1498: note: this is the location of the previous definition
1498 | #define flush_pmd_tlb_range(vma, addr, end) flush_tlb_range(vma, addr, end)
|
>> arch/arm64/include/asm/pgtable.h:44: warning: "flush_pud_tlb_range" redefined
44 | #define flush_pud_tlb_range(vma, addr, end) \
|
include/linux/pgtable.h:1499: note: this is the location of the previous definition
1499 | #define flush_pud_tlb_range(vma, addr, end) flush_tlb_range(vma, addr, end)
|
arch/arm64/include/asm/pgtable.h:60: warning: "flush_tlb_fix_spurious_fault" redefined
60 | #define flush_tlb_fix_spurious_fault(vma, address, ptep) do { } while (0)
|
include/linux/pgtable.h:935: note: this is the location of the previous definition
935 | #define flush_tlb_fix_spurious_fault(vma, address, ptep) flush_tlb_page(vma, address)
|
arch/arm64/include/asm/pgtable.h:143: warning: "pte_accessible" redefined
143 | #define pte_accessible(mm, pte) \
|
include/linux/pgtable.h:931: note: this is the location of the previous definition
931 | # define pte_accessible(mm, pte) ((void)(pte), 1)
|
arch/arm64/include/asm/pgtable.h:153: warning: "pte_access_permitted" redefined
153 | #define pte_access_permitted(pte, write) \
|
include/linux/pgtable.h:767: note: this is the location of the previous definition
767 | #define pte_access_permitted(pte, write) \
|
arch/arm64/include/asm/pgtable.h:155: warning: "pmd_access_permitted" redefined
155 | #define pmd_access_permitted(pmd, write) \
|
include/linux/pgtable.h:772: note: this is the location of the previous definition
772 | #define pmd_access_permitted(pmd, write) \
|
arch/arm64/include/asm/pgtable.h:157: warning: "pud_access_permitted" redefined
157 | #define pud_access_permitted(pud, write) \
|
include/linux/pgtable.h:777: note: this is the location of the previous definition
777 | #define pud_access_permitted(pud, write) \
|
arch/arm64/include/asm/pgtable.h:184:21: error: conflicting types for 'pte_mkwrite_novma'; have 'pte_t(pte_t)'
184 | static inline pte_t pte_mkwrite_novma(pte_t pte)
| ^~~~~~~~~~~~~~~~~
include/linux/pgtable.h:605:16: note: previous implicit declaration of 'pte_mkwrite_novma' with type 'int()'
605 | return pte_mkwrite_novma(pte);
| ^~~~~~~~~~~~~~~~~
arch/arm64/include/asm/pgtable.h:209:21: error: conflicting types for 'pte_wrprotect'; have 'pte_t(pte_t)'
209 | static inline pte_t pte_wrprotect(pte_t pte)
| ^~~~~~~~~~~~~
include/linux/pgtable.h:621:39: note: previous implicit declaration of 'pte_wrprotect' with type 'int()'
621 | set_pte_at(mm, address, ptep, pte_wrprotect(old_pte));
| ^~~~~~~~~~~~~
include/linux/pgtable.h:247:66: note: in definition of macro 'set_pte_at'
247 | #define set_pte_at(mm, addr, ptep, pte) set_ptes(mm, addr, ptep, pte, 1)
| ^~~
arch/arm64/include/asm/pgtable.h:223:21: error: conflicting types for 'pte_mkold'; have 'pte_t(pte_t)'
223 | static inline pte_t pte_mkold(pte_t pte)
| ^~~~~~~~~
include/linux/pgtable.h:305:55: note: previous implicit declaration of 'pte_mkold' with type 'int()'
305 | set_pte_at(vma->vm_mm, address, ptep, pte_mkold(pte));
| ^~~~~~~~~
include/linux/pgtable.h:247:66: note: in definition of macro 'set_pte_at'
247 | #define set_pte_at(mm, addr, ptep, pte) set_ptes(mm, addr, ptep, pte, 1)
| ^~~
arch/arm64/include/asm/pgtable.h:264:20: warning: conflicting types for 'set_pte'; have 'void(pte_t *, pte_t)'
264 | static inline void set_pte(pte_t *ptep, pte_t pte)
| ^~~~~~~
arch/arm64/include/asm/pgtable.h:264:20: error: static declaration of 'set_pte' follows non-static declaration
include/linux/pgtable.h:238:17: note: previous implicit declaration of 'set_pte' with type 'void(pte_t *, pte_t)'
238 | set_pte(ptep, pte);
| ^~~~~~~
arch/arm64/include/asm/pgtable.h:349:20: error: redefinition of 'set_ptes'
349 | static inline void set_ptes(struct mm_struct *mm, unsigned long addr,
| ^~~~~~~~
include/linux/pgtable.h:231:20: note: previous definition of 'set_ptes' with type 'void(struct mm_struct *, long unsigned int, pte_t *, pte_t, unsigned int)'
231 | static inline void set_ptes(struct mm_struct *mm, unsigned long addr,
| ^~~~~~~~
>> arch/arm64/include/asm/pgtable.h:534:20: warning: conflicting types for 'set_pmd_at'; have 'void(struct mm_struct *, long unsigned int, pmd_t *, pmd_t)'
534 | static inline void set_pmd_at(struct mm_struct *mm, unsigned long addr,
| ^~~~~~~~~~
>> arch/arm64/include/asm/pgtable.h:534:20: error: static declaration of 'set_pmd_at' follows non-static declaration
include/linux/pgtable.h:321:17: note: previous implicit declaration of 'set_pmd_at' with type 'void(struct mm_struct *, long unsigned int, pmd_t *, pmd_t)'
321 | set_pmd_at(vma->vm_mm, address, pmdp, pmd_mkold(pmd));
| ^~~~~~~~~~
arch/arm64/include/asm/pgtable.h:557: warning: "pgprot_nx" redefined
557 | #define pgprot_nx(prot) \
|
include/linux/pgtable.h:1099: note: this is the location of the previous definition
1099 | #define pgprot_nx(prot) (prot)
|
arch/arm64/include/asm/pgtable.h:563: warning: "pgprot_noncached" redefined
563 | #define pgprot_noncached(prot) \
|
include/linux/pgtable.h:1103: note: this is the location of the previous definition
1103 | #define pgprot_noncached(prot) (prot)
|
arch/arm64/include/asm/pgtable.h:565: warning: "pgprot_writecombine" redefined
565 | #define pgprot_writecombine(prot) \
|
include/linux/pgtable.h:1107: note: this is the location of the previous definition
1107 | #define pgprot_writecombine pgprot_noncached
|
arch/arm64/include/asm/pgtable.h:567: warning: "pgprot_device" redefined
567 | #define pgprot_device(prot) \
|
include/linux/pgtable.h:1115: note: this is the location of the previous definition
1115 | #define pgprot_device pgprot_noncached
|
arch/arm64/include/asm/pgtable.h:571: warning: "pgprot_mhp" redefined
571 | #define pgprot_mhp pgprot_tagged
|
include/linux/pgtable.h:1119: note: this is the location of the previous definition
1119 | #define pgprot_mhp(prot) (prot)
|
arch/arm64/include/asm/pgtable.h:595: warning: "pmd_leaf" redefined
595 | #define pmd_leaf(pmd) (pmd_present(pmd) && !pmd_table(pmd))
|
include/linux/pgtable.h:1634: note: this is the location of the previous definition
1634 | #define pmd_leaf(x) 0
|
arch/arm64/include/asm/pgtable.h:598: warning: "pmd_leaf_size" redefined
598 | #define pmd_leaf_size(pmd) (pmd_cont(pmd) ? CONT_PMD_SIZE : PMD_SIZE)
|
include/linux/pgtable.h:1647: note: this is the location of the previous definition
1647 | #define pmd_leaf_size(x) PMD_SIZE
|
arch/arm64/include/asm/pgtable.h:599: warning: "pte_leaf_size" redefined
599 | #define pte_leaf_size(pte) (pte_cont(pte) ? CONT_PTE_SIZE : PAGE_SIZE)
|
include/linux/pgtable.h:1650: note: this is the location of the previous definition
1650 | #define pte_leaf_size(x) PAGE_SIZE
|
>> arch/arm64/include/asm/pgtable.h:643:20: warning: conflicting types for 'pmd_clear'; have 'void(pmd_t *)'
643 | static inline void pmd_clear(pmd_t *pmdp)
| ^~~~~~~~~
>> arch/arm64/include/asm/pgtable.h:643:20: error: static declaration of 'pmd_clear' follows non-static declaration
include/linux/pgtable.h:505:9: note: previous implicit declaration of 'pmd_clear' with type 'void(pmd_t *)'
505 | pmd_clear(pmdp);
| ^~~~~~~~~
arch/arm64/include/asm/pgtable.h:653:29: error: conflicting types for 'pmd_page_vaddr'; have 'long unsigned int(pmd_t)'
653 | static inline unsigned long pmd_page_vaddr(pmd_t pmd)
| ^~~~~~~~~~~~~~
include/linux/pgtable.h:94:25: note: previous implicit declaration of 'pmd_page_vaddr' with type 'int()'
94 | return (pte_t *)pmd_page_vaddr(*pmd) + pte_index(address);
| ^~~~~~~~~~~~~~
arch/arm64/include/asm/pgtable.h:684: warning: "pud_leaf" redefined
684 | #define pud_leaf(pud) (pud_present(pud) && !pud_table(pud))
|
include/linux/pgtable.h:1631: note: this is the location of the previous definition
1631 | #define pud_leaf(x) 0
|
>> arch/arm64/include/asm/pgtable.h:706:20: warning: conflicting types for 'pud_clear'; have 'void(pud_t *)'
706 | static inline void pud_clear(pud_t *pudp)
| ^~~~~~~~~
>> arch/arm64/include/asm/pgtable.h:706:20: error: static declaration of 'pud_clear' follows non-static declaration
include/linux/pgtable.h:518:9: note: previous implicit declaration of 'pud_clear' with type 'void(pud_t *)'
518 | pud_clear(pudp);
| ^~~~~~~~~
arch/arm64/include/asm/pgtable.h:716:22: error: conflicting types for 'pud_pgtable'; have 'pmd_t *(pud_t)'
716 | static inline pmd_t *pud_pgtable(pud_t pud)
| ^~~~~~~~~~~
include/linux/pgtable.h:123:16: note: previous implicit declaration of 'pud_pgtable' with type 'int()'
123 | return pud_pgtable(*pud) + pmd_index(address);
| ^~~~~~~~~~~
>> arch/arm64/include/asm/pgtable.h:844:19: error: static declaration of 'pmdp_set_access_flags' follows non-static declaration
844 | static inline int pmdp_set_access_flags(struct vm_area_struct *vma,
| ^~~~~~~~~~~~~~~~~~~~~
include/linux/pgtable.h:257:12: note: previous declaration of 'pmdp_set_access_flags' with type 'int(struct vm_area_struct *, long unsigned int, pmd_t *, pmd_t, int)'
257 | extern int pmdp_set_access_flags(struct vm_area_struct *vma,
| ^~~~~~~~~~~~~~~~~~~~~
arch/arm64/include/asm/pgtable.h:898:19: error: redefinition of 'ptep_test_and_clear_young'
898 | static inline int ptep_test_and_clear_young(struct vm_area_struct *vma,
| ^~~~~~~~~~~~~~~~~~~~~~~~~
include/linux/pgtable.h:296:19: note: previous definition of 'ptep_test_and_clear_young' with type 'int(struct vm_area_struct *, long unsigned int, pte_t *)'
296 | static inline int ptep_test_and_clear_young(struct vm_area_struct *vma,
| ^~~~~~~~~~~~~~~~~~~~~~~~~
arch/arm64/include/asm/pgtable.h:906:19: error: static declaration of 'ptep_clear_flush_young' follows non-static declaration
906 | static inline int ptep_clear_flush_young(struct vm_area_struct *vma,
| ^~~~~~~~~~~~~~~~~~~~~~
include/linux/pgtable.h:336:5: note: previous declaration of 'ptep_clear_flush_young' with type 'int(struct vm_area_struct *, long unsigned int, pte_t *)'
336 | int ptep_clear_flush_young(struct vm_area_struct *vma,
| ^~~~~~~~~~~~~~~~~~~~~~
>> arch/arm64/include/asm/pgtable.h:928:19: error: redefinition of 'pmdp_test_and_clear_young'
928 | static inline int pmdp_test_and_clear_young(struct vm_area_struct *vma,
| ^~~~~~~~~~~~~~~~~~~~~~~~~
include/linux/pgtable.h:312:19: note: previous definition of 'pmdp_test_and_clear_young' with type 'int(struct vm_area_struct *, long unsigned int, pmd_t *)'
312 | static inline int pmdp_test_and_clear_young(struct vm_area_struct *vma,
| ^~~~~~~~~~~~~~~~~~~~~~~~~
arch/arm64/include/asm/pgtable.h:937:21: error: redefinition of 'ptep_get_and_clear'
937 | static inline pte_t ptep_get_and_clear(struct mm_struct *mm,
| ^~~~~~~~~~~~~~~~~~
include/linux/pgtable.h:397:21: note: previous definition of 'ptep_get_and_clear' with type 'pte_t(struct mm_struct *, long unsigned int, pte_t *)'
397 | static inline pte_t ptep_get_and_clear(struct mm_struct *mm,
| ^~~~~~~~~~~~~~~~~~
>> arch/arm64/include/asm/pgtable.h:949:21: error: redefinition of 'pmdp_huge_get_and_clear'
949 | static inline pmd_t pmdp_huge_get_and_clear(struct mm_struct *mm,
| ^~~~~~~~~~~~~~~~~~~~~~~
include/linux/pgtable.h:499:21: note: previous definition of 'pmdp_huge_get_and_clear' with type 'pmd_t(struct mm_struct *, long unsigned int, pmd_t *)'
499 | static inline pmd_t pmdp_huge_get_and_clear(struct mm_struct *mm,
| ^~~~~~~~~~~~~~~~~~~~~~~
arch/arm64/include/asm/pgtable.h:965:20: error: redefinition of 'ptep_set_wrprotect'
965 | static inline void ptep_set_wrprotect(struct mm_struct *mm, unsigned long address, pte_t *ptep)
| ^~~~~~~~~~~~~~~~~~
include/linux/pgtable.h:618:20: note: previous definition of 'ptep_set_wrprotect' with type 'void(struct mm_struct *, long unsigned int, pte_t *)'
618 | static inline void ptep_set_wrprotect(struct mm_struct *mm, unsigned long address, pte_t *ptep)
| ^~~~~~~~~~~~~~~~~~
>> arch/arm64/include/asm/pgtable.h:980:20: error: redefinition of 'pmdp_set_wrprotect'
980 | static inline void pmdp_set_wrprotect(struct mm_struct *mm,
| ^~~~~~~~~~~~~~~~~~
include/linux/pgtable.h:643:20: note: previous definition of 'pmdp_set_wrprotect' with type 'void(struct mm_struct *, long unsigned int, pmd_t *)'
643 | static inline void pmdp_set_wrprotect(struct mm_struct *mm,
| ^~~~~~~~~~~~~~~~~~
cc1: some warnings being treated as errors
..
vim +321 include/linux/pgtable.h
e2cda322648122 include/asm-generic/pgtable.h Andrea Arcangeli 2011-01-13 309
e2cda322648122 include/asm-generic/pgtable.h Andrea Arcangeli 2011-01-13 310 #ifndef __HAVE_ARCH_PMDP_TEST_AND_CLEAR_YOUNG
eed9a328aa1ae6 include/linux/pgtable.h Yu Zhao 2022-09-18 311 #if defined(CONFIG_TRANSPARENT_HUGEPAGE) || defined(CONFIG_ARCH_HAS_NONLEAF_PMD_YOUNG)
e2cda322648122 include/asm-generic/pgtable.h Andrea Arcangeli 2011-01-13 312 static inline int pmdp_test_and_clear_young(struct vm_area_struct *vma,
e2cda322648122 include/asm-generic/pgtable.h Andrea Arcangeli 2011-01-13 313 unsigned long address,
e2cda322648122 include/asm-generic/pgtable.h Andrea Arcangeli 2011-01-13 314 pmd_t *pmdp)
e2cda322648122 include/asm-generic/pgtable.h Andrea Arcangeli 2011-01-13 315 {
e2cda322648122 include/asm-generic/pgtable.h Andrea Arcangeli 2011-01-13 316 pmd_t pmd = *pmdp;
e2cda322648122 include/asm-generic/pgtable.h Andrea Arcangeli 2011-01-13 317 int r = 1;
e2cda322648122 include/asm-generic/pgtable.h Andrea Arcangeli 2011-01-13 318 if (!pmd_young(pmd))
e2cda322648122 include/asm-generic/pgtable.h Andrea Arcangeli 2011-01-13 319 r = 0;
e2cda322648122 include/asm-generic/pgtable.h Andrea Arcangeli 2011-01-13 320 else
e2cda322648122 include/asm-generic/pgtable.h Andrea Arcangeli 2011-01-13 @321 set_pmd_at(vma->vm_mm, address, pmdp, pmd_mkold(pmd));
e2cda322648122 include/asm-generic/pgtable.h Andrea Arcangeli 2011-01-13 322 return r;
e2cda322648122 include/asm-generic/pgtable.h Andrea Arcangeli 2011-01-13 323 }
bd5e88ad72b26e include/asm-generic/pgtable.h Vineet Gupta 2015-07-09 324 #else
e2cda322648122 include/asm-generic/pgtable.h Andrea Arcangeli 2011-01-13 325 static inline int pmdp_test_and_clear_young(struct vm_area_struct *vma,
e2cda322648122 include/asm-generic/pgtable.h Andrea Arcangeli 2011-01-13 326 unsigned long address,
e2cda322648122 include/asm-generic/pgtable.h Andrea Arcangeli 2011-01-13 327 pmd_t *pmdp)
e2cda322648122 include/asm-generic/pgtable.h Andrea Arcangeli 2011-01-13 328 {
bd5e88ad72b26e include/asm-generic/pgtable.h Vineet Gupta 2015-07-09 329 BUILD_BUG();
e2cda322648122 include/asm-generic/pgtable.h Andrea Arcangeli 2011-01-13 330 return 0;
e2cda322648122 include/asm-generic/pgtable.h Andrea Arcangeli 2011-01-13 331 }
eed9a328aa1ae6 include/linux/pgtable.h Yu Zhao 2022-09-18 332 #endif /* CONFIG_TRANSPARENT_HUGEPAGE || CONFIG_ARCH_HAS_NONLEAF_PMD_YOUNG */
^1da177e4c3f41 include/asm-generic/pgtable.h Linus Torvalds 2005-04-16 333 #endif
^1da177e4c3f41 include/asm-generic/pgtable.h Linus Torvalds 2005-04-16 334
^1da177e4c3f41 include/asm-generic/pgtable.h Linus Torvalds 2005-04-16 335 #ifndef __HAVE_ARCH_PTEP_CLEAR_YOUNG_FLUSH
e2cda322648122 include/asm-generic/pgtable.h Andrea Arcangeli 2011-01-13 336 int ptep_clear_flush_young(struct vm_area_struct *vma,
e2cda322648122 include/asm-generic/pgtable.h Andrea Arcangeli 2011-01-13 337 unsigned long address, pte_t *ptep);
e2cda322648122 include/asm-generic/pgtable.h Andrea Arcangeli 2011-01-13 338 #endif
e2cda322648122 include/asm-generic/pgtable.h Andrea Arcangeli 2011-01-13 339
e2cda322648122 include/asm-generic/pgtable.h Andrea Arcangeli 2011-01-13 340 #ifndef __HAVE_ARCH_PMDP_CLEAR_YOUNG_FLUSH
bd5e88ad72b26e include/asm-generic/pgtable.h Vineet Gupta 2015-07-09 341 #ifdef CONFIG_TRANSPARENT_HUGEPAGE
bd5e88ad72b26e include/asm-generic/pgtable.h Vineet Gupta 2015-07-09 342 extern int pmdp_clear_flush_young(struct vm_area_struct *vma,
e2cda322648122 include/asm-generic/pgtable.h Andrea Arcangeli 2011-01-13 343 unsigned long address, pmd_t *pmdp);
bd5e88ad72b26e include/asm-generic/pgtable.h Vineet Gupta 2015-07-09 344 #else
bd5e88ad72b26e include/asm-generic/pgtable.h Vineet Gupta 2015-07-09 345 /*
bd5e88ad72b26e include/asm-generic/pgtable.h Vineet Gupta 2015-07-09 346 * Despite relevant to THP only, this API is called from generic rmap code
bd5e88ad72b26e include/asm-generic/pgtable.h Vineet Gupta 2015-07-09 347 * under PageTransHuge(), hence needs a dummy implementation for !THP
bd5e88ad72b26e include/asm-generic/pgtable.h Vineet Gupta 2015-07-09 348 */
bd5e88ad72b26e include/asm-generic/pgtable.h Vineet Gupta 2015-07-09 349 static inline int pmdp_clear_flush_young(struct vm_area_struct *vma,
bd5e88ad72b26e include/asm-generic/pgtable.h Vineet Gupta 2015-07-09 350 unsigned long address, pmd_t *pmdp)
bd5e88ad72b26e include/asm-generic/pgtable.h Vineet Gupta 2015-07-09 351 {
bd5e88ad72b26e include/asm-generic/pgtable.h Vineet Gupta 2015-07-09 352 BUILD_BUG();
bd5e88ad72b26e include/asm-generic/pgtable.h Vineet Gupta 2015-07-09 353 return 0;
bd5e88ad72b26e include/asm-generic/pgtable.h Vineet Gupta 2015-07-09 354 }
bd5e88ad72b26e include/asm-generic/pgtable.h Vineet Gupta 2015-07-09 355 #endif /* CONFIG_TRANSPARENT_HUGEPAGE */
^1da177e4c3f41 include/asm-generic/pgtable.h Linus Torvalds 2005-04-16 356 #endif
^1da177e4c3f41 include/asm-generic/pgtable.h Linus Torvalds 2005-04-16 357
4aaf269c768dba include/linux/pgtable.h Juergen Gross 2022-11-23 358 #ifndef arch_has_hw_nonleaf_pmd_young
4aaf269c768dba include/linux/pgtable.h Juergen Gross 2022-11-23 359 /*
4aaf269c768dba include/linux/pgtable.h Juergen Gross 2022-11-23 360 * Return whether the accessed bit in non-leaf PMD entries is supported on the
4aaf269c768dba include/linux/pgtable.h Juergen Gross 2022-11-23 361 * local CPU.
4aaf269c768dba include/linux/pgtable.h Juergen Gross 2022-11-23 362 */
4aaf269c768dba include/linux/pgtable.h Juergen Gross 2022-11-23 363 static inline bool arch_has_hw_nonleaf_pmd_young(void)
4aaf269c768dba include/linux/pgtable.h Juergen Gross 2022-11-23 364 {
4aaf269c768dba include/linux/pgtable.h Juergen Gross 2022-11-23 365 return IS_ENABLED(CONFIG_ARCH_HAS_NONLEAF_PMD_YOUNG);
4aaf269c768dba include/linux/pgtable.h Juergen Gross 2022-11-23 366 }
4aaf269c768dba include/linux/pgtable.h Juergen Gross 2022-11-23 367 #endif
4aaf269c768dba include/linux/pgtable.h Juergen Gross 2022-11-23 368
e1fd09e3d1dd4a include/linux/pgtable.h Yu Zhao 2022-09-18 369 #ifndef arch_has_hw_pte_young
e1fd09e3d1dd4a include/linux/pgtable.h Yu Zhao 2022-09-18 370 /*
e1fd09e3d1dd4a include/linux/pgtable.h Yu Zhao 2022-09-18 371 * Return whether the accessed bit is supported on the local CPU.
e1fd09e3d1dd4a include/linux/pgtable.h Yu Zhao 2022-09-18 372 *
e1fd09e3d1dd4a include/linux/pgtable.h Yu Zhao 2022-09-18 373 * This stub assumes accessing through an old PTE triggers a page fault.
e1fd09e3d1dd4a include/linux/pgtable.h Yu Zhao 2022-09-18 374 * Architectures that automatically set the access bit should overwrite it.
e1fd09e3d1dd4a include/linux/pgtable.h Yu Zhao 2022-09-18 375 */
e1fd09e3d1dd4a include/linux/pgtable.h Yu Zhao 2022-09-18 376 static inline bool arch_has_hw_pte_young(void)
e1fd09e3d1dd4a include/linux/pgtable.h Yu Zhao 2022-09-18 377 {
e1fd09e3d1dd4a include/linux/pgtable.h Yu Zhao 2022-09-18 378 return false;
e1fd09e3d1dd4a include/linux/pgtable.h Yu Zhao 2022-09-18 379 }
e1fd09e3d1dd4a include/linux/pgtable.h Yu Zhao 2022-09-18 380 #endif
e1fd09e3d1dd4a include/linux/pgtable.h Yu Zhao 2022-09-18 381
e5136e876581ba include/linux/pgtable.h Rick Edgecombe 2023-06-12 382 #ifndef arch_check_zapped_pte
e5136e876581ba include/linux/pgtable.h Rick Edgecombe 2023-06-12 383 static inline void arch_check_zapped_pte(struct vm_area_struct *vma,
e5136e876581ba include/linux/pgtable.h Rick Edgecombe 2023-06-12 384 pte_t pte)
e5136e876581ba include/linux/pgtable.h Rick Edgecombe 2023-06-12 385 {
e5136e876581ba include/linux/pgtable.h Rick Edgecombe 2023-06-12 386 }
e5136e876581ba include/linux/pgtable.h Rick Edgecombe 2023-06-12 387 #endif
e5136e876581ba include/linux/pgtable.h Rick Edgecombe 2023-06-12 388
e5136e876581ba include/linux/pgtable.h Rick Edgecombe 2023-06-12 389 #ifndef arch_check_zapped_pmd
e5136e876581ba include/linux/pgtable.h Rick Edgecombe 2023-06-12 390 static inline void arch_check_zapped_pmd(struct vm_area_struct *vma,
e5136e876581ba include/linux/pgtable.h Rick Edgecombe 2023-06-12 391 pmd_t pmd)
e5136e876581ba include/linux/pgtable.h Rick Edgecombe 2023-06-12 392 {
e5136e876581ba include/linux/pgtable.h Rick Edgecombe 2023-06-12 393 }
e5136e876581ba include/linux/pgtable.h Rick Edgecombe 2023-06-12 394 #endif
e5136e876581ba include/linux/pgtable.h Rick Edgecombe 2023-06-12 395
^1da177e4c3f41 include/asm-generic/pgtable.h Linus Torvalds 2005-04-16 396 #ifndef __HAVE_ARCH_PTEP_GET_AND_CLEAR
e2cda322648122 include/asm-generic/pgtable.h Andrea Arcangeli 2011-01-13 397 static inline pte_t ptep_get_and_clear(struct mm_struct *mm,
e2cda322648122 include/asm-generic/pgtable.h Andrea Arcangeli 2011-01-13 398 unsigned long address,
e2cda322648122 include/asm-generic/pgtable.h Andrea Arcangeli 2011-01-13 399 pte_t *ptep)
e2cda322648122 include/asm-generic/pgtable.h Andrea Arcangeli 2011-01-13 400 {
c33c794828f212 include/linux/pgtable.h Ryan Roberts 2023-06-12 401 pte_t pte = ptep_get(ptep);
e2cda322648122 include/asm-generic/pgtable.h Andrea Arcangeli 2011-01-13 402 pte_clear(mm, address, ptep);
aa232204c46894 include/linux/pgtable.h Kemeng Shi 2023-07-14 403 page_table_check_pte_clear(mm, pte);
e2cda322648122 include/asm-generic/pgtable.h Andrea Arcangeli 2011-01-13 404 return pte;
e2cda322648122 include/asm-generic/pgtable.h Andrea Arcangeli 2011-01-13 405 }
e2cda322648122 include/asm-generic/pgtable.h Andrea Arcangeli 2011-01-13 406 #endif
e2cda322648122 include/asm-generic/pgtable.h Andrea Arcangeli 2011-01-13 407
de8c8e52836d00 include/linux/pgtable.h Tong Tiangen 2022-05-12 408 static inline void ptep_clear(struct mm_struct *mm, unsigned long addr,
de8c8e52836d00 include/linux/pgtable.h Tong Tiangen 2022-05-12 409 pte_t *ptep)
de8c8e52836d00 include/linux/pgtable.h Tong Tiangen 2022-05-12 410 {
de8c8e52836d00 include/linux/pgtable.h Tong Tiangen 2022-05-12 411 ptep_get_and_clear(mm, addr, ptep);
de8c8e52836d00 include/linux/pgtable.h Tong Tiangen 2022-05-12 412 }
de8c8e52836d00 include/linux/pgtable.h Tong Tiangen 2022-05-12 413
6ca297d4784625 include/linux/pgtable.h Peter Zijlstra 2022-10-21 414 #ifdef CONFIG_GUP_GET_PXX_LOW_HIGH
2a4a06da8a4b93 include/linux/pgtable.h Peter Zijlstra 2020-11-13 415 /*
93b3037a148275 include/linux/pgtable.h Peter Zijlstra 2020-11-26 416 * For walking the pagetables without holding any locks. Some architectures
93b3037a148275 include/linux/pgtable.h Peter Zijlstra 2020-11-26 417 * (eg x86-32 PAE) cannot load the entries atomically without using expensive
93b3037a148275 include/linux/pgtable.h Peter Zijlstra 2020-11-26 418 * instructions. We are guaranteed that a PTE will only either go from not
93b3037a148275 include/linux/pgtable.h Peter Zijlstra 2020-11-26 419 * present to present, or present to not present -- it will not switch to a
93b3037a148275 include/linux/pgtable.h Peter Zijlstra 2020-11-26 420 * completely different present page without a TLB flush inbetween; which we
93b3037a148275 include/linux/pgtable.h Peter Zijlstra 2020-11-26 421 * are blocking by holding interrupts off.
2a4a06da8a4b93 include/linux/pgtable.h Peter Zijlstra 2020-11-13 422 *
2a4a06da8a4b93 include/linux/pgtable.h Peter Zijlstra 2020-11-13 423 * Setting ptes from not present to present goes:
2a4a06da8a4b93 include/linux/pgtable.h Peter Zijlstra 2020-11-13 424 *
2a4a06da8a4b93 include/linux/pgtable.h Peter Zijlstra 2020-11-13 425 * ptep->pte_high = h;
2a4a06da8a4b93 include/linux/pgtable.h Peter Zijlstra 2020-11-13 426 * smp_wmb();
2a4a06da8a4b93 include/linux/pgtable.h Peter Zijlstra 2020-11-13 427 * ptep->pte_low = l;
2a4a06da8a4b93 include/linux/pgtable.h Peter Zijlstra 2020-11-13 428 *
2a4a06da8a4b93 include/linux/pgtable.h Peter Zijlstra 2020-11-13 429 * And present to not present goes:
2a4a06da8a4b93 include/linux/pgtable.h Peter Zijlstra 2020-11-13 430 *
2a4a06da8a4b93 include/linux/pgtable.h Peter Zijlstra 2020-11-13 431 * ptep->pte_low = 0;
2a4a06da8a4b93 include/linux/pgtable.h Peter Zijlstra 2020-11-13 432 * smp_wmb();
2a4a06da8a4b93 include/linux/pgtable.h Peter Zijlstra 2020-11-13 433 * ptep->pte_high = 0;
2a4a06da8a4b93 include/linux/pgtable.h Peter Zijlstra 2020-11-13 434 *
2a4a06da8a4b93 include/linux/pgtable.h Peter Zijlstra 2020-11-13 435 * We must ensure here that the load of pte_low sees 'l' IFF pte_high sees 'h'.
2a4a06da8a4b93 include/linux/pgtable.h Peter Zijlstra 2020-11-13 436 * We load pte_high *after* loading pte_low, which ensures we don't see an older
2a4a06da8a4b93 include/linux/pgtable.h Peter Zijlstra 2020-11-13 437 * value of pte_high. *Then* we recheck pte_low, which ensures that we haven't
2a4a06da8a4b93 include/linux/pgtable.h Peter Zijlstra 2020-11-13 438 * picked up a changed pte high. We might have gotten rubbish values from
2a4a06da8a4b93 include/linux/pgtable.h Peter Zijlstra 2020-11-13 439 * pte_low and pte_high, but we are guaranteed that pte_low will not have the
2a4a06da8a4b93 include/linux/pgtable.h Peter Zijlstra 2020-11-13 440 * present bit set *unless* it is 'l'. Because get_user_pages_fast() only
2a4a06da8a4b93 include/linux/pgtable.h Peter Zijlstra 2020-11-13 441 * operates on present ptes we're safe.
2a4a06da8a4b93 include/linux/pgtable.h Peter Zijlstra 2020-11-13 442 */
2a4a06da8a4b93 include/linux/pgtable.h Peter Zijlstra 2020-11-13 443 static inline pte_t ptep_get_lockless(pte_t *ptep)
2a4a06da8a4b93 include/linux/pgtable.h Peter Zijlstra 2020-11-13 444 {
2a4a06da8a4b93 include/linux/pgtable.h Peter Zijlstra 2020-11-13 445 pte_t pte;
2a4a06da8a4b93 include/linux/pgtable.h Peter Zijlstra 2020-11-13 446
2a4a06da8a4b93 include/linux/pgtable.h Peter Zijlstra 2020-11-13 447 do {
2a4a06da8a4b93 include/linux/pgtable.h Peter Zijlstra 2020-11-13 448 pte.pte_low = ptep->pte_low;
2a4a06da8a4b93 include/linux/pgtable.h Peter Zijlstra 2020-11-13 449 smp_rmb();
2a4a06da8a4b93 include/linux/pgtable.h Peter Zijlstra 2020-11-13 450 pte.pte_high = ptep->pte_high;
2a4a06da8a4b93 include/linux/pgtable.h Peter Zijlstra 2020-11-13 451 smp_rmb();
2a4a06da8a4b93 include/linux/pgtable.h Peter Zijlstra 2020-11-13 452 } while (unlikely(pte.pte_low != ptep->pte_low));
2a4a06da8a4b93 include/linux/pgtable.h Peter Zijlstra 2020-11-13 453
2a4a06da8a4b93 include/linux/pgtable.h Peter Zijlstra 2020-11-13 454 return pte;
2a4a06da8a4b93 include/linux/pgtable.h Peter Zijlstra 2020-11-13 455 }
024d232ae4fcd7 include/linux/pgtable.h Peter Zijlstra 2020-11-26 456 #define ptep_get_lockless ptep_get_lockless
024d232ae4fcd7 include/linux/pgtable.h Peter Zijlstra 2020-11-26 457
024d232ae4fcd7 include/linux/pgtable.h Peter Zijlstra 2020-11-26 458 #if CONFIG_PGTABLE_LEVELS > 2
024d232ae4fcd7 include/linux/pgtable.h Peter Zijlstra 2020-11-26 459 static inline pmd_t pmdp_get_lockless(pmd_t *pmdp)
024d232ae4fcd7 include/linux/pgtable.h Peter Zijlstra 2020-11-26 460 {
024d232ae4fcd7 include/linux/pgtable.h Peter Zijlstra 2020-11-26 461 pmd_t pmd;
024d232ae4fcd7 include/linux/pgtable.h Peter Zijlstra 2020-11-26 462
024d232ae4fcd7 include/linux/pgtable.h Peter Zijlstra 2020-11-26 463 do {
024d232ae4fcd7 include/linux/pgtable.h Peter Zijlstra 2020-11-26 464 pmd.pmd_low = pmdp->pmd_low;
024d232ae4fcd7 include/linux/pgtable.h Peter Zijlstra 2020-11-26 465 smp_rmb();
024d232ae4fcd7 include/linux/pgtable.h Peter Zijlstra 2020-11-26 466 pmd.pmd_high = pmdp->pmd_high;
024d232ae4fcd7 include/linux/pgtable.h Peter Zijlstra 2020-11-26 467 smp_rmb();
024d232ae4fcd7 include/linux/pgtable.h Peter Zijlstra 2020-11-26 468 } while (unlikely(pmd.pmd_low != pmdp->pmd_low));
024d232ae4fcd7 include/linux/pgtable.h Peter Zijlstra 2020-11-26 469
024d232ae4fcd7 include/linux/pgtable.h Peter Zijlstra 2020-11-26 470 return pmd;
024d232ae4fcd7 include/linux/pgtable.h Peter Zijlstra 2020-11-26 471 }
024d232ae4fcd7 include/linux/pgtable.h Peter Zijlstra 2020-11-26 472 #define pmdp_get_lockless pmdp_get_lockless
146b42e07494e4 include/linux/pgtable.h Hugh Dickins 2023-07-11 473 #define pmdp_get_lockless_sync() tlb_remove_table_sync_one()
024d232ae4fcd7 include/linux/pgtable.h Peter Zijlstra 2020-11-26 474 #endif /* CONFIG_PGTABLE_LEVELS > 2 */
6ca297d4784625 include/linux/pgtable.h Peter Zijlstra 2022-10-21 475 #endif /* CONFIG_GUP_GET_PXX_LOW_HIGH */
024d232ae4fcd7 include/linux/pgtable.h Peter Zijlstra 2020-11-26 476
2a4a06da8a4b93 include/linux/pgtable.h Peter Zijlstra 2020-11-13 477 /*
2a4a06da8a4b93 include/linux/pgtable.h Peter Zijlstra 2020-11-13 478 * We require that the PTE can be read atomically.
2a4a06da8a4b93 include/linux/pgtable.h Peter Zijlstra 2020-11-13 479 */
024d232ae4fcd7 include/linux/pgtable.h Peter Zijlstra 2020-11-26 480 #ifndef ptep_get_lockless
2a4a06da8a4b93 include/linux/pgtable.h Peter Zijlstra 2020-11-13 481 static inline pte_t ptep_get_lockless(pte_t *ptep)
2a4a06da8a4b93 include/linux/pgtable.h Peter Zijlstra 2020-11-13 482 {
2a4a06da8a4b93 include/linux/pgtable.h Peter Zijlstra 2020-11-13 483 return ptep_get(ptep);
2a4a06da8a4b93 include/linux/pgtable.h Peter Zijlstra 2020-11-13 484 }
024d232ae4fcd7 include/linux/pgtable.h Peter Zijlstra 2020-11-26 485 #endif
024d232ae4fcd7 include/linux/pgtable.h Peter Zijlstra 2020-11-26 486
024d232ae4fcd7 include/linux/pgtable.h Peter Zijlstra 2020-11-26 487 #ifndef pmdp_get_lockless
024d232ae4fcd7 include/linux/pgtable.h Peter Zijlstra 2020-11-26 488 static inline pmd_t pmdp_get_lockless(pmd_t *pmdp)
024d232ae4fcd7 include/linux/pgtable.h Peter Zijlstra 2020-11-26 489 {
024d232ae4fcd7 include/linux/pgtable.h Peter Zijlstra 2020-11-26 490 return pmdp_get(pmdp);
024d232ae4fcd7 include/linux/pgtable.h Peter Zijlstra 2020-11-26 491 }
146b42e07494e4 include/linux/pgtable.h Hugh Dickins 2023-07-11 492 static inline void pmdp_get_lockless_sync(void)
146b42e07494e4 include/linux/pgtable.h Hugh Dickins 2023-07-11 493 {
146b42e07494e4 include/linux/pgtable.h Hugh Dickins 2023-07-11 494 }
024d232ae4fcd7 include/linux/pgtable.h Peter Zijlstra 2020-11-26 495 #endif
2a4a06da8a4b93 include/linux/pgtable.h Peter Zijlstra 2020-11-13 496
e2cda322648122 include/asm-generic/pgtable.h Andrea Arcangeli 2011-01-13 497 #ifdef CONFIG_TRANSPARENT_HUGEPAGE
a00cc7d9dd93d6 include/asm-generic/pgtable.h Matthew Wilcox 2017-02-24 498 #ifndef __HAVE_ARCH_PMDP_HUGE_GET_AND_CLEAR
8809aa2d28d741 include/asm-generic/pgtable.h Aneesh Kumar K.V 2015-06-24 499 static inline pmd_t pmdp_huge_get_and_clear(struct mm_struct *mm,
e2cda322648122 include/asm-generic/pgtable.h Andrea Arcangeli 2011-01-13 500 unsigned long address,
e2cda322648122 include/asm-generic/pgtable.h Andrea Arcangeli 2011-01-13 501 pmd_t *pmdp)
e2cda322648122 include/asm-generic/pgtable.h Andrea Arcangeli 2011-01-13 502 {
e2cda322648122 include/asm-generic/pgtable.h Andrea Arcangeli 2011-01-13 503 pmd_t pmd = *pmdp;
de8c8e52836d00 include/linux/pgtable.h Tong Tiangen 2022-05-12 504
2d28a2275c21d0 include/asm-generic/pgtable.h Catalin Marinas 2012-10-08 @505 pmd_clear(pmdp);
1831414cd729a3 include/linux/pgtable.h Kemeng Shi 2023-07-14 506 page_table_check_pmd_clear(mm, pmd);
de8c8e52836d00 include/linux/pgtable.h Tong Tiangen 2022-05-12 507
e2cda322648122 include/asm-generic/pgtable.h Andrea Arcangeli 2011-01-13 508 return pmd;
49b24d6b41c576 include/asm-generic/pgtable.h Nicolas Kaiser 2011-06-15 509 }
a00cc7d9dd93d6 include/asm-generic/pgtable.h Matthew Wilcox 2017-02-24 510 #endif /* __HAVE_ARCH_PMDP_HUGE_GET_AND_CLEAR */
a00cc7d9dd93d6 include/asm-generic/pgtable.h Matthew Wilcox 2017-02-24 511 #ifndef __HAVE_ARCH_PUDP_HUGE_GET_AND_CLEAR
a00cc7d9dd93d6 include/asm-generic/pgtable.h Matthew Wilcox 2017-02-24 512 static inline pud_t pudp_huge_get_and_clear(struct mm_struct *mm,
a00cc7d9dd93d6 include/asm-generic/pgtable.h Matthew Wilcox 2017-02-24 513 unsigned long address,
a00cc7d9dd93d6 include/asm-generic/pgtable.h Matthew Wilcox 2017-02-24 514 pud_t *pudp)
a00cc7d9dd93d6 include/asm-generic/pgtable.h Matthew Wilcox 2017-02-24 515 {
a00cc7d9dd93d6 include/asm-generic/pgtable.h Matthew Wilcox 2017-02-24 516 pud_t pud = *pudp;
a00cc7d9dd93d6 include/asm-generic/pgtable.h Matthew Wilcox 2017-02-24 517
a00cc7d9dd93d6 include/asm-generic/pgtable.h Matthew Wilcox 2017-02-24 @518 pud_clear(pudp);
931c38e16499a0 include/linux/pgtable.h Kemeng Shi 2023-07-14 519 page_table_check_pud_clear(mm, pud);
de8c8e52836d00 include/linux/pgtable.h Tong Tiangen 2022-05-12 520
a00cc7d9dd93d6 include/asm-generic/pgtable.h Matthew Wilcox 2017-02-24 521 return pud;
a00cc7d9dd93d6 include/asm-generic/pgtable.h Matthew Wilcox 2017-02-24 522 }
a00cc7d9dd93d6 include/asm-generic/pgtable.h Matthew Wilcox 2017-02-24 523 #endif /* __HAVE_ARCH_PUDP_HUGE_GET_AND_CLEAR */
e2cda322648122 include/asm-generic/pgtable.h Andrea Arcangeli 2011-01-13 524 #endif /* CONFIG_TRANSPARENT_HUGEPAGE */
^1da177e4c3f41 include/asm-generic/pgtable.h Linus Torvalds 2005-04-16 525
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
next prev parent reply other threads:[~2023-10-08 15:48 UTC|newest]
Thread overview: 16+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-10-08 10:49 [PATCH 0/3] delayacct: optimization & code simplify brookxu.cn
2023-10-08 10:49 ` [PATCH 1/3] delayacct: introduce delayacct_enabled() to simplify implement brookxu.cn
2023-10-08 10:56 ` Peter Zijlstra
2023-10-08 11:03 ` brookxu
2023-10-08 10:49 ` [PATCH 2/3] delayacct: convert task->delays to a object brookxu.cn
2023-10-08 10:58 ` Peter Zijlstra
2023-10-08 11:10 ` brookxu
2023-10-09 8:43 ` Peter Zijlstra
2023-10-09 10:29 ` brookxu
2023-10-09 14:17 ` Peter Zijlstra
2023-10-09 11:38 ` brookxu
2023-10-09 14:18 ` Peter Zijlstra
2023-10-08 13:42 ` kernel test robot
2023-10-08 15:47 ` kernel test robot [this message]
2023-10-08 16:18 ` kernel test robot
2023-10-08 10:49 ` [PATCH 3/3] delayacct: remove delayacct_on to simplify the code brookxu.cn
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=202310082358.5mUe4Xjy-lkp@intel.com \
--to=lkp@intel.com \
--cc=brookxu.cn@gmail.com \
--cc=bsingharora@gmail.com \
--cc=juri.lelli@redhat.com \
--cc=linux-kernel@vger.kernel.org \
--cc=oe-kbuild-all@lists.linux.dev \
--cc=peterz@infradead.org \
--cc=vincent.guittot@linaro.org \
/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.