summaryrefslogtreecommitdiff
path: root/arch/powerpc/mm/init_64.c
diff options
context:
space:
mode:
authorNicholas Piggin <npiggin@gmail.com>2017-03-17 15:13:20 +1000
committerMichael Ellerman <mpe@ellerman.id.au>2017-03-20 20:35:12 +1100
commit6d98ce0be541d4a3cfbb52cd75072c0339ebb500 (patch)
treec82e26270f43b62c901d506e99adc1b6d0717d91 /arch/powerpc/mm/init_64.c
parent07f5ab6002a4f0b633f3495157166f9f6180871b (diff)
powerpc/64s: Fix idle wakeup potential to clobber registers
We concluded there may be a window where the idle wakeup code could get to pnv_wakeup_tb_loss() (which clobbers non-volatile GPRs), but the hardware may set SRR1[46:47] to 01b (no state loss) which would result in the wakeup code failing to restore non-volatile GPRs. I was not able to trigger this condition with trivial tests on real hardware or simulator, but the ISA (at least 2.07) seems to allow for it, and Gautham says that it can happen if there is an exception pending when the sleep/winkle instruction is executed. Fixes: 1706567117ba ("powerpc/kvm: make hypervisor state restore a function") Cc: stable@vger.kernel.org # v4.8+ Signed-off-by: Nicholas Piggin <npiggin@gmail.com> Acked-by: Gautham R. Shenoy <ego@linux.vnet.ibm.com> Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
Diffstat (limited to 'arch/powerpc/mm/init_64.c')
0 files changed, 0 insertions, 0 deletions