• Paul Mackerras's avatar
    KVM: PPC: Book3S HV: Fix duplication of host SLB entries · cda4a147
    Paul Mackerras authored
    Since commit 6964e6a4 ("KVM: PPC: Book3S HV: Do SLB load/unload
    with guest LPCR value loaded", 2018-01-11), we have been seeing
    occasional machine check interrupts on POWER8 systems when running
    KVM guests, due to SLB multihit errors.
    
    This turns out to be due to the guest exit code reloading the host
    SLB entries from the SLB shadow buffer when the SLB was not previously
    cleared in the guest entry path.  This can happen because the path
    which skips from the guest entry code to the guest exit code without
    entering the guest now does the skip before the SLB is cleared and
    loaded with guest values, but the host values are loaded after the
    point in the guest exit path that we skip to.
    
    To fix this, we move the code that reloads the host SLB values up
    so that it occurs just before the point in the guest exit code (the
    label guest_bypass:) where we skip to from the guest entry path.
    Reported-by: default avatarAlexey Kardashevskiy <aik@ozlabs.ru>
    Fixes: 6964e6a4 ("KVM: PPC: Book3S HV: Do SLB load/unload with guest LPCR value loaded")
    Tested-by: default avatarAlexey Kardashevskiy <aik@ozlabs.ru>
    Signed-off-by: default avatarPaul Mackerras <paulus@ozlabs.org>
    cda4a147
book3s_hv_rmhandlers.S 83.8 KB