|
@@ -326,9 +326,11 @@ void switch_slb(struct task_struct *tsk, struct mm_struct *mm)
|
|
|
__slb_flush_and_rebolt();
|
|
|
}
|
|
|
|
|
|
- /* Workaround POWER5 < DD2.1 issue */
|
|
|
- if (offset == 1 || offset > SLB_CACHE_ENTRIES)
|
|
|
- asm volatile("slbie %0" : : "r" (slbie_data));
|
|
|
+ if (!cpu_has_feature(CPU_FTR_ARCH_207S)) {
|
|
|
+ /* Workaround POWER5 < DD2.1 issue */
|
|
|
+ if (offset == 1 || offset > SLB_CACHE_ENTRIES)
|
|
|
+ asm volatile("slbie %0" : : "r" (slbie_data));
|
|
|
+ }
|
|
|
|
|
|
get_paca()->slb_cache_ptr = 0;
|
|
|
copy_mm_to_paca(mm);
|