vhost: infrastructure changes for 3.16
Subsystems (6)
Michael S. Tsirkin
maintainerHi 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(-)
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
@@ -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
Michael S. Tsirkin
maintainerQuoted 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.Signed-off-by Romain Francoise <[email protected]>---
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@@ -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