diff options
author | Alexander Gordeev <agordeev@linux.ibm.com> | 2023-11-03 18:43:52 +0300 |
---|---|---|
committer | Vasily Gorbik <gor@linux.ibm.com> | 2023-11-06 00:34:58 +0300 |
commit | 02e790ee3077c0571794d0ab8f71413edbe129cc (patch) | |
tree | afffc15a298067c566ff696da481a2390b264947 | |
parent | 0031f1c7cf2632a068a80261071b9b1f2d32d836 (diff) | |
download | linux-02e790ee3077c0571794d0ab8f71413edbe129cc.tar.xz |
s390/mm: make pte_free_tlb() similar to pXd_free_tlb()
Make pte_free_tlb() look similar to pXd_free_tlb() family
functions.
Reviewed-by: Heiko Carstens <hca@linux.ibm.com>
Reviewed-by: Gerald Schaefer <gerald.schaefer@linux.ibm.com>
Signed-off-by: Alexander Gordeev <agordeev@linux.ibm.com>
Signed-off-by: Vasily Gorbik <gor@linux.ibm.com>
-rw-r--r-- | arch/s390/include/asm/pgalloc.h | 1 | ||||
-rw-r--r-- | arch/s390/include/asm/tlb.h | 4 | ||||
-rw-r--r-- | arch/s390/mm/pgalloc.c | 11 |
3 files changed, 3 insertions, 13 deletions
diff --git a/arch/s390/include/asm/pgalloc.h b/arch/s390/include/asm/pgalloc.h index 376b4b23bdaa..502d655fe6ae 100644 --- a/arch/s390/include/asm/pgalloc.h +++ b/arch/s390/include/asm/pgalloc.h @@ -25,7 +25,6 @@ void crst_table_free(struct mm_struct *, unsigned long *); unsigned long *page_table_alloc(struct mm_struct *); struct page *page_table_alloc_pgste(struct mm_struct *mm); void page_table_free(struct mm_struct *, unsigned long *); -void page_table_free_rcu(struct mmu_gather *, unsigned long *, unsigned long); void page_table_free_pgste(struct page *page); extern int page_table_allocate_pgste; diff --git a/arch/s390/include/asm/tlb.h b/arch/s390/include/asm/tlb.h index 3f0fec0a1e3c..d1455a601adc 100644 --- a/arch/s390/include/asm/tlb.h +++ b/arch/s390/include/asm/tlb.h @@ -69,7 +69,9 @@ static inline void pte_free_tlb(struct mmu_gather *tlb, pgtable_t pte, tlb->mm->context.flush_mm = 1; tlb->freed_tables = 1; tlb->cleared_pmds = 1; - page_table_free_rcu(tlb, (unsigned long *) pte, address); + if (mm_alloc_pgste(tlb->mm)) + gmap_unlink(tlb->mm, (unsigned long *)pte, address); + tlb_remove_ptdesc(tlb, pte); } /* diff --git a/arch/s390/mm/pgalloc.c b/arch/s390/mm/pgalloc.c index 8159f4fade3f..008e487c94a6 100644 --- a/arch/s390/mm/pgalloc.c +++ b/arch/s390/mm/pgalloc.c @@ -191,17 +191,6 @@ void page_table_free(struct mm_struct *mm, unsigned long *table) pagetable_pte_dtor_free(ptdesc); } -void page_table_free_rcu(struct mmu_gather *tlb, unsigned long *table, - unsigned long vmaddr) -{ - struct mm_struct *mm; - - mm = tlb->mm; - if (mm_alloc_pgste(mm)) - gmap_unlink(mm, table, vmaddr); - tlb_remove_ptdesc(tlb, table); -} - void __tlb_remove_table(void *table) { struct ptdesc *ptdesc = virt_to_ptdesc(table); |