• Nicholas Piggin's avatar
    powerpc/64s: relocation, register save fixes for system reset interrupt · fb479e44
    Nicholas Piggin authored
    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: 948cf67c ("powerpc: Add NAP mode support on Power7 in HV mode")
    Cc: stable@vger.kernel.org # v3.0+
    Signed-off-by: default avatarNicholas Piggin <npiggin@gmail.com>
    Acked-by: default avatarGautham R. Shenoy <ego@linux.vnet.ibm.com>
    Acked-by: default avatarBalbir Singh <bsingharora@gmail.com>
    Signed-off-by: default avatarMichael Ellerman <mpe@ellerman.id.au>
    fb479e44
exception-64s.h 17.5 KB