• Alexey Kardashevskiy's avatar
    KVM: PPC: Book3S PR: Fix WIMG handling under pHyp · 6c7d47c3
    Alexey Kardashevskiy authored
    Commit 96df2267 ("KVM: PPC: Book3S PR: Preserve storage control bits")
    added code to preserve WIMG bits but it missed 2 special cases:
    - a magic page in kvmppc_mmu_book3s_64_xlate() and
    - guest real mode in kvmppc_handle_pagefault().
    
    For these ptes, WIMG was 0 and pHyp failed on these causing a guest to
    stop in the very beginning at NIP=0x100 (due to bd9166ff "KVM: PPC:
    Book3S PR: Exit KVM on failed mapping").
    
    According to LoPAPR v1.1 14.5.4.1.2 H_ENTER:
    
     The hypervisor checks that the WIMG bits within the PTE are appropriate
     for the physical page number else H_Parameter return. (For System Memory
     pages WIMG=0010, or, 1110 if the SAO option is enabled, and for IO pages
     WIMG=01**.)
    
    This hence initializes WIMG to non-zero value HPTE_R_M (0x10), as expected
    by pHyp.
    
    [paulus@ozlabs.org - fix compile for 32-bit]
    
    Cc: stable@vger.kernel.org # v4.11+
    Fixes: 96df2267 "KVM: PPC: Book3S PR: Preserve storage control bits"
    Signed-off-by: default avatarAlexey Kardashevskiy <aik@ozlabs.ru>
    Tested-by: default avatarRuediger Oertel <ro@suse.de>
    Reviewed-by: default avatarGreg Kurz <groug@kaod.org>
    Tested-by: default avatarGreg Kurz <groug@kaod.org>
    Signed-off-by: default avatarPaul Mackerras <paulus@ozlabs.org>
    6c7d47c3
book3s_64_mmu.c 15.8 KB