• Paul Mackerras's avatar
    KVM: PPC: Book3S HV: Handle unexpected interrupts better · 857b99e1
    Paul Mackerras authored
    At present, if an interrupt (i.e. an exception or trap) occurs in the
    code where KVM is switching the MMU to or from guest context, we jump
    to kvmppc_bad_host_intr, where we simply spin with interrupts disabled.
    In this situation, it is hard to debug what happened because we get no
    indication as to which interrupt occurred or where.  Typically we get
    a cascade of stall and soft lockup warnings from other CPUs.
    
    In order to get more information for debugging, this adds code to
    create a stack frame on the emergency stack and save register values
    to it.  We start half-way down the emergency stack in order to give
    ourselves some chance of being able to do a stack trace on secondary
    threads that are already on the emergency stack.
    
    On POWER7 or POWER8, we then just spin, as before, because we don't
    know what state the MMU context is in or what other threads are doing,
    and we can't switch back to host context without coordinating with
    other threads.  On POWER9 we can do better; there we load up the host
    MMU context and jump to C code, which prints an oops message to the
    console and panics.
    Signed-off-by: default avatarPaul Mackerras <paulus@ozlabs.org>
    857b99e1
book3s_hv_rmhandlers.S 80.8 KB