powerpc/mm: e300c2/c3/c4 TLB errata workaround
Complete workaround for DTLB errata in e300c2/c3/c4 processors. Due to the bug, the hardware-implemented LRU algorythm always goes to way 1 of the TLB. This fix implements the proposed software workaround in form of a LRW table for chosing the TLB-way. Based on patch from David Jander <david@protonic.nl> Signed-off-by: Kumar Gala <galak@kernel.crashing.org> Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
This commit is contained in:
committed by
Benjamin Herrenschmidt
parent
eb3436a013
commit
2319f12395
@@ -1090,7 +1090,8 @@ static struct cpu_spec __initdata cpu_specs[] = {
|
||||
.cpu_name = "e300c2",
|
||||
.cpu_features = CPU_FTRS_E300C2,
|
||||
.cpu_user_features = PPC_FEATURE_32 | PPC_FEATURE_HAS_MMU,
|
||||
.mmu_features = MMU_FTR_USE_HIGH_BATS,
|
||||
.mmu_features = MMU_FTR_USE_HIGH_BATS |
|
||||
MMU_FTR_NEED_DTLB_SW_LRU,
|
||||
.icache_bsize = 32,
|
||||
.dcache_bsize = 32,
|
||||
.cpu_setup = __setup_cpu_603,
|
||||
@@ -1103,7 +1104,8 @@ static struct cpu_spec __initdata cpu_specs[] = {
|
||||
.cpu_name = "e300c3",
|
||||
.cpu_features = CPU_FTRS_E300,
|
||||
.cpu_user_features = COMMON_USER,
|
||||
.mmu_features = MMU_FTR_USE_HIGH_BATS,
|
||||
.mmu_features = MMU_FTR_USE_HIGH_BATS |
|
||||
MMU_FTR_NEED_DTLB_SW_LRU,
|
||||
.icache_bsize = 32,
|
||||
.dcache_bsize = 32,
|
||||
.cpu_setup = __setup_cpu_603,
|
||||
@@ -1118,7 +1120,8 @@ static struct cpu_spec __initdata cpu_specs[] = {
|
||||
.cpu_name = "e300c4",
|
||||
.cpu_features = CPU_FTRS_E300,
|
||||
.cpu_user_features = COMMON_USER,
|
||||
.mmu_features = MMU_FTR_USE_HIGH_BATS,
|
||||
.mmu_features = MMU_FTR_USE_HIGH_BATS |
|
||||
MMU_FTR_NEED_DTLB_SW_LRU,
|
||||
.icache_bsize = 32,
|
||||
.dcache_bsize = 32,
|
||||
.cpu_setup = __setup_cpu_603,
|
||||
|
Reference in New Issue
Block a user