[PATCH V2 1/1] Drivers: hv: vmbus: Enable interrupt driven flow control

KY Srinivasan kys at microsoft.com
Sun Sep 7 21:41:41 UTC 2014



> -----Original Message-----
> From: Amos Kong [mailto:kongjianjun at gmail.com]
> Sent: Sunday, September 7, 2014 4:44 AM
> To: KY Srinivasan
> Cc: gregkh at linuxfoundation.org; open list; devel at linuxdriverproject.org;
> olaf at aepfle.de; apw at canonical.com; Jason Wang
> Subject: Re: [PATCH V2 1/1] Drivers: hv: vmbus: Enable interrupt driven flow
> control
> 
> On Sat, Sep 6, 2014 at 8:29 AM, K. Y. Srinivasan <kys at microsoft.com> wrote:
> >
> > In win8 we have a feature that allows for interrupt driven flow
> > management for host/guest communication. For instance, if the host
> > were blocked because there was no space available in the ringbuffer,
> > the host could request that the guest send an interrupt when space
> > becomes available in the ringbuffer (when the guest drains the ringbuffer).
> >
> > While this feature was implemented in the guest a while ago, we had
> > not advertised that the guest supported this feature. This patch
> > advertises the support to the host.
> >
> > For pre-win8 hosts, this has no effect since the size of the
> > ringbuffer control structure has not changed and all changes have been
> > backward compatible - unused/reserved space has been used to
> implement
> > this feature.
> >
> > In this version of the patch I have cleaned up the commit log based on
> > feedback from Greg KH.
> >
> > Signed-off-by: K. Y. Srinivasan <kys at microsoft.com>
> > ---
> >  drivers/hv/ring_buffer.c |    5 +++++
> >  1 files changed, 5 insertions(+), 0 deletions(-)
> >
> > diff --git a/drivers/hv/ring_buffer.c b/drivers/hv/ring_buffer.c index
> > 15db66b..6361d12 100644
> > --- a/drivers/hv/ring_buffer.c
> > +++ b/drivers/hv/ring_buffer.c
> > @@ -361,6 +361,11 @@ int hv_ringbuffer_init(struct hv_ring_buffer_info
> *ring_info,
> >         ring_info->ring_buffer->read_index =
> >                 ring_info->ring_buffer->write_index = 0;
> >
> > +       /*
> > +        * Set the feature bit for enabling flow control.
> > +        */
> > +       ring_info->ring_buffer->feature_bits.value = 1;
> > +
> 
> This feature is enabled, do we need to reset  pending_send_sz and
> reserved1[12], reserved1[4028] here?
> 
> >         ring_info->ring_size = buflen;
> >         ring_info->ring_datasize = buflen - sizeof(struct
> > hv_ring_buffer);
> >

All the pages for the ring buffer have already been zeroed out including the shared control structure.
Look at vmbus_open() (drivers/hv/channel.c) where we allocate the ring buffer - we pass in the flag to
Zero out the pages.

Regards,

K. Y
> > --
> > 1.7.4.1
> >
> > --
> > To unsubscribe from this list: send the line "unsubscribe
> > linux-kernel" in the body of a message to majordomo at vger.kernel.org
> > More majordomo info at  http://vger.kernel.org/majordomo-info.html
> > Please read the FAQ at  http://www.tux.org/lkml/


More information about the devel mailing list