• Paul Mackerras's avatar
    KVM: PPC: Book3S HV: Fixes for late-joining threads · 2f12f034
    Paul Mackerras authored
    If a thread in a virtual core becomes runnable while other threads
    in the same virtual core are already running in the guest, it is
    possible for the latecomer to join the others on the core without
    first pulling them all out of the guest.  Currently this only happens
    rarely, when a vcpu is first started.  This fixes some bugs and
    omissions in the code in this case.
    
    First, we need to check for VPA updates for the latecomer and make
    a DTL entry for it.  Secondly, if it comes along while the master
    vcpu is doing a VPA update, we don't need to do anything since the
    master will pick it up in kvmppc_run_core.  To handle this correctly
    we introduce a new vcore state, VCORE_STARTING.  Thirdly, there is
    a race because we currently clear the hardware thread's hwthread_req
    before waiting to see it get to nap.  A latecomer thread could have
    its hwthread_req cleared before it gets to test it, and therefore
    never increment the nap_count, leading to messages about wait_for_nap
    timeouts.
    Signed-off-by: default avatarPaul Mackerras <paulus@samba.org>
    Signed-off-by: default avatarAlexander Graf <agraf@suse.de>
    2f12f034
book3s_hv.c 44.6 KB