diff options
-rw-r--r-- | MAINTAINERS | 8 | ||||
-rw-r--r-- | arch/riscv/include/asm/pgtable.h | 17 |
2 files changed, 21 insertions, 4 deletions
diff --git a/MAINTAINERS b/MAINTAINERS index cfffa6c3bdf1..35dac69ec0d5 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -1772,7 +1772,7 @@ F: drivers/staging/iio/*/ad* X: drivers/iio/*/adjd* ANALOGBITS PLL LIBRARIES -M: Paul Walmsley <paul.walmsley@sifive.com> +M: Paul Walmsley <pjw@kernel.org> M: Samuel Holland <samuel.holland@sifive.com> S: Supported F: drivers/clk/analogbits/* @@ -19296,7 +19296,7 @@ S: Maintained F: drivers/pci/controller/dwc/*layerscape* PCI DRIVER FOR FU740 -M: Paul Walmsley <paul.walmsley@sifive.com> +M: Paul Walmsley <pjw@kernel.org> M: Greentime Hu <greentime.hu@sifive.com> M: Samuel Holland <samuel.holland@sifive.com> L: linux-pci@vger.kernel.org @@ -21656,7 +21656,7 @@ F: Documentation/devicetree/bindings/timer/andestech,plmt0.yaml F: arch/riscv/boot/dts/andes/ RISC-V ARCHITECTURE -M: Paul Walmsley <paul.walmsley@sifive.com> +M: Paul Walmsley <pjw@kernel.org> M: Palmer Dabbelt <palmer@dabbelt.com> M: Albert Ou <aou@eecs.berkeley.edu> R: Alexandre Ghiti <alex@ghiti.fr> @@ -23108,7 +23108,7 @@ S: Maintained F: drivers/watchdog/simatic-ipc-wdt.c SIFIVE DRIVERS -M: Paul Walmsley <paul.walmsley@sifive.com> +M: Paul Walmsley <pjw@kernel.org> M: Samuel Holland <samuel.holland@sifive.com> L: linux-riscv@lists.infradead.org S: Supported diff --git a/arch/riscv/include/asm/pgtable.h b/arch/riscv/include/asm/pgtable.h index 91697fbf1f90..815067742939 100644 --- a/arch/riscv/include/asm/pgtable.h +++ b/arch/riscv/include/asm/pgtable.h @@ -942,6 +942,23 @@ static inline int pudp_test_and_clear_young(struct vm_area_struct *vma, return ptep_test_and_clear_young(vma, address, (pte_t *)pudp); } +#define __HAVE_ARCH_PUDP_HUGE_GET_AND_CLEAR +static inline pud_t pudp_huge_get_and_clear(struct mm_struct *mm, + unsigned long address, pud_t *pudp) +{ +#ifdef CONFIG_SMP + pud_t pud = __pud(xchg(&pudp->pud, 0)); +#else + pud_t pud = *pudp; + + pud_clear(pudp); +#endif + + page_table_check_pud_clear(mm, pud); + + return pud; +} + static inline int pud_young(pud_t pud) { return pte_young(pud_pte(pud)); |