• Palmer Dabbelt's avatar
    Merge patch series "riscv: support fast gup" · 7f43d57b
    Palmer Dabbelt authored
    Jisheng Zhang <jszhang@kernel.org> says:
    
    This series adds fast gup support to riscv.
    
    The First patch fixes a bug in __p*d_free_tlb(). Per the riscv
    privileged spec, if non-leaf PTEs I.E pmd, pud or p4d is modified, a
    sfence.vma is a must.
    
    The 2nd patch is a preparation patch.
    
    The last two patches do the real work:
    In order to implement fast gup we need to ensure that the page
    table walker is protected from page table pages being freed from
    under it.
    
    riscv situation is more complicated than other architectures: some
    riscv platforms may use IPI to perform TLB shootdown, for example,
    those platforms which support AIA, usually the riscv_ipi_for_rfence is
    true on these platforms; some riscv platforms may rely on the SBI to
    perform TLB shootdown, usually the riscv_ipi_for_rfence is false on
    these platforms. To keep software pagetable walkers safe in this case
    we switch to RCU based table free (MMU_GATHER_RCU_TABLE_FREE). See the
    comment below 'ifdef CONFIG_MMU_GATHER_RCU_TABLE_FREE' in
    include/asm-generic/tlb.h for more details.
    
    This patch enables MMU_GATHER_RCU_TABLE_FREE, then use
    
    *tlb_remove_page_ptdesc() for those platforms which use IPI to perform
    TLB shootdown;
    
    *tlb_remove_ptdesc() for those platforms which use SBI to perform TLB
    shootdown;
    
    Both case mean that disabling interrupts will block the free and
    protect the fast gup page walker.
    
    So after the 3rd patch, everything is well prepared, let's select
    HAVE_FAST_GUP if MMU.
    
    * b4-shazam-merge:
      riscv: enable HAVE_FAST_GUP if MMU
      riscv: enable MMU_GATHER_RCU_TABLE_FREE for SMP && MMU
      riscv: tlb: convert __p*d_free_tlb() to inline functions
      riscv: tlb: fix __p*d_free_tlb()
    
    Link: https://lore.kernel.org/r/20231219175046.2496-1-jszhang@kernel.orgSigned-off-by: default avatarPalmer Dabbelt <palmer@rivosinc.com>
    7f43d57b
Kconfig 32.4 KB