• Paul Mackerras's avatar
    powerpc/64: Call H_REGISTER_PROC_TBL when running as a HPT guest on POWER9 · dbfcf3cb
    Paul Mackerras authored
    On POWER9, since commit cc3d2940 ("powerpc/64: Enable use of radix
    MMU under hypervisor on POWER9", 2017-01-30), we set both the radix and
    HPT bits in the client-architecture-support (CAS) vector, which tells
    the hypervisor that we can do either radix or HPT.  According to PAPR,
    if we use this combination we are promising to do a H_REGISTER_PROC_TBL
    hcall later on to let the hypervisor know whether we are doing radix
    or HPT.  We currently do this call if we are doing radix but not if
    we are doing HPT.  If the hypervisor is able to support both radix
    and HPT guests, it would be entitled to defer allocation of the HPT
    until the H_REGISTER_PROC_TBL call, and to fail any attempts to create
    HPTEs until the H_REGISTER_PROC_TBL call.  Thus we need to do a
    H_REGISTER_PROC_TBL call when we are doing HPT; otherwise we may
    crash at boot time.
    
    This adds the code to call H_REGISTER_PROC_TBL in this case, before
    we attempt to create any HPT entries using H_ENTER.
    
    Fixes: cc3d2940 ("powerpc/64: Enable use of radix MMU under hypervisor on POWER9")
    Cc: stable@vger.kernel.org # v4.11+
    Signed-off-by: default avatarPaul Mackerras <paulus@ozlabs.org>
    Reviewed-by: default avatarSuraj Jitindar Singh <sjitindarsingh@gmail.com>
    Signed-off-by: default avatarMichael Ellerman <mpe@ellerman.id.au>
    dbfcf3cb
lpar.c 25.6 KB