f5188211c7
This patch adds vhost_crypto sample application to DPDK. Signed-off-by: Fan Zhang <roy.fan.zhang@intel.com> Acked-by: Jay Zhou <jianjay.zhou@huawei.com> Reviewed-by: Maxime Coquelin <maxime.coquelin@redhat.com>
83 lines
3.1 KiB
ReStructuredText
83 lines
3.1 KiB
ReStructuredText
.. SPDX-License-Identifier: BSD-3-Clause
|
|
Copyright(c) 2017-2018 Intel Corporation.
|
|
|
|
Vhost_Crypto Sample Application
|
|
===============================
|
|
|
|
The vhost_crypto sample application implemented a simple Crypto device,
|
|
which used as the backend of Qemu vhost-user-crypto device. Similar with
|
|
vhost-user-net and vhost-user-scsi device, the sample application used
|
|
domain socket to communicate with Qemu, and the virtio ring was processed
|
|
by vhost_crypto sample application.
|
|
|
|
Testing steps
|
|
-------------
|
|
|
|
This section shows the steps how to start a VM with the crypto device as
|
|
fast data path for critical application.
|
|
|
|
Compiling the Application
|
|
-------------------------
|
|
|
|
To compile the sample application see :doc:`compiling`.
|
|
|
|
The application is located in the ``examples`` sub-directory.
|
|
|
|
Start the vhost_crypto example
|
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
|
|
.. code-block:: console
|
|
|
|
./vhost_crypto [EAL options] -- [--socket-file PATH]
|
|
[--cdev-id ID] [--cdev-queue-id ID] [--zero-copy] [--guest-polling]
|
|
|
|
where,
|
|
|
|
* socket-file PATH: the path of UNIX socket file to be created, multiple
|
|
instances of this config item is supported. Upon absence of this item,
|
|
the default socket-file `/tmp/vhost_crypto1.socket` is used.
|
|
|
|
* cdev-id ID: the target DPDK Cryptodev's ID to process the actual crypto
|
|
workload. Upon absence of this item the default value of `0` will be used.
|
|
For details of DPDK Cryptodev, please refer to DPDK Cryptodev Library
|
|
Programmers' Guide.
|
|
|
|
* cdev-queue-id ID: the target DPDK Cryptodev's queue ID to process the
|
|
actual crypto workload. Upon absence of this item the default value of `0`
|
|
will be used. For details of DPDK Cryptodev, please refer to DPDK Cryptodev
|
|
Library Programmers' Guide.
|
|
|
|
* zero-copy: the presence of this item means the ZERO-COPY feature will be
|
|
enabled. Otherwise it is disabled. PLEASE NOTE the ZERO-COPY feature is still
|
|
in experimental stage and may cause the problem like segmentation fault. If
|
|
the user wants to use LKCF in the guest, this feature shall be turned off.
|
|
|
|
* guest-polling: the presence of this item means the application assumes the
|
|
guest works in polling mode, thus will NOT notify the guest completion of
|
|
processing.
|
|
|
|
The application requires that crypto devices capable of performing
|
|
the specified crypto operation are available on application initialization.
|
|
This means that HW crypto device/s must be bound to a DPDK driver or
|
|
a SW crypto device/s (virtual crypto PMD) must be created (using --vdev).
|
|
|
|
.. _vhost_crypto_app_run_vm:
|
|
|
|
Start the VM
|
|
~~~~~~~~~~~~
|
|
|
|
.. code-block:: console
|
|
|
|
qemu-system-x86_64 -machine accel=kvm \
|
|
-m $mem -object memory-backend-file,id=mem,size=$mem,\
|
|
mem-path=/dev/hugepages,share=on -numa node,memdev=mem \
|
|
-drive file=os.img,if=none,id=disk \
|
|
-device ide-hd,drive=disk,bootindex=0 \
|
|
-chardev socket,id={chardev_id},path={PATH} \
|
|
-object cryptodev-vhost-user,id={obj_id},chardev={chardev_id} \
|
|
-device virtio-crypto-pci,id={dev_id},cryptodev={obj_id} \
|
|
...
|
|
|
|
.. note::
|
|
You must check whether your Qemu can support "vhost-user-crypto" or not.
|