On Fri, 27 Jan 2017 16:01:37 -0800 Stephen Hemminger <[email protected]> wrote:
> On Fri, 27 Jan 2017 18:08:35 +0000 > KY Srinivasan <[email protected]> wrote: > > > > -----Original Message----- > > > From: Stephen Hemminger [mailto:[email protected]] > > > Sent: Monday, January 23, 2017 5:40 PM > > > To: KY Srinivasan <[email protected]>; Haiyang Zhang > > > <[email protected]> > > > Cc: [email protected]; Stephen Hemminger > > > <[email protected]> > > > Subject: [PATCH 07/14] vmbus: remove conditional locking of vmbus_write > > > > > > All current usage of vmbus write uses the acquire_lock flag, therefore > > > having it be optional is unnecessary. This also fixes a sparse warning > > > since sparse doesn't like when a function has conditional locking. > > > > In order to avoid cross-tree dependency, I got this functionality into > > Greg's > > tree first. I plan to submit patches to netvsc that will use this > > functionality. > > As you know, we hold a higher level lock in the protocol stack when we send > > on > > a sub-channel. This will avoid an unnecessary spin lock round trip in the > > data path. > > > > Regards, > > > > K. Y > > > > The following (untested) changes VMBUS ring buffer to use a lockless update > policy. > > From b4a0ff829fe617aacb5bcea44eb473692f1180d2 Mon Sep 17 00:00:00 2001 > From: Stephen Hemminger <[email protected]> > Date: Fri, 27 Jan 2017 15:46:48 -0800 > Subject: [PATCH] vmbus: implement lock-less ring buffer > > Use a reservation similar to ftrace to make vmbus ring buffer writes > lock free. Other similar implementions are FreeBSD buf_ring, and DPDK > rte_ring. > > The algorithm uses cmpxchg to atomically reserve an area in the ring > buffer. Then the data is copied into the ring, and the updates to the > head of the ring are ordered. > > Signed-off-by: Stephen Hemminger <[email protected]> For a description of how this works see: http://dpdk.org/doc/guides/prog_guide/ring_lib.html _______________________________________________ devel mailing list [email protected] http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel
