On Wed, 24 Nov 2004, Maciej W. Rozycki wrote: > Agreed. We should probably verify these few "traditional" CPUs to be > handled explicitly ourselves, though, as there is no one else to look > after them. Here's my proposal. It doesn't handle MIPS*R2 processors implicitly yet as that asks for a clean implementation of MIPS architecture determination. I'll do that in a separate step and adjust this code afterwards. For now it should be OK. Agreed? Note, these panic()s really beg for early printk() support -- but doesn't everyone have it already? ;-) Maciej patch-mips-2.6.10-rc1-20041112-mips-tlbwr-0 diff -up --recursive --new-file linux-mips-2.6.10-rc1-20041112.macro/arch/mips/mm/tlbex.c linux-mips-2.6.10-rc1-20041112/arch/mips/mm/tlbex.c --- linux-mips-2.6.10-rc1-20041112.macro/arch/mips/mm/tlbex.c Tue Nov 23 20:55:14 2004 +++ linux-mips-2.6.10-rc1-20041112/arch/mips/mm/tlbex.c Wed Nov 24 20:15:35 2004 @@ -761,10 +761,22 @@ static __init void build_tlb_write_rando case CPU_R4600: case CPU_R4700: + case CPU_R5000: + case CPU_5KC: i_nop(p); i_tlbwr(p); break; + case CPU_R10000: + case CPU_R12000: + case CPU_4KC: + case CPU_SB1: + case CPU_4KSC: + case CPU_20KC: + case CPU_25KF: + i_tlbwr(p); + break; + case CPU_NEVADA: i_nop(p); /* QED specifies 2 nops hazard */ /* @@ -776,6 +788,12 @@ static __init void build_tlb_write_rando l_tlbwr_hazard(l, *p); break; + case CPU_4KEC: + case CPU_24K: + i_ehb(p); + i_tlbwr(p); + break; + case CPU_RM9000: /* * When the JTLB is updated by tlbwi or tlbwr, a subsequent @@ -794,21 +812,9 @@ static __init void build_tlb_write_rando i_ssnop(p); break; - case CPU_R10000: - case CPU_R12000: - case CPU_SB1: - i_tlbwr(p); - break; - default: - /* - * Others are assumed to have one cycle mtc0 hazard, - * and one cycle tlbwr hazard or to understand ehb. - * XXX: This might be overly general. - */ - i_ehb(p); - i_tlbwr(p); - i_ehb(p); + panic("No TLB refill handler yet (CPU type: %d)", + current_cpu_data.cputype); break; } }