Paul Mackerras 916ccadccd KVM: PPC: Book3S PR: Fix MSR setting when delivering interrupts
This makes sure that MSR "partial-function" bits are not transferred
to SRR1 when delivering an interrupt.  This was causing failures in
guests running kernels that include commit f3d96e698ed0 ("powerpc/mm:
Overhaul handling of bad page faults", 2017-07-19), which added code
to check bits of SRR1 on instruction storage interrupts (ISIs) that
indicate a bad page fault.  The symptom was that a guest user program
that handled a signal and attempted to return from the signal handler
would get a SIGBUS signal and die.

The code that generated ISIs and some other interrupts would
previously set bits in the guest MSR to indicate the interrupt status
and then call kvmppc_book3s_queue_irqprio().  This technique no
longer works now that kvmppc_inject_interrupt() is masking off those
bits.  Instead we make kvmppc_core_queue_data_storage() and
kvmppc_core_queue_inst_storage() call kvmppc_inject_interrupt()
directly, and make sure that all the places that generate ISIs or
DSIs call kvmppc_core_queue_{data,inst}_storage instead of
kvmppc_book3s_queue_irqprio().

Signed-off-by: Paul Mackerras <paulus@ozlabs.org>
2018-06-13 09:45:28 +10:00
..
2018-04-11 10:28:38 -07:00
2018-04-27 16:13:31 -07:00
2018-05-05 23:05:31 +02:00
2018-04-10 09:58:58 -04:00
2018-04-06 18:31:06 -07:00
2018-04-20 08:25:31 -07:00
2018-04-11 10:28:39 -07:00
2018-04-11 16:02:18 -07:00
2018-04-15 12:27:58 -07:00
2018-05-02 21:47:35 +02:00
2018-05-06 05:46:29 -10:00
2018-04-11 10:28:38 -07:00