mirror of
https://github.com/openvswitch/ovs
synced 2025-08-30 22:05:19 +00:00
netdev-dpdk: vHost IOMMU support
DPDK v17.11 introduces support for the vHost IOMMU feature. This is a security feature, which restricts the vhost memory that a virtio device may access. This feature also enables the vhost REPLY_ACK protocol, the implementation of which is known to work in newer versions of QEMU (i.e. v2.10.0), but is buggy in older versions (v2.7.0 - v2.9.0, inclusive). As such, the feature is disabled by default in (and should remain so), for the aforementioned older QEMU verions. Starting with QEMU v2.9.1, vhost-iommu-support can safely be enabled, even without having an IOMMU device, with no performance penalty. This patch adds a new global config option, vhost-iommu-support, that controls enablement of the vhost IOMMU feature: ovs-vsctl set Open_vSwitch . other_config:vhost-iommu-support=true This value defaults to false; to enable IOMMU support, this field should be set to true when setting other global parameters on init (such as "dpdk-socket-mem", for example). Changing the value at runtime is not supported, and requires restarting the vswitch daemon. Signed-off-by: Mark Kavanagh <mark.b.kavanagh@intel.com> Acked-by: Kevin Traynor <ktraynor@redhat.com> Signed-off-by: Ian Stokes <ian.stokes@intel.com>
This commit is contained in:
committed by
Ian Stokes
parent
5e925ccc2a
commit
a14d1cc8a7
12
lib/dpdk.c
12
lib/dpdk.c
@@ -41,6 +41,7 @@ VLOG_DEFINE_THIS_MODULE(dpdk);
|
||||
static FILE *log_stream = NULL; /* Stream for DPDK log redirection */
|
||||
|
||||
static char *vhost_sock_dir = NULL; /* Location of vhost-user sockets */
|
||||
static bool vhost_iommu_enabled = false; /* Status of vHost IOMMU support */
|
||||
|
||||
static int
|
||||
process_vhost_flags(char *flag, const char *default_val, int size,
|
||||
@@ -345,6 +346,11 @@ dpdk_init__(const struct smap *ovs_other_config)
|
||||
vhost_sock_dir = sock_dir_subcomponent;
|
||||
}
|
||||
|
||||
vhost_iommu_enabled = smap_get_bool(ovs_other_config,
|
||||
"vhost-iommu-support", false);
|
||||
VLOG_INFO("IOMMU support for vhost-user-client %s.",
|
||||
vhost_iommu_enabled ? "enabled" : "disabled");
|
||||
|
||||
argv = grow_argv(&argv, 0, 1);
|
||||
argc = 1;
|
||||
argv[0] = xstrdup(ovs_get_program_name());
|
||||
@@ -482,6 +488,12 @@ dpdk_get_vhost_sock_dir(void)
|
||||
return vhost_sock_dir;
|
||||
}
|
||||
|
||||
bool
|
||||
dpdk_vhost_iommu_enabled(void)
|
||||
{
|
||||
return vhost_iommu_enabled;
|
||||
}
|
||||
|
||||
void
|
||||
dpdk_set_lcore_id(unsigned cpu)
|
||||
{
|
||||
|
Reference in New Issue
Block a user