From: Jianfeng Tan <jianfeng.tan@intel.com>
To: dev@dpdk.org
Cc: jblunck@infradead.org, bruce.richardson@intel.com,
konstantin.ananyev@intel.com, pablo.de.lara.guarch@intel.com,
thomas@monjalon.net, yliu@fridaylinux.org,
maxime.coquelin@redhat.com, mtetsuyah@gmail.com,
ferruh.yigit@intel.com, Jianfeng Tan <jianfeng.tan@intel.com>
Subject: [dpdk-dev] [PATCH v4 3/5] vhost: allocate virtio_net in memzone
Date: Mon, 9 Oct 2017 10:55:04 +0000 [thread overview]
Message-ID: <1507546506-25227-4-git-send-email-jianfeng.tan@intel.com> (raw)
In-Reply-To: <1507546506-25227-1-git-send-email-jianfeng.tan@intel.com>
Instead of allocate on the stack, change to allocate in memzone
so that we can retrieve them in secondary processes.
TODO: numa awareness.
Signed-off-by: Jianfeng Tan <jianfeng.tan@intel.com>
---
lib/librte_vhost/socket.c | 2 ++
lib/librte_vhost/vhost.c | 34 ++++++++++++++++++++++++++++++++--
lib/librte_vhost/vhost.h | 4 +++-
3 files changed, 37 insertions(+), 3 deletions(-)
diff --git a/lib/librte_vhost/socket.c b/lib/librte_vhost/socket.c
index 41aa3f9..35b9751 100644
--- a/lib/librte_vhost/socket.c
+++ b/lib/librte_vhost/socket.c
@@ -606,6 +606,8 @@ rte_vhost_driver_register(const char *path, uint64_t flags)
int ret = -1;
struct vhost_user_socket *vsocket;
+ alloc_vhost_devices();
+
if (!path)
return -1;
diff --git a/lib/librte_vhost/vhost.c b/lib/librte_vhost/vhost.c
index 0b6aa1c..2b687ea 100644
--- a/lib/librte_vhost/vhost.c
+++ b/lib/librte_vhost/vhost.c
@@ -47,15 +47,45 @@
#include <rte_memory.h>
#include <rte_malloc.h>
#include <rte_vhost.h>
+#include <rte_memzone.h>
#include "vhost.h"
-struct virtio_net *vhost_devices[MAX_VHOST_DEVICE];
+#define MZ_VHOST_DEVICES "mz_vhost_devices"
+struct virtio_net **vhost_devices;
+
+void
+alloc_vhost_devices(void)
+{
+ const struct rte_memzone *mz;
+
+ if (vhost_devices != NULL)
+ return;
+
+ if (rte_eal_process_type() == RTE_PROC_PRIMARY) {
+ mz = rte_memzone_reserve(MZ_VHOST_DEVICES,
+ MAX_VHOST_DEVICE * sizeof(*vhost_devices),
+ rte_socket_id(), 0);
+ } else
+ mz = rte_memzone_lookup(MZ_VHOST_DEVICES);
+
+ if (mz == NULL)
+ rte_panic("Cannot allocate memzone for vhost_devices\n");
+
+ vhost_devices = mz->addr;
+ if (rte_eal_process_type() == RTE_PROC_PRIMARY)
+ memset(vhost_devices, 0,
+ MAX_VHOST_DEVICE * sizeof(*vhost_devices));
+}
struct virtio_net *
get_device(int vid)
{
- struct virtio_net *dev = vhost_devices[vid];
+ struct virtio_net *dev;
+
+ alloc_vhost_devices();
+
+ dev = vhost_devices[vid];
if (unlikely(!dev)) {
RTE_LOG(ERR, VHOST_CONFIG,
diff --git a/lib/librte_vhost/vhost.h b/lib/librte_vhost/vhost.h
index 6fe72ae..bc1f31e 100644
--- a/lib/librte_vhost/vhost.h
+++ b/lib/librte_vhost/vhost.h
@@ -278,7 +278,7 @@ vhost_log_used_vring(struct virtio_net *dev, struct vhost_virtqueue *vq,
extern uint64_t VHOST_FEATURES;
#define MAX_VHOST_DEVICE 1024
-extern struct virtio_net *vhost_devices[MAX_VHOST_DEVICE];
+extern struct virtio_net **vhost_devices;
/* Convert guest physical address to host physical address */
static __rte_always_inline phys_addr_t
@@ -300,6 +300,8 @@ gpa_to_hpa(struct virtio_net *dev, uint64_t gpa, uint64_t size)
return 0;
}
+
+void alloc_vhost_devices(void);
struct virtio_net *get_device(int vid);
int vhost_new_device(void);
--
2.7.4
next prev parent reply other threads:[~2017-10-09 10:53 UTC|newest]
Thread overview: 158+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-08-25 9:40 [dpdk-dev] [PATCH 00/12] support to run vdev in the secondary process Jianfeng Tan
2017-08-25 9:40 ` [dpdk-dev] [PATCH 01/12] cryptodev: remove crypto vdev init Jianfeng Tan
2017-09-18 11:48 ` De Lara Guarch, Pablo
2017-08-25 9:40 ` [dpdk-dev] [PATCH 02/12] eal: avoid calling rte_vdev_init() Jianfeng Tan
2017-08-29 12:50 ` Gaëtan Rivet
2017-08-29 22:25 ` Tan, Jianfeng
2017-08-25 9:40 ` [dpdk-dev] [PATCH 03/12] crypto: move vdev helper functions into dedicated file Jianfeng Tan
2017-09-18 11:51 ` De Lara Guarch, Pablo
2017-08-25 9:40 ` [dpdk-dev] [PATCH 04/12] vdev: move to drivers/bus Jianfeng Tan
2017-08-29 13:04 ` Gaëtan Rivet
2017-08-29 22:47 ` Tan, Jianfeng
2017-09-18 11:47 ` De Lara Guarch, Pablo
2017-09-19 6:01 ` Tan, Jianfeng
2017-08-25 9:40 ` [dpdk-dev] [PATCH 05/12] bus/vdev: change log type from EAL to PMD Jianfeng Tan
2017-08-29 12:54 ` Gaëtan Rivet
2017-08-29 22:27 ` Tan, Jianfeng
2017-08-25 9:40 ` [dpdk-dev] [PATCH 06/12] eal: add channel for primary/secondary communication Jianfeng Tan
2017-09-18 13:49 ` Jiayu Hu
2017-09-21 6:11 ` Tan, Jianfeng
2017-09-20 3:00 ` Jiayu Hu
2017-09-21 6:53 ` Tan, Jianfeng
2017-09-27 12:19 ` Yuanhan Liu
2017-09-28 13:50 ` Tan, Jianfeng
2017-09-29 1:24 ` Yuanhan Liu
2017-09-29 10:09 ` Burakov, Anatoly
2017-09-29 10:25 ` Yuanhan Liu
2017-08-25 9:40 ` [dpdk-dev] [PATCH 07/12] bus/vdev: scan and probe vdev in secondary processes Jianfeng Tan
2017-08-25 9:40 ` [dpdk-dev] [PATCH 08/12] ethdev: support attach vdev in secondary process Jianfeng Tan
2017-08-25 9:40 ` [dpdk-dev] [PATCH 09/12] vhost: allocate virtio_net in memzone Jianfeng Tan
2017-08-25 9:40 ` [dpdk-dev] [PATCH 10/12] vhost: support to kick in secondary process Jianfeng Tan
2017-09-21 3:33 ` Yuanhan Liu
2017-09-21 7:04 ` Tan, Jianfeng
2017-09-21 9:17 ` Yuanhan Liu
2017-09-22 2:30 ` Tan, Jianfeng
2017-09-27 9:36 ` Yuanhan Liu
2017-09-28 5:10 ` Tan, Jianfeng
2017-09-28 8:09 ` Tan, Jianfeng
2017-09-30 8:18 ` Yuanhan Liu
2017-09-30 10:50 ` Tan, Jianfeng
2017-08-25 9:40 ` [dpdk-dev] [PATCH 11/12] net/vhost: support to run in the " Jianfeng Tan
2017-09-21 4:29 ` Yuanhan Liu
2017-08-25 9:40 ` [dpdk-dev] [PATCH 12/12] examples/helloworld: do not exit automatically Jianfeng Tan
2017-09-18 11:44 ` De Lara Guarch, Pablo
2017-09-19 5:07 ` Tan, Jianfeng
2017-09-28 13:55 ` [dpdk-dev] [PATCH v2 00/12] support to run vdev in the secondary process Jianfeng Tan
2017-09-28 13:55 ` [dpdk-dev] [PATCH v2 01/12] cryptodev: remove crypto vdev init API Jianfeng Tan
2017-09-28 13:55 ` [dpdk-dev] [PATCH v2 02/12] eal: avoid calling rte_vdev_init() Jianfeng Tan
2017-09-28 13:55 ` [dpdk-dev] [PATCH v2 03/12] cryptodev: avoid dependency on rte_vdev.h Jianfeng Tan
2017-10-05 13:13 ` Jan Blunck
2017-10-09 1:04 ` Tan, Jianfeng
2017-09-28 13:55 ` [dpdk-dev] [PATCH v2 04/12] bus/fslmc: introduce RTE_LOGTYPE_BUS for bus drivers Jianfeng Tan
2017-09-28 13:55 ` [dpdk-dev] [PATCH v2 05/12] bus/vdev: move to vdev bus to drivers/bus Jianfeng Tan
2017-09-28 13:55 ` [dpdk-dev] [PATCH v2 06/12] bus/vdev: normalize log type Jianfeng Tan
2017-09-28 13:55 ` [dpdk-dev] [PATCH v2 07/12] eal: add channel for primary/secondary communication Jianfeng Tan
2017-09-28 15:01 ` Ananyev, Konstantin
2017-09-28 15:29 ` Burakov, Anatoly
2017-09-29 1:03 ` Tan, Jianfeng
2017-09-29 10:00 ` Burakov, Anatoly
2017-09-30 4:07 ` Tan, Jianfeng
2017-10-02 10:08 ` Burakov, Anatoly
2017-10-05 12:01 ` Jan Blunck
2017-10-09 1:27 ` Tan, Jianfeng
2017-09-28 13:55 ` [dpdk-dev] [PATCH v2 08/12] bus/vdev: scan and probe vdev in secondary processes Jianfeng Tan
2017-10-05 13:04 ` Jan Blunck
2017-10-09 1:08 ` Tan, Jianfeng
2017-09-28 13:55 ` [dpdk-dev] [PATCH v2 09/12] ethdev: support attach vdev in secondary process Jianfeng Tan
2017-10-05 14:26 ` Jan Blunck
2017-10-09 0:56 ` Tan, Jianfeng
2017-09-28 13:55 ` [dpdk-dev] [PATCH v2 10/12] vhost: allocate virtio_net in memzone Jianfeng Tan
2017-09-28 13:55 ` [dpdk-dev] [PATCH v2 11/12] vhost: support to kick in secondary process Jianfeng Tan
2017-09-28 13:55 ` [dpdk-dev] [PATCH v2 12/12] net/vhost: support to run in the " Jianfeng Tan
2017-09-29 8:28 ` Yuanhan Liu
2017-09-30 4:03 ` Tan, Jianfeng
2017-09-30 8:16 ` Yuanhan Liu
2017-09-30 10:06 ` Tan, Jianfeng
2017-09-30 11:49 ` Yuanhan Liu
2017-10-01 23:48 ` Tan, Jianfeng
2017-09-30 8:23 ` Yuanhan Liu
2017-09-30 10:53 ` Tan, Jianfeng
2017-09-30 11:34 ` Yuanhan Liu
2017-10-01 23:46 ` Tan, Jianfeng
2017-10-09 3:20 ` [dpdk-dev] [PATCH v3 0/5] move vdev into drivers/bus Jianfeng Tan
2017-10-09 3:20 ` [dpdk-dev] [PATCH v3 1/5] cryptodev: remove crypto vdev init API Jianfeng Tan
2017-10-09 3:20 ` [dpdk-dev] [PATCH v3 2/5] eal: avoid calling rte_vdev_init() Jianfeng Tan
2017-10-09 3:20 ` [dpdk-dev] [PATCH v3 3/5] bus: introduce RTE_LOGTYPE_BUS for bus drivers Jianfeng Tan
2017-10-09 3:20 ` [dpdk-dev] [PATCH v3 4/5] bus/vdev: move to vdev bus to drivers/bus Jianfeng Tan
2017-10-09 3:20 ` [dpdk-dev] [PATCH v3 5/5] bus/vdev: normalize log type Jianfeng Tan
2017-10-09 10:55 ` [dpdk-dev] [PATCH v4 0/5] move vdev into drivers/bus Jianfeng Tan
2017-10-09 10:55 ` [dpdk-dev] [PATCH v4 1/5] bus/vdev: scan and probe vdev in secondary processes Jianfeng Tan
2017-10-09 10:55 ` [dpdk-dev] [PATCH v4 2/5] ethdev: support attach vdev in secondary process Jianfeng Tan
2017-10-09 10:55 ` Jianfeng Tan [this message]
2017-10-09 10:55 ` [dpdk-dev] [PATCH v4 4/5] vhost: support to kick " Jianfeng Tan
2017-10-09 10:55 ` [dpdk-dev] [PATCH v4 5/5] net/vhost: support to run in the " Jianfeng Tan
2017-10-09 11:08 ` [dpdk-dev] [PATCH v4 0/5] move vdev into drivers/bus Tan, Jianfeng
2017-10-09 11:27 ` [dpdk-dev] [PATCH v5 " Jianfeng Tan
2017-10-09 11:27 ` [dpdk-dev] [PATCH v5 1/5] cryptodev: remove crypto vdev init API Jianfeng Tan
2017-10-09 11:27 ` [dpdk-dev] [PATCH v5 2/5] eal: remove dependency on vdev Jianfeng Tan
2017-10-09 11:27 ` [dpdk-dev] [PATCH v5 3/5] bus: introduce new log type for bus drivers Jianfeng Tan
2017-10-11 6:54 ` Shreyansh Jain
2017-10-11 10:42 ` Tan, Jianfeng
2017-10-11 11:20 ` Shreyansh Jain
2017-10-12 2:14 ` Tan, Jianfeng
2017-10-09 11:27 ` [dpdk-dev] [PATCH v5 4/5] bus/vdev: move to vdev bus to drivers/bus Jianfeng Tan
2017-10-09 11:27 ` [dpdk-dev] [PATCH v5 5/5] bus/vdev: normalize log type Jianfeng Tan
2017-10-12 8:46 ` [dpdk-dev] [PATCH v6 0/4] move vdev into drivers/bus Jianfeng Tan
2017-10-12 8:46 ` [dpdk-dev] [PATCH v6 1/4] cryptodev: remove crypto vdev init API Jianfeng Tan
2017-10-12 10:06 ` Thomas Monjalon
2017-10-12 8:46 ` [dpdk-dev] [PATCH v6 2/4] eal: remove dependency on vdev Jianfeng Tan
2017-10-12 8:46 ` [dpdk-dev] [PATCH v6 3/4] bus/vdev: move to vdev bus to drivers/bus Jianfeng Tan
2017-10-12 8:46 ` [dpdk-dev] [PATCH v6 4/4] bus/vdev: change log type Jianfeng Tan
2017-10-13 2:04 ` [dpdk-dev] [PATCH v7 0/4] move vdev into drivers/bus Jianfeng Tan
2017-10-13 2:04 ` [dpdk-dev] [PATCH v7 1/4] ethdev: support attach vdev in secondary process Jianfeng Tan
2017-10-13 2:04 ` [dpdk-dev] [PATCH v7 2/4] vhost: allocate virtio_net in memzone Jianfeng Tan
2017-10-13 2:04 ` [dpdk-dev] [PATCH v7 3/4] vhost: support to kick in secondary process Jianfeng Tan
2017-10-13 2:04 ` [dpdk-dev] [PATCH v7 4/4] net/vhost: support to run in the " Jianfeng Tan
2017-10-13 8:26 ` [dpdk-dev] [PATCH v7 0/4] move vdev into drivers/bus Thomas Monjalon
2017-10-13 11:49 ` Tan, Jianfeng
2017-10-13 11:51 ` Jianfeng Tan
2017-10-13 11:51 ` [dpdk-dev] [PATCH v7 1/4] cryptodev: remove crypto vdev init API Jianfeng Tan
2017-10-23 10:06 ` De Lara Guarch, Pablo
2017-10-13 11:51 ` [dpdk-dev] [PATCH v7 2/4] eal: remove dependency on vdev Jianfeng Tan
2017-10-13 11:52 ` [dpdk-dev] [PATCH v7 3/4] bus/vdev: move to vdev bus to drivers/bus Jianfeng Tan
2017-10-23 14:34 ` De Lara Guarch, Pablo
2017-10-13 11:52 ` [dpdk-dev] [PATCH v7 4/4] bus/vdev: change log type Jianfeng Tan
2017-10-25 17:10 ` [dpdk-dev] [PATCH v8 0/4] move vdev into drivers/bus Jianfeng Tan
2017-10-25 17:10 ` [dpdk-dev] [PATCH v8 1/4] cryptodev: remove crypto vdev init API Jianfeng Tan
2017-10-25 17:10 ` [dpdk-dev] [PATCH v8 2/4] eal: remove dependency on vdev Jianfeng Tan
2017-10-25 17:10 ` [dpdk-dev] [PATCH v8 3/4] bus/vdev: move to vdev bus to drivers/bus Jianfeng Tan
2017-10-25 21:32 ` De Lara Guarch, Pablo
2017-10-25 23:03 ` Gaëtan Rivet
2017-10-25 17:10 ` [dpdk-dev] [PATCH v8 4/4] bus/vdev: change log type Jianfeng Tan
2017-10-27 1:06 ` [dpdk-dev] [PATCH v0 0/4] move vdev into drivers/bus Jianfeng Tan
2017-10-27 1:06 ` [dpdk-dev] [PATCH v9 1/4] cryptodev: remove crypto vdev init API Jianfeng Tan
2017-10-27 1:06 ` [dpdk-dev] [PATCH v9 2/4] eal: remove dependency on vdev Jianfeng Tan
2017-10-27 1:06 ` [dpdk-dev] [PATCH v9 3/4] bus/vdev: move to vdev bus to drivers/bus Jianfeng Tan
2017-10-27 7:56 ` Thomas Monjalon
2017-10-27 8:19 ` Tan, Jianfeng
2017-10-27 8:53 ` Thomas Monjalon
2017-10-27 16:57 ` Gaëtan Rivet
2017-10-27 1:06 ` [dpdk-dev] [PATCH v9 4/4] bus/vdev: change log type Jianfeng Tan
2017-10-27 3:23 ` [dpdk-dev] [PATCH v10 0/4] move vdev into drivers/bus Jianfeng Tan
2017-10-27 3:23 ` [dpdk-dev] [PATCH v10 1/4] cryptodev: remove crypto vdev init API Jianfeng Tan
2017-10-27 3:23 ` [dpdk-dev] [PATCH v10 2/4] eal: remove dependency on vdev Jianfeng Tan
2017-10-27 3:23 ` [dpdk-dev] [PATCH v10 3/4] bus/vdev: move to vdev bus to drivers/bus Jianfeng Tan
2017-10-27 3:23 ` [dpdk-dev] [PATCH v10 4/4] bus/vdev: change log type Jianfeng Tan
2017-10-30 8:28 ` [dpdk-dev] [PATCH v11 0/4] move vdev into drivers/bus Jianfeng Tan
2017-10-30 8:28 ` [dpdk-dev] [PATCH v11 1/4] cryptodev: remove crypto vdev init API Jianfeng Tan
2017-10-30 8:28 ` [dpdk-dev] [PATCH v11 2/4] eal: remove dependency on vdev Jianfeng Tan
2017-10-30 8:28 ` [dpdk-dev] [PATCH v11 3/4] bus/vdev: move to vdev bus to drivers/bus Jianfeng Tan
2017-11-07 2:43 ` Thomas Monjalon
2017-11-07 6:21 ` Tan, Jianfeng
2017-10-30 8:28 ` [dpdk-dev] [PATCH v11 4/4] bus/vdev: change log type Jianfeng Tan
2017-11-07 6:54 ` [dpdk-dev] [PATCH v12 0/4] move vdev into drivers/bus Jianfeng Tan
2017-11-07 6:54 ` [dpdk-dev] [PATCH v12 1/4] cryptodev: remove crypto vdev init API Jianfeng Tan
2017-11-07 6:54 ` [dpdk-dev] [PATCH v12 2/4] eal: remove dependency on vdev Jianfeng Tan
2017-11-07 6:54 ` [dpdk-dev] [PATCH v12 3/4] bus/vdev: move to vdev bus to drivers/bus Jianfeng Tan
2017-11-07 6:54 ` [dpdk-dev] [PATCH v12 4/4] bus/vdev: change log type Jianfeng Tan
2017-11-07 15:43 ` [dpdk-dev] [PATCH v12 0/4] move vdev into drivers/bus Thomas Monjalon
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1507546506-25227-4-git-send-email-jianfeng.tan@intel.com \
--to=jianfeng.tan@intel.com \
--cc=bruce.richardson@intel.com \
--cc=dev@dpdk.org \
--cc=ferruh.yigit@intel.com \
--cc=jblunck@infradead.org \
--cc=konstantin.ananyev@intel.com \
--cc=maxime.coquelin@redhat.com \
--cc=mtetsuyah@gmail.com \
--cc=pablo.de.lara.guarch@intel.com \
--cc=thomas@monjalon.net \
--cc=yliu@fridaylinux.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).