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.

Merge tag 'riscv-for-linus-v6.17-rc8' of git://git.kernel.org/pub/scm/linux/kernel/git/riscv/linux

Pull RISC-V fixes from Paul Walmsley:

- A race-free implementation of pudp_huge_get_and_clear() (based on the
x86 code)

- A MAINTAINERS update to my E-mail address

* tag 'riscv-for-linus-v6.17-rc8' of git://git.kernel.org/pub/scm/linux/kernel/git/riscv/linux:
MAINTAINERS: Update Paul Walmsley's E-mail address
riscv: Use an atomic xchg in pudp_huge_get_and_clear()

+21 -4
+4 -4
MAINTAINERS
··· 1772 1772 X: drivers/iio/*/adjd* 1773 1773 1774 1774 ANALOGBITS PLL LIBRARIES 1775 - M: Paul Walmsley <paul.walmsley@sifive.com> 1775 + M: Paul Walmsley <pjw@kernel.org> 1776 1776 M: Samuel Holland <samuel.holland@sifive.com> 1777 1777 S: Supported 1778 1778 F: drivers/clk/analogbits/* ··· 19296 19296 F: drivers/pci/controller/dwc/*layerscape* 19297 19297 19298 19298 PCI DRIVER FOR FU740 19299 - M: Paul Walmsley <paul.walmsley@sifive.com> 19299 + M: Paul Walmsley <pjw@kernel.org> 19300 19300 M: Greentime Hu <greentime.hu@sifive.com> 19301 19301 M: Samuel Holland <samuel.holland@sifive.com> 19302 19302 L: linux-pci@vger.kernel.org ··· 21656 21656 F: arch/riscv/boot/dts/andes/ 21657 21657 21658 21658 RISC-V ARCHITECTURE 21659 - M: Paul Walmsley <paul.walmsley@sifive.com> 21659 + M: Paul Walmsley <pjw@kernel.org> 21660 21660 M: Palmer Dabbelt <palmer@dabbelt.com> 21661 21661 M: Albert Ou <aou@eecs.berkeley.edu> 21662 21662 R: Alexandre Ghiti <alex@ghiti.fr> ··· 23108 23108 F: drivers/watchdog/simatic-ipc-wdt.c 23109 23109 23110 23110 SIFIVE DRIVERS 23111 - M: Paul Walmsley <paul.walmsley@sifive.com> 23111 + M: Paul Walmsley <pjw@kernel.org> 23112 23112 M: Samuel Holland <samuel.holland@sifive.com> 23113 23113 L: linux-riscv@lists.infradead.org 23114 23114 S: Supported
+17
arch/riscv/include/asm/pgtable.h
··· 942 942 return ptep_test_and_clear_young(vma, address, (pte_t *)pudp); 943 943 } 944 944 945 + #define __HAVE_ARCH_PUDP_HUGE_GET_AND_CLEAR 946 + static inline pud_t pudp_huge_get_and_clear(struct mm_struct *mm, 947 + unsigned long address, pud_t *pudp) 948 + { 949 + #ifdef CONFIG_SMP 950 + pud_t pud = __pud(xchg(&pudp->pud, 0)); 951 + #else 952 + pud_t pud = *pudp; 953 + 954 + pud_clear(pudp); 955 + #endif 956 + 957 + page_table_check_pud_clear(mm, pud); 958 + 959 + return pud; 960 + } 961 + 945 962 static inline int pud_young(pud_t pud) 946 963 { 947 964 return pte_young(pud_pte(pud));