linux/arch/powerpc/kvm
Paul Mackerras 23316316c1 powerpc: Revert "Use the POWER8 Micro Partition Prefetch Engine in KVM HV on POWER8"
This reverts commit 9678cdaae9 ("Use the POWER8 Micro Partition
Prefetch Engine in KVM HV on POWER8") because the original commit had
multiple, partly self-cancelling bugs, that could cause occasional
memory corruption.

In fact the logmpp instruction was incorrectly using register r0 as the
source of the buffer address and operation code, and depending on what
was in r0, it would either do nothing or corrupt the 64k page pointed to
by r0.

The logmpp instruction encoding and the operation code definitions could
be corrected, but then there is the problem that there is no clearly
defined way to know when the hardware has finished writing to the
buffer.

The original commit attempted to work around this by aborting the
write-out before starting the prefetch, but this is ineffective in the
case where the virtual core is now executing on a different physical
core from the one where the write-out was initiated.

These problems plus advice from the hardware designers not to use the
function (since the measured performance improvement from using the
feature was actually mostly negative), mean that reverting the code is
the best option.

Fixes: 9678cdaae9 ("Use the POWER8 Micro Partition Prefetch Engine in KVM HV on POWER8")
Signed-off-by: Paul Mackerras <paulus@samba.org>
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
2015-10-21 20:50:30 +11:00
..
book3s_32_mmu_host.c KVM: PPC: Fix warnings from sparse 2015-08-22 11:16:16 +02:00
book3s_32_mmu.c
book3s_32_sr.S
book3s_64_mmu_host.c KVM: PPC: Fix warnings from sparse 2015-08-22 11:16:16 +02:00
book3s_64_mmu_hv.c KVM: PPC: Book3S HV: Fix bug in dirty page tracking 2015-08-22 11:16:18 +02:00
book3s_64_mmu.c
book3s_64_slb.S
book3s_64_vio_hv.c
book3s_64_vio.c
book3s_emulate.c KVM: PPC: Fix warnings from sparse 2015-08-22 11:16:16 +02:00
book3s_exports.c
book3s_hv_builtin.c KVM: PPC: Book3S HV: Implement dynamic micro-threading on POWER8 2015-08-22 11:16:17 +02:00
book3s_hv_interrupts.S
book3s_hv_ras.c
book3s_hv_rm_mmu.c KVM: PPC: Book3S HV: Implement H_CLEAR_REF and H_CLEAR_MOD 2015-08-22 11:16:18 +02:00
book3s_hv_rm_xics.c KVM: PPC: Book3S HV: Make use of unused threads when running guests 2015-08-22 11:16:17 +02:00
book3s_hv_rmhandlers.S KVM: PPC: Book3S HV: Pass the correct trap argument to kvmhv_commence_exit 2015-09-21 09:05:12 +10:00
book3s_hv.c powerpc: Revert "Use the POWER8 Micro Partition Prefetch Engine in KVM HV on POWER8" 2015-10-21 20:50:30 +11:00
book3s_interrupts.S
book3s_mmu_hpte.c
book3s_paired_singles.c KVM: PPC: Fix warnings from sparse 2015-08-22 11:16:16 +02:00
book3s_pr_papr.c kvmppc: Implement H_LOGICAL_CI_{LOAD,STORE} in KVM 2015-04-21 15:21:28 +02:00
book3s_pr.c KVM: add "new" argument to kvm_arch_commit_memory_region 2015-05-28 10:42:58 +02:00
book3s_rmhandlers.S
book3s_rtas.c
book3s_segment.S KVM: PPC: Book3S: correct width in XER handling 2015-08-22 11:16:19 +02:00
book3s_xics.c KVM: PPC: Book3S: Fix typo in top comment about locking 2015-09-04 07:28:05 +10:00
book3s_xics.h KVM: PPC: Book3S HV: Add ICP real mode counters 2015-04-21 15:21:30 +02:00
book3s.c KVM: PPC: Book3S: Take the kvm->srcu lock in kvmppc_h_logical_ci_load/store() 2015-09-21 09:05:15 +10:00
book3s.h
booke_emulate.c
booke_interrupts.S
booke.c KVM: add halt_attempted_poll to VCPU stats 2015-09-16 12:17:00 +02:00
booke.h
bookehv_interrupts.S
e500_emulate.c
e500_mmu_host.c powerpc/mm/thp: Make page table walk safe against thp split/collapse 2015-04-17 11:23:39 +10:00
e500_mmu_host.h
e500_mmu.c KVM: PPC: fix suspicious use of conditional operator 2015-08-22 11:16:16 +02:00
e500.c
e500.h
e500mc.c
emulate_loadstore.c
emulate.c
fpu.S
irq.h
Kconfig KVM: PPC: Remove PPC970 from KVM_BOOK3S_64_HV text in Kconfig 2015-08-22 11:16:16 +02:00
Makefile
mpic.c
powerpc.c KVM: PPC: Fix warnings from sparse 2015-08-22 11:16:16 +02:00
timing.c
timing.h
trace_book3s.h
trace_booke.h
trace_hv.h
trace_pr.h
trace.h