Skip to content
  • Long Li's avatar
    HV: properly delay KVP packets when negotiation is in progress · 68747bc0
    Long Li authored
    commit a3ade8cc upstream.
    
    The host may send multiple negotiation packets
    (due to timeout) before the KVP user-mode daemon
    is connected. KVP user-mode daemon is connected.
    We need to defer processing those packets
    until the daemon is negotiated and connected.
    It's okay for guest to respond
    to all negotiation packets.
    
    In addition, the host may send multiple staged
    KVP requests as soon as negotiation is done.
    We need to properly process those packets using one
    tasklet for exclusive access to ring buffer.
    
    This patch is based on the work of
    Nick Meier <Nick.Meier@microsoft.com>.
    
    The above is the original changelog of
    a3ade8cc ("HV: properly delay KVP packets when negotiation is in progress"
    
    Here I re-worked the original patch because the mainline version
    can't work for the linux-4.4.y branch, on which channel->callback_event
    doesn't exist yet. In the mainline, channel->callback_event was added by:
    631e63a9 ("vmbus: change to per channel tasklet"). Here we don't want
    to backport it to v4.4, as it requires extra supporting changes and fixes,
    which are unnecessary as to the KVP bug we're trying to resolve.
    
    NOTE: before this patch is used, we should cherry-pick the other related
    3 patches from the mainline first:
    
    The background of this backport request is that: recently Wang Jian reported
    some KVP issues: https://github.com/LIS/lis-next/issues/593
    
    :
    e.g. the /var/lib/hyperv/.kvp_pool_* files can not be updated, and sometimes
    if the hv_kvp_daemon doesn't timely start, the host may not be able to query
    the VM's IP address via KVP.
    
    Reported-by: default avatarWang Jian <jianjian.wang1@gmail.com>
    Tested-by: default avatarWang Jian <jianjian.wang1@gmail.com>
    Signed-off-by: default avatarDexuan Cui <decui@microsoft.com>
    Signed-off-by: default avatarLong Li <longli@microsoft.com>
    Signed-off-by: default avatarK. Y. Srinivasan <kys@microsoft.com>
    Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
    68747bc0