78639d5456
Performing large memory copies usually takes up a major part of CPU cycles and becomes the hot spot in vhost-user enqueue operation. To offload the large copies from CPU to the DMA devices, asynchronous APIs are introduced, with which the CPU just submits copy jobs to the DMA but without waiting for its copy completion. Thus, there is no CPU intervention during data transfer. We can save precious CPU cycles and improve the overall throughput for vhost-user based applications. This patch introduces registration/un-registration APIs for vhost async data enqueue operation. Together with the registration APIs implementations, data structures and the prototype of the async callback functions required for async enqueue data path are also defined. Signed-off-by: Patrick Fu <patrick.fu@intel.com> Reviewed-by: Chenbo Xia <chenbo.xia@intel.com>
27 lines
969 B
Meson
27 lines
969 B
Meson
# SPDX-License-Identifier: BSD-3-Clause
|
|
# Copyright(c) 2017-2018 Intel Corporation
|
|
|
|
if not is_linux
|
|
build = false
|
|
reason = 'only supported on linux'
|
|
endif
|
|
if has_libnuma == 1
|
|
dpdk_conf.set10('RTE_LIBRTE_VHOST_NUMA', true)
|
|
endif
|
|
if (toolchain == 'gcc' and cc.version().version_compare('>=8.3.0'))
|
|
cflags += '-DVHOST_GCC_UNROLL_PRAGMA'
|
|
elif (toolchain == 'clang' and cc.version().version_compare('>=3.7.0'))
|
|
cflags += '-DVHOST_CLANG_UNROLL_PRAGMA'
|
|
elif (toolchain == 'icc' and cc.version().version_compare('>=16.0.0'))
|
|
cflags += '-DVHOST_ICC_UNROLL_PRAGMA'
|
|
endif
|
|
dpdk_conf.set('RTE_LIBRTE_VHOST_POSTCOPY',
|
|
cc.has_header('linux/userfaultfd.h'))
|
|
cflags += '-fno-strict-aliasing'
|
|
sources = files('fd_man.c', 'iotlb.c', 'socket.c', 'vdpa.c',
|
|
'vhost.c', 'vhost_user.c',
|
|
'virtio_net.c', 'vhost_crypto.c')
|
|
headers = files('rte_vhost.h', 'rte_vdpa.h', 'rte_vdpa_dev.h',
|
|
'rte_vhost_crypto.h', 'rte_vhost_async.h')
|
|
deps += ['ethdev', 'cryptodev', 'hash', 'pci']
|