On Fri, 27 Jan 2017 16:01:37 -0800 Stephen Hemminger <stephen@xxxxxxxxxxxxxxxxxx> wrote: > On Fri, 27 Jan 2017 18:08:35 +0000 > KY Srinivasan <kys@xxxxxxxxxxxxx> wrote: > > > > -----Original Message----- > > > From: Stephen Hemminger [mailto:stephen@xxxxxxxxxxxxxxxxxx] > > > Sent: Monday, January 23, 2017 5:40 PM > > > To: KY Srinivasan <kys@xxxxxxxxxxxxx>; Haiyang Zhang > > > <haiyangz@xxxxxxxxxxxxx> > > > Cc: devel@xxxxxxxxxxxxxxxxxxxxxx; Stephen Hemminger > > > <sthemmin@xxxxxxxxxxxxx> > > > 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 <sthemmin@xxxxxxxxxxxxx> > 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 <sthemmin@xxxxxxxxxxxxx> For a description of how this works see: http://dpdk.org/doc/guides/prog_guide/ring_lib.html _______________________________________________ devel mailing list devel@xxxxxxxxxxxxxxxxxxxxxx http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel