ppc64: Fix some bogus warnings & cleanup tlbie code path
PATCH 1/1 ppc64: Fix some bogus warnings & cleanup tlbie code path
Hi !
This patch fixes some warnings that popped up with the removal of -Wno-uninitialized around the code doing tlbie's.
Signed-off-by Benjamin Herrenschmidt <[email protected]>
===== arch/ppc64/kernel/pSeries_lpar.c 1.39 vs edited =====
arch/ppc64/kernel/pSeries_lpar.c +3 -2
@@ -660,14 +660,15 @@int i;unsigned long flags;struct ppc64_tlb_batch *batch = &__get_cpu_var (ppc64_tlb_batch); +int lock_tlbie = !(cur_cpu_spec->cpu_features &CPU_FTR_LOCKLESS_TLBIE ); -if (!(cur_cpu_spec->cpu_features &CPU_FTR_LOCKLESS_TLBIE )) +if (lock_tlbie)spin_lock_irqsave (&pSeries_lpar_tlbie_lock, flags);for (i =0 ; i < number; i++)flush_hash_page (context, batch->addr[i], batch->pte[i], local); -if (!(cur_cpu_spec->cpu_features &CPU_FTR_LOCKLESS_TLBIE )) +if (lock_tlbie)spin_unlock_irqrestore (&pSeries_lpar_tlbie_lock, flags); }
===== arch/ppc64/kernel/pSeries_htab.c 1.15 vs edited =====
arch/ppc64/kernel/pSeries_htab.c +14 -9
@@ -220,10 +220,12 @@if ((cur_cpu_spec->cpu_features &CPU_FTR_TLBIEL ) && !large && local) {tlbiel (va); }else { -if (!(cur_cpu_spec->cpu_features &CPU_FTR_LOCKLESS_TLBIE )) +int lock_tlbie = !(cur_cpu_spec->cpu_features &CPU_FTR_LOCKLESS_TLBIE ); + +if (lock_tlbie)spin_lock (&pSeries_tlbie_lock);tlbie (va, large); -if (!(cur_cpu_spec->cpu_features &CPU_FTR_LOCKLESS_TLBIE )) +if (lock_tlbie)spin_unlock (&pSeries_tlbie_lock); }
@@ -243,6 +245,7 @@unsigned long vsid, va, vpn, flags;long slot;HPTE *hptep; +int lock_tlbie = !(cur_cpu_spec->cpu_features &CPU_FTR_LOCKLESS_TLBIE ); vsid =get_kernel_vsid (ea); va = (vsid <<28 ) | (ea &0x0fffffff );
@@ -256,10 +259,10 @@set_pp_bit (newpp, hptep);/* Ensure it is out of the tlb too */ -if (!(cur_cpu_spec->cpu_features &CPU_FTR_LOCKLESS_TLBIE )) +if (lock_tlbie)spin_lock_irqsave (&pSeries_tlbie_lock, flags);tlbie (va,0 ); -if (!(cur_cpu_spec->cpu_features &CPU_FTR_LOCKLESS_TLBIE )) +if (lock_tlbie)spin_unlock_irqrestore (&pSeries_tlbie_lock, flags); }
@@ -270,6 +273,7 @@Hpte_dword0 dw0;unsigned long avpn = va >>23 ;unsigned long flags; +int lock_tlbie = !(cur_cpu_spec->cpu_features &CPU_FTR_LOCKLESS_TLBIE );if (large) avpn &= ~0x1UL ;
@@ -291,10 +295,10 @@if ((cur_cpu_spec->cpu_features &CPU_FTR_TLBIEL ) && !large && local) {tlbiel (va); }else { -if (!(cur_cpu_spec->cpu_features &CPU_FTR_LOCKLESS_TLBIE )) +if (lock_tlbie)spin_lock (&pSeries_tlbie_lock);tlbie (va, large); -if (!(cur_cpu_spec->cpu_features &CPU_FTR_LOCKLESS_TLBIE )) +if (lock_tlbie)spin_unlock (&pSeries_tlbie_lock); }local_irq_restore (flags);
@@ -364,8 +368,9 @@ asmvolatile ("ptesync" :::"memory" ); }else { -/* XXX double check that it is safe to take this late */ -if (!(cur_cpu_spec->cpu_features &CPU_FTR_LOCKLESS_TLBIE )) +int lock_tlbie = !(cur_cpu_spec->cpu_features &CPU_FTR_LOCKLESS_TLBIE ); + +if (lock_tlbie)spin_lock (&pSeries_tlbie_lock); asmvolatile ("ptesync" :::"memory" );
@@ -375,7 +380,7 @@ asmvolatile ("eieio; tlbsync; ptesync" :::"memory" ); -if (!(cur_cpu_spec->cpu_features &CPU_FTR_LOCKLESS_TLBIE )) +if (lock_tlbie)spin_unlock (&pSeries_tlbie_lock); }