Comment 13 for bug 1556264

Revision history for this message
Joshua R. Poulson (jrp) wrote :

A more comprehensive fix has been submitted upstream, but in the meantime, we'd like the first fix to be considered for inclusion in Wily.

The more comprehensive change is a 7-part series submitted Mar 23 in lkml, and uses full memory barrier before making signaling decisions:

"Drivers: hv: vmbus: Cleanup the ring buffer code"
Cleanup and fix a bug in the ring buffer code. Also implement
APIs for in place consumption of received packets.

K. Y. Srinivasan (7):
  Drivers: hv: vmbus: Introduce functions for estimating room in the
    ring buffer
  Drivers: hv: vmbus: Use READ_ONCE() to read variables that are
    volatile
  Drivers: hv: vmbus: Fix a bug in hv_need_to_signal_on_read()
  Drivers: hv: vmbus: Use the new virt_xx barrier code
  Drivers: hv: vmbus: Export the vmbus_set_event() API
  Drivers: hv: vmbus: Move some ring buffer functions to hyperv.h
  Drivers: hv: vmbus: Implement APIs to support "in place" consumption
    of vmbus packets

 drivers/hv/connection.c | 1 +
 drivers/hv/hyperv_vmbus.h | 2 -
 drivers/hv/ring_buffer.c | 79 ++++-------------------
 include/linux/hyperv.h | 156 +++++++++++++++++++++++++++++++++++++++++++++
 4 files changed, 169 insertions(+), 69 deletions(-)

We will test this new change and respond to upstream feedback. The first fix in this bug works for our mutual customers at the moment.