Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

riscv: mm: pmdp_huge_get_and_clear(): avoid atomic ops when !CONFIG_SMP

When !CONFIG_SMP, there's no need for atomic operations in
pmdp_huge_get_and_clear(), so, similar to what x86 does, let's not use
atomics in this case. See also commit 546e42c8c6d94 ("riscv: Use an
atomic xchg in pudp_huge_get_and_clear()").

Cc: Alexandre Ghiti <alex@ghiti.fr>
Signed-off-by: Paul Walmsley <pjw@kernel.org>

+6
+6
arch/riscv/include/asm/pgtable.h
··· 997 997 static inline pmd_t pmdp_huge_get_and_clear(struct mm_struct *mm, 998 998 unsigned long address, pmd_t *pmdp) 999 999 { 1000 + #ifdef CONFIG_SMP 1000 1001 pmd_t pmd = __pmd(atomic_long_xchg((atomic_long_t *)pmdp, 0)); 1002 + #else 1003 + pmd_t pmd = *pmdp; 1004 + 1005 + pmd_clear(pmdp); 1006 + #endif 1001 1007 1002 1008 page_table_check_pmd_clear(mm, pmd); 1003 1009