This bug is missing log files that will aid in diagnosing the problem.
>From a terminal window please run:

apport-collect 1632786

and then change the status of the bug to 'Confirmed'.

If, due to the nature of the issue you have encountered, you are unable
to run this command, please add a comment stating that fact and change
the bug status to 'Confirmed'.

This change has been made by an automated script, maintained by the
Ubuntu Kernel Team.

** Changed in: linux (Ubuntu)
       Status: New => Incomplete

You received this bug notification because you are a member of Kernel
Packages, which is subscribed to linux in Ubuntu.

  [Hyper-V] do not lose pending heartbeat vmbus packets

Status in linux package in Ubuntu:
Status in linux source package in Trusty:
Status in linux source package in Xenial:
Status in linux source package in Yakkety:

Bug description:
  Hyper-V hosts can continue sending heartbeat packets to guests
  independent of whether earlier packets have responses, which led to a
  potential issue of these packets being dropped when responses took too
  long to process. Lost heartbeats will lead to the host diagnosing that
  the guest is dead and should be shut down and restarted.

  The following patch was submitted upstream but has not yet been
  accepted. I will add the upstream commit ID once the patch goes into

  From: Long Li <>

  The host keeps sending heartbeat packets independent of the
  guest responding to them.  Even though we respond to the heartbeat messages at
  interrupt level, we can have situations where there maybe multiple heartbeat
  messages pending that have not been responded to. For instance this occurs 
when the
  VM is paused and the host continues to send the heartbeat messages.
  Address this issue by draining and responding to all
  the heartbeat messages that maybe pending.

  Signed-off-by: Long Li <>
  Signed-off-by: K. Y. Srinivasan <>
  CC: Stable <>
          V2: Submit the patch to stable as well - Joshua R. Poulson 

   drivers/hv/hv_util.c |   10 +++++++---
   1 files changed, 7 insertions(+), 3 deletions(-)

  diff --git a/drivers/hv/hv_util.c b/drivers/hv/hv_util.c
  index 4aa3cb6..bcd0630 100644
  --- a/drivers/hv/hv_util.c
  +++ b/drivers/hv/hv_util.c
  @@ -314,10 +314,14 @@ static void heartbeat_onchannelcallback(void *context)
          u8 *hbeat_txf_buf = util_heartbeat.recv_buffer;
          struct icmsg_negotiate *negop = NULL;

  -       vmbus_recvpacket(channel, hbeat_txf_buf,
  -                        PAGE_SIZE, &recvlen, &requestid);
  +       while (1) {
  +               vmbus_recvpacket(channel, hbeat_txf_buf,
  +                                PAGE_SIZE, &recvlen, &requestid);
  +               if (!recvlen)
  +                       break;

  -       if (recvlen > 0) {
                  icmsghdrp = (struct icmsg_hdr *)&hbeat_txf_buf[
                                  sizeof(struct vmbuspipe_hdr)];

To manage notifications about this bug go to:

Mailing list:
Post to     :
Unsubscribe :
More help   :

Reply via email to