Skip to contentSkip to conversation

vhost: infrastructure changes for 3.16

GIT PULL Michael S. Tsirkin 2 participants 3 messages Jun 11, 2014 – Jun 12, 2014

Subsystems (6)
Networking Network drivers SCSI KVM +2 more subsystems
lore
Share & tools
lore

Michael S. Tsirkin

author maintainer
#0 lore raw

Hi Linus,
Please pull the following.
Please note this needs to be merged before merging target-pending PULL which Nicholas will be sending out shortly.

Thanks!

The following changes since commit 1860e379875dfe7271c649058aeddffe5afd9d0d:

Linux 3.15 (2014-06-08 11:19:54 -0700)

are available in the git repository at:

git://git.kernel.org/pub/scm/linux/kernel/git/mst/vhost.git tags/for_linus

for you to fetch changes up to 47283bef7ed356629467d1fac61687756e48f254:

vhost: move memory pointer to VQs (2014-06-09 16:21:07 +0300)

----------------------------------------------------------------
vhost: infrastructure changes for 3.16

This reworks vhost core dropping unnecessary RCU uses in favor of VQ mutexes which are used on fast path anyway. This fixes worst-case latency for users which change the memory mappings a lot.
Memory allocation for vhost-net now supports fallback on vmalloc (same as for vhost-scsi) this makes it possible to create the device on systems where memory is very fragmented, with slightly lower performance.

----------------------------------------------------------------
Michael S. Tsirkin (4):
vhost-net: extend device allocation to vmalloc
vhost: replace rcu with mutex
vhost: move acked_features to VQs
vhost: move memory pointer to VQs

 drivers/vhost/vhost.h | 19 ++++------
 drivers/vhost/net.c   | 35 ++++++++++++-------
 drivers/vhost/scsi.c  | 26 ++++++++------
 drivers/vhost/test.c  | 11 +++---
 drivers/vhost/vhost.c | 97 ++++++++++++++++++++++++++-------------------------
 5 files changed, 101 insertions(+), 87 deletions(-)
#1 lore raw
Quoted 4 lines · Michael S. Tsirkin

Memory allocation for vhost-net now supports fallback on vmalloc (same as for vhost-scsi) this makes it possible to create the device on systems where memory is very fragmented, with slightly lower performance.

Thanks Michael, I'm glad to see that this change made its way into mainline after all! Would you be willing to take the following on top?

From: Romain Francoise <[email protected]>
Date: Thu, 12 Jun 2014 10:26:40 +0200
Subject: [PATCH] vhost-net: don't open-code kvfree

Commit 23cc5a991c ("vhost-net: extend device allocation to vmalloc") added another open-coded version of kvfree (which is available since v3.15-rc5), nuke it.

---
 drivers/vhost/net.c | 12 ++----------
 1 file changed, 2 insertions(+), 10 deletions(-)
drivers/vhost/net.c +2 -10
index 971a760..8dae2f7 100644
@@ -700,14 +700,6 @@ static void handle_rx_net(struct vhost_work *work)
 	handle_rx(net);
 }
 
-static void vhost_net_free(void *addr)
-{
-	if (is_vmalloc_addr(addr))
-		vfree(addr);
-	else
-		kfree(addr);
-}
-
 static int vhost_net_open(struct inode *inode, struct file *f)
 {
 	struct vhost_net *n;
@@ -723,7 +715,7 @@ static int vhost_net_open(struct inode *inode, struct file *f)
 	}
 	vqs = kmalloc(VHOST_NET_VQ_MAX * sizeof(*vqs), GFP_KERNEL);
 	if (!vqs) {
-		vhost_net_free(n);
+		kvfree(n);
 		return -ENOMEM;
 	}
 
@@ -840,7 +832,7 @@ static int vhost_net_release(struct inode *inode, struct file *f)
 	 * since jobs can re-queue themselves. */
 	vhost_net_flush(n);
 	kfree(n->dev.vqs);
-	vhost_net_free(n);
+	kvfree(n);
 	return 0;
 }
 
Signature · 1 line
2.0.0
author maintainer
#2 lore raw
Quoted 15 lines · Romain Francoise
Quoted 4 lines · Michael S. Tsirkin

Memory allocation for vhost-net now supports fallback on vmalloc (same as for vhost-scsi) this makes it possible to create the device on systems where memory is very fragmented, with slightly lower performance.

Thanks Michael, I'm glad to see that this change made its way into mainline after all! Would you be willing to take the following on top?

From: Romain Francoise <[email protected]>
Date: Thu, 12 Jun 2014 10:26:40 +0200
Subject: [PATCH] vhost-net: don't open-code kvfree

Quoted 6 lines

Commit 23cc5a991c ("vhost-net: extend device allocation to vmalloc") added another open-coded version of kvfree (which is available since v3.15-rc5), nuke it.

---

Absolutely, I'll queue this up, thanks!

Quoted 42 lines
 drivers/vhost/net.c | 12 ++----------
 1 file changed, 2 insertions(+), 10 deletions(-)
drivers/vhost/net.c +2 -10
index 971a760..8dae2f7 100644
@@ -700,14 +700,6 @@ static void handle_rx_net(struct vhost_work *work)
 	handle_rx(net);
 }
 
-static void vhost_net_free(void *addr)
-{
-	if (is_vmalloc_addr(addr))
-		vfree(addr);
-	else
-		kfree(addr);
-}
-
 static int vhost_net_open(struct inode *inode, struct file *f)
 {
 	struct vhost_net *n;
@@ -723,7 +715,7 @@ static int vhost_net_open(struct inode *inode, struct file *f)
 	}
 	vqs = kmalloc(VHOST_NET_VQ_MAX * sizeof(*vqs), GFP_KERNEL);
 	if (!vqs) {
-		vhost_net_free(n);
+		kvfree(n);
 		return -ENOMEM;
 	}
 
@@ -840,7 +832,7 @@ static int vhost_net_release(struct inode *inode, struct file *f)
 	 * since jobs can re-queue themselves. */
 	vhost_net_flush(n);
 	kfree(n->dev.vqs);
-	vhost_net_free(n);
+	kvfree(n);
 	return 0;
 }
 
Signature · 1 line
2.0.0