• Paul Mackerras's avatar
    powerpc/64: Include KVM guest test in all interrupt vectors · 31a40e2b
    Paul Mackerras authored
    Currently, if HV KVM is configured but PR KVM isn't, we don't include
    a test to see whether we were interrupted in KVM guest context for the
    set of interrupts which get delivered directly to the guest by hardware
    if they occur in the guest.  This includes things like program
    interrupts.
    
    However, the recent bug where userspace could set the MSR for a VCPU
    to have an illegal value in the TS field, and thus cause a TM Bad Thing
    type of program interrupt on the hrfid that enters the guest, showed that
    we can never be completely sure that these interrupts can never occur
    in the guest entry/exit code.  If one of these interrupts does happen
    and we have HV KVM configured but not PR KVM, then we end up trying to
    run the handler in the host with the MMU set to the guest MMU context,
    which generally ends badly.
    
    Thus, for robustness it is better to have the test in every interrupt
    vector, so that if some way is found to trigger some interrupt in the
    guest entry/exit path, we can handle it without immediately crashing
    the host.
    
    This means that the distinction between KVMTEST and KVMTEST_PR goes
    away.  Thus we delete KVMTEST_PR and associated macros and use KVMTEST
    everywhere that we previously used either KVMTEST_PR or KVMTEST.  It
    also means that SOFTEN_TEST_HV_201 becomes the same as SOFTEN_TEST_PR,
    so we deleted SOFTEN_TEST_HV_201 and use SOFTEN_TEST_PR instead.
    Signed-off-by: default avatarPaul Mackerras <paulus@samba.org>
    Signed-off-by: default avatarMichael Ellerman <mpe@ellerman.id.au>
    31a40e2b
exception-64s.h 18.4 KB