powerpc/32s: Use mmu_has_feature(MMU_FTR_HPTE_TABLE) instead of checking Hash var
authorChristophe Leroy <christophe.leroy@csgroup.eu>
Thu, 22 Oct 2020 06:29:30 +0000 (06:29 +0000)
committerMichael Ellerman <mpe@ellerman.id.au>
Wed, 9 Dec 2020 05:45:08 +0000 (16:45 +1100)
We now have an early hash table on hash MMU, so no need to check
Hash var to know if the Hash table is set of not.

Use mmu_has_feature(MMU_FTR_HPTE_TABLE) instead. This will allow
optimisation via jump_label.

Signed-off-by: Christophe Leroy <christophe.leroy@csgroup.eu>
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
Link: https://lore.kernel.org/r/f1766631a9e014b6433f1a3c12c726ddfce34220.1603348103.git.christophe.leroy@csgroup.eu
arch/powerpc/mm/book3s32/mmu.c
arch/powerpc/mm/book3s32/tlb.c

index 78c13ca540d4ff384780df842d48ef606c5a3e28..98d08697f3a9ec12e616e3b4d3dc0a41b587e544 100644 (file)
@@ -306,7 +306,7 @@ static void hash_preload(struct mm_struct *mm, unsigned long ea)
 {
        pmd_t *pmd;
 
-       if (!Hash)
+       if (!mmu_has_feature(MMU_FTR_HPTE_TABLE))
                return;
        pmd = pmd_off(mm, ea);
        if (!pmd_none(*pmd))
index b6c7427daa6fef74e966f84bad3a69e0f1837e9c..ae5dbba9580543afba14ab9d659cec5a8f3874eb 100644 (file)
@@ -36,7 +36,7 @@ void flush_hash_entry(struct mm_struct *mm, pte_t *ptep, unsigned long addr)
 {
        unsigned long ptephys;
 
-       if (Hash) {
+       if (mmu_has_feature(MMU_FTR_HPTE_TABLE)) {
                ptephys = __pa(ptep) & PAGE_MASK;
                flush_hash_pages(mm->context.id, addr, ptephys, 1);
        }
@@ -49,7 +49,7 @@ EXPORT_SYMBOL(flush_hash_entry);
  */
 void tlb_flush(struct mmu_gather *tlb)
 {
-       if (!Hash) {
+       if (!mmu_has_feature(MMU_FTR_HPTE_TABLE)) {
                /*
                 * 603 needs to flush the whole TLB here since
                 * it doesn't use a hash table.
@@ -80,7 +80,7 @@ static void flush_range(struct mm_struct *mm, unsigned long start,
        unsigned int ctx = mm->context.id;
 
        start &= PAGE_MASK;
-       if (!Hash) {
+       if (!mmu_has_feature(MMU_FTR_HPTE_TABLE)) {
                if (end - start <= PAGE_SIZE)
                        _tlbie(start);
                else
@@ -122,7 +122,7 @@ void flush_tlb_mm(struct mm_struct *mm)
 {
        struct vm_area_struct *mp;
 
-       if (!Hash) {
+       if (!mmu_has_feature(MMU_FTR_HPTE_TABLE)) {
                _tlbia();
                return;
        }
@@ -143,7 +143,7 @@ void flush_tlb_page(struct vm_area_struct *vma, unsigned long vmaddr)
        struct mm_struct *mm;
        pmd_t *pmd;
 
-       if (!Hash) {
+       if (!mmu_has_feature(MMU_FTR_HPTE_TABLE)) {
                _tlbie(vmaddr);
                return;
        }