• Michael Ellerman's avatar
    powerpc: Fix is_kvm_guest() / kvm_para_available() · 95839225
    Michael Ellerman authored
    Commit a21d1bec ("powerpc: Reintroduce is_kvm_guest() as a fast-path
    check") added is_kvm_guest() and changed kvm_para_available() to use it.
    
    is_kvm_guest() checks a static key, kvm_guest, and that static key is
    set in check_kvm_guest().
    
    The problem is check_kvm_guest() is only called on pseries, and even
    then only in some configurations. That means is_kvm_guest() always
    returns false on all non-pseries and some pseries depending on
    configuration. That's a bug.
    
    For PR KVM guests this is noticable because they no longer do live
    patching of themselves, which can be detected by the omission of a
    message in dmesg such as:
    
      KVM: Live patching for a fast VM worked
    
    To fix it make check_kvm_guest() an initcall, to ensure it's always
    called at boot. It needs to be core so that it runs before
    kvm_guest_init() which is postcore. To be an initcall it needs to return
    int, where 0 means success, so update that.
    
    We still call it manually in pSeries_smp_probe(), because that runs
    before init calls are run.
    
    Fixes: a21d1bec ("powerpc: Reintroduce is_kvm_guest() as a fast-path check")
    Signed-off-by: default avatarMichael Ellerman <mpe@ellerman.id.au>
    Link: https://lore.kernel.org/r/20210623130514.2543232-1-mpe@ellerman.id.au
    95839225
firmware.c 999 Bytes