summaryrefslogtreecommitdiffstats
path: root/include/linux/hyperv.h
diff options
context:
space:
mode:
authorK. Y. Srinivasan2016-01-28 07:29:45 +0100
committerGreg Kroah-Hartman2016-02-08 06:34:12 +0100
commitfe760e4d64fe5c17c39e86c410d41f6587ee88bc (patch)
treee25710bde0e1e4da9a127a3e6c449c08696c1940 /include/linux/hyperv.h
parentDrivers: hv: vmbus: Eliminate the spin lock on the read path (diff)
downloadkernel-qcow2-linux-fe760e4d64fe5c17c39e86c410d41f6587ee88bc.tar.gz
kernel-qcow2-linux-fe760e4d64fe5c17c39e86c410d41f6587ee88bc.tar.xz
kernel-qcow2-linux-fe760e4d64fe5c17c39e86c410d41f6587ee88bc.zip
Drivers: hv: vmbus: Give control over how the ring access is serialized
On the channel send side, many of the VMBUS device drivers explicity serialize access to the outgoing ring buffer. Give more control to the VMBUS device drivers in terms how to serialize accesss to the outgoing ring buffer. The default behavior will be to aquire the ring lock to preserve the current behavior. Signed-off-by: K. Y. Srinivasan <kys@microsoft.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'include/linux/hyperv.h')
-rw-r--r--include/linux/hyperv.h16
1 files changed, 16 insertions, 0 deletions
diff --git a/include/linux/hyperv.h b/include/linux/hyperv.h
index c056f058dcf8..d23dab0d770b 100644
--- a/include/linux/hyperv.h
+++ b/include/linux/hyperv.h
@@ -811,8 +811,24 @@ struct vmbus_channel {
* signaling control.
*/
enum hv_signal_policy signal_policy;
+ /*
+ * On the channel send side, many of the VMBUS
+ * device drivers explicity serialize access to the
+ * outgoing ring buffer. Give more control to the
+ * VMBUS device drivers in terms how to serialize
+ * accesss to the outgoing ring buffer.
+ * The default behavior will be to aquire the
+ * ring lock to preserve the current behavior.
+ */
+ bool acquire_ring_lock;
+
};
+static inline void set_channel_lock_state(struct vmbus_channel *c, bool state)
+{
+ c->acquire_ring_lock = state;
+}
+
static inline bool is_hvsock_channel(const struct vmbus_channel *c)
{
return !!(c->offermsg.offer.chn_flags &