Skip to content

Commit

Permalink
MIPS: Fix TLBR-use hazards for R2 cores in the TLB reload handlers
Browse files Browse the repository at this point in the history
MIPS R2 documents state that an execution hazard barrier is needed
after a TLBR before reading EntryLo.

Original patch by Leonid Yegoshin <Leonid.Yegoshin@imgtec.com>.

Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
Patchwork: https://patchwork.linux-mips.org/patch/5526/
  • Loading branch information
Ralf Baechle committed Jun 21, 2013
1 parent b90b380 commit 73acc7d
Showing 1 changed file with 26 additions and 0 deletions.
26 changes: 26 additions & 0 deletions arch/mips/mm/tlbex.c
Original file line number Diff line number Diff line change
Expand Up @@ -1935,6 +1935,19 @@ static void __cpuinit build_r4000_tlb_load_handler(void)
uasm_i_nop(&p);

uasm_i_tlbr(&p);

switch (current_cpu_type()) {
default:
if (cpu_has_mips_r2) {
uasm_i_ehb(&p);

case CPU_CAVIUM_OCTEON:
case CPU_CAVIUM_OCTEON_PLUS:
case CPU_CAVIUM_OCTEON2:
break;
}
}

/* Examine entrylo 0 or 1 based on ptr. */
if (use_bbit_insns()) {
uasm_i_bbit0(&p, wr.r2, ilog2(sizeof(pte_t)), 8);
Expand Down Expand Up @@ -1989,6 +2002,19 @@ static void __cpuinit build_r4000_tlb_load_handler(void)
uasm_i_nop(&p);

uasm_i_tlbr(&p);

switch (current_cpu_type()) {
default:
if (cpu_has_mips_r2) {
uasm_i_ehb(&p);

case CPU_CAVIUM_OCTEON:
case CPU_CAVIUM_OCTEON_PLUS:
case CPU_CAVIUM_OCTEON2:
break;
}
}

/* Examine entrylo 0 or 1 based on ptr. */
if (use_bbit_insns()) {
uasm_i_bbit0(&p, wr.r2, ilog2(sizeof(pte_t)), 8);
Expand Down

0 comments on commit 73acc7d

Please sign in to comment.