]> asedeno.scripts.mit.edu Git - linux.git/commit
KVM: PPC: Book3S HV: Handle unexpected interrupts better
authorPaul Mackerras <paulus@ozlabs.org>
Fri, 1 Sep 2017 06:17:27 +0000 (16:17 +1000)
committerPaul Mackerras <paulus@ozlabs.org>
Sat, 14 Oct 2017 02:35:51 +0000 (13:35 +1100)
commit857b99e1405e219e741c494753fc78871d740d2b
tree1d051d7e1a7ee23b0036446c41c1b26b02ca7acf
parent9b8ebbdb74b5ad76b9dfd8b101af17839174b126
KVM: PPC: Book3S HV: Handle unexpected interrupts better

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: Paul Mackerras <paulus@ozlabs.org>
arch/powerpc/kvm/book3s_hv_builtin.c
arch/powerpc/kvm/book3s_hv_rmhandlers.S