s390/tlb: make cleared_pXs flags consistent with generic code
authorAlexander Gordeev <agordeev@linux.ibm.com>
Thu, 10 Dec 2020 11:32:51 +0000 (12:32 +0100)
committerVasily Gorbik <gor@linux.ibm.com>
Tue, 19 Jan 2021 11:29:25 +0000 (12:29 +0100)
On s390 cleared_pXs flags in struct mmu_gather are set by
corresponding pXd_free_tlb functions. Such approach is
inconsistent with how the generic code interprets these
flags, e.g pte_free_tlb() frees a PTE table - or a PMD
level entity, and so on.

This update does not bring any functional change, since
s390 does not use the flags at the moment.

Fixes: 9de7d833e3708 ("s390/tlb: Convert to generic mmu_gather")
Link: https://lore.kernel.org/lkml/fbb00ac0-9104-8d25-f225-7b3d1b17a01f@huawei.com/
Reported-by: Zhenyu Ye <yezhenyu2@huawei.com>
Suggested-by: Gerald Schaefer <gerald.schaefer@linux.ibm.com>
Reviewed-by: Christian Borntraeger <borntraeger@de.ibm.com>
Signed-off-by: Alexander Gordeev <agordeev@linux.ibm.com>
Signed-off-by: Heiko Carstens <hca@linux.ibm.com>
Signed-off-by: Vasily Gorbik <gor@linux.ibm.com>
arch/s390/include/asm/tlb.h

index 954fa8c..fe6407f 100644 (file)
@@ -66,7 +66,7 @@ static inline void pte_free_tlb(struct mmu_gather *tlb, pgtable_t pte,
        __tlb_adjust_range(tlb, address, PAGE_SIZE);
        tlb->mm->context.flush_mm = 1;
        tlb->freed_tables = 1;
-       tlb->cleared_ptes = 1;
+       tlb->cleared_pmds = 1;
        /*
         * page_table_free_rcu takes care of the allocation bit masks
         * of the 2K table fragments in the 4K page table page,
@@ -110,7 +110,6 @@ static inline void p4d_free_tlb(struct mmu_gather *tlb, p4d_t *p4d,
        __tlb_adjust_range(tlb, address, PAGE_SIZE);
        tlb->mm->context.flush_mm = 1;
        tlb->freed_tables = 1;
-       tlb->cleared_p4ds = 1;
        tlb_remove_table(tlb, p4d);
 }
 
@@ -128,7 +127,7 @@ static inline void pud_free_tlb(struct mmu_gather *tlb, pud_t *pud,
                return;
        tlb->mm->context.flush_mm = 1;
        tlb->freed_tables = 1;
-       tlb->cleared_puds = 1;
+       tlb->cleared_p4ds = 1;
        tlb_remove_table(tlb, pud);
 }