]> git.baikalelectronics.ru Git - kernel.git/commit
powerpc/64s: relocation, register save fixes for system reset interrupt
authorNicholas Piggin <npiggin@gmail.com>
Thu, 13 Oct 2016 02:17:14 +0000 (13:17 +1100)
committerMichael Ellerman <mpe@ellerman.id.au>
Thu, 27 Oct 2016 10:55:14 +0000 (21:55 +1100)
commit2325ced0826ff4edb8cca7be78430bd6316e2e97
tree998673dbd87d521a08c1e579d20cdb9d10b9b302
parent659131e808a493ce125062765873a29867742dab
powerpc/64s: relocation, register save fixes for system reset interrupt

This patch does a couple of things. First of all, powernv immediately
explodes when running a relocated kernel, because the system reset
exception for handling sleeps does not do correct relocated branches.

Secondly, the sleep handling code trashes the condition and cfar
registers, which we would like to preserve for debugging purposes (for
non-sleep case exception).

This patch changes the exception to use the standard format that saves
registers before any tests or branches are made. It adds the test for
idle-wakeup as an "extra" to break out of the normal exception path.
Then it branches to a relocated idle handler that calls the various
idle handling functions.

After this patch, POWER8 CPU simulator now boots powernv kernel that is
running at non-zero.

Fixes: 81b156451793 ("powerpc: Add NAP mode support on Power7 in HV mode")
Cc: stable@vger.kernel.org # v3.0+
Signed-off-by: Nicholas Piggin <npiggin@gmail.com>
Acked-by: Gautham R. Shenoy <ego@linux.vnet.ibm.com>
Acked-by: Balbir Singh <bsingharora@gmail.com>
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
arch/powerpc/include/asm/exception-64s.h
arch/powerpc/kernel/exceptions-64s.S