powerpc/64s/hash: Use POWER9 SLBIA IH=3 variant in switch_slb
POWER9 introduces SLBIA IH=3, which invalidates all SLB entries and associated lookaside information that have a class value of 1, which Linux assigns to user addresses. This matches what switch_slb wants, and allows a simple fast implementation that avoids the slb_cache complexity. As a side-effect, the POWER5 < DD2.1 SLB invalidation workaround is also avoided on POWER9. Process context switching rate is improved about 2.2% for a small process that hits the slb cache which is the best case for the current code. Signed-off-by: Nicholas Piggin <npiggin@gmail.com> Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
This commit is contained in:

committed by
Michael Ellerman

parent
5141c182d7
commit
82d8f4c22f
@@ -2393,10 +2393,13 @@ static void dump_one_paca(int cpu)
|
||||
}
|
||||
}
|
||||
DUMP(p, vmalloc_sllp, "%#-*x");
|
||||
DUMP(p, slb_cache_ptr, "%#-*x");
|
||||
for (i = 0; i < SLB_CACHE_ENTRIES; i++)
|
||||
printf(" %-*s[%d] = 0x%016x\n",
|
||||
22, "slb_cache", i, p->slb_cache[i]);
|
||||
|
||||
if (!early_cpu_has_feature(CPU_FTR_ARCH_300)) {
|
||||
DUMP(p, slb_cache_ptr, "%#-*x");
|
||||
for (i = 0; i < SLB_CACHE_ENTRIES; i++)
|
||||
printf(" %-*s[%d] = 0x%016x\n",
|
||||
22, "slb_cache", i, p->slb_cache[i]);
|
||||
}
|
||||
|
||||
DUMP(p, rfi_flush_fallback_area, "%-*px");
|
||||
#endif
|
||||
|
Reference in New Issue
Block a user