Commit 6a7c1a47 authored by Mahesh Salgaonkar's avatar Mahesh Salgaonkar Committed by Greg Kroah-Hartman

powerpc/book3s: Fix partial invalidation of TLBs in MCE code.

commit 682e77c8 upstream.

The existing MCE code calls flush_tlb hook with IS=0 (single page) resulting
in partial invalidation of TLBs which is not right. This patch fixes
that by passing IS=0xc00 to invalidate whole TLB for successful recovery
from TLB and ERAT errors.
Signed-off-by: default avatarMahesh Salgaonkar <mahesh@linux.vnet.ibm.com>
Signed-off-by: default avatarMichael Ellerman <mpe@ellerman.id.au>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
parent 4b43ad93
...@@ -79,7 +79,7 @@ static long mce_handle_derror(uint64_t dsisr, uint64_t slb_error_bits) ...@@ -79,7 +79,7 @@ static long mce_handle_derror(uint64_t dsisr, uint64_t slb_error_bits)
} }
if (dsisr & P7_DSISR_MC_TLB_MULTIHIT_MFTLB) { if (dsisr & P7_DSISR_MC_TLB_MULTIHIT_MFTLB) {
if (cur_cpu_spec && cur_cpu_spec->flush_tlb) if (cur_cpu_spec && cur_cpu_spec->flush_tlb)
cur_cpu_spec->flush_tlb(TLBIEL_INVAL_PAGE); cur_cpu_spec->flush_tlb(TLBIEL_INVAL_SET);
/* reset error bits */ /* reset error bits */
dsisr &= ~P7_DSISR_MC_TLB_MULTIHIT_MFTLB; dsisr &= ~P7_DSISR_MC_TLB_MULTIHIT_MFTLB;
} }
...@@ -110,7 +110,7 @@ static long mce_handle_common_ierror(uint64_t srr1) ...@@ -110,7 +110,7 @@ static long mce_handle_common_ierror(uint64_t srr1)
break; break;
case P7_SRR1_MC_IFETCH_TLB_MULTIHIT: case P7_SRR1_MC_IFETCH_TLB_MULTIHIT:
if (cur_cpu_spec && cur_cpu_spec->flush_tlb) { if (cur_cpu_spec && cur_cpu_spec->flush_tlb) {
cur_cpu_spec->flush_tlb(TLBIEL_INVAL_PAGE); cur_cpu_spec->flush_tlb(TLBIEL_INVAL_SET);
handled = 1; handled = 1;
} }
break; break;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment