Re: [PATCH char-misc-next 02/13] misc: mic: SCIF ring buffer infrastructure

From: Sudeep Dutt
Date: Fri Jan 09 2015 - 19:28:38 EST


On Fri, 2015-01-09 at 15:05 -0800, Greg Kroah-Hartman wrote:
> On Wed, Dec 10, 2014 at 11:47:42AM -0800, Sudeep Dutt wrote:
> > SCIF ring buffer is a single producer, single consumer byte stream ring
> > buffer optimized for avoiding reads across the PCIe bus. The ring buffer is
> > used to implement a receive queue for SCIF driver messaging between nodes and
> > for byte stream messaging between SCIF endpoints. Each SCIF node has a
> > receive queue for every other SCIF node, and each connected endpoint has a
> > receive queue for messages from its peer. This pair of receive queues is
> > referred to as a SCIF queue pair.
>
> And the reason you aren't using the built-in kernel ring buffer code is
> why?
>

This simple byte stream ring buffer is in our performance data path for
small messages and is optimized to avoid reads across the PCIe bus while
adding the required barriers and hardware workarounds for the MIC
Coprocessor. I will add some more documentation here in the v2 which I
will post early next week.

We did not find other ring buffers in the kernel which were tailored for
our use case across PCIe. I am guessing (please correct me) that you are
referring to the ring buffer in include/linux/ring_buffer.h. It does not
seem to be designed for being used between two independent OS's across
the PCIe bus. Please let me know your thoughts.

Thanks,
Sudeep Dutt


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