Hi Michael, Stefan and Paolo, Would you please help to review virtio stuff in the patch set? Thanks!
Regards, -Gonglei > -----Original Message----- > From: Gonglei (Arei) > Sent: Monday, September 19, 2016 4:16 PM > Subject: [PATCH v3 00/10] virtio-crypto: introduce framework and device > emulation > > Changes since v2: > According to Daniel's comments: > - drop cryptodev kernel module as a cryptodev backend > - rename crypto stuff to cryptodev stuff > - change some files' license to GPLv2+ > - remove cryptodev command line instead of QOM to define the cryptodev > backend > - rename all functions and structures in crypto sub-directory. > - add full inline documentation for cryptodev.h > And: > - drop crypto-queue.c [Paolo] > - merge some patches > > Great thanks to Daniel and Paolo. Please review again, thanks! > > Changes since v1: > - rmmove mixed endian-ness handler for virtio-crypto device, just > use little-endian. [mst] > - add sg list support according virtio-crypto spec v10 (will be posted soon). > - fix a memory leak in session handler. > - add a feature page link in qemu.org > (http://qemu-project.org/Features/VirtioCrypto) > - fix some trivial problems, sush as 's/Since 2.7/Since 2.8/g' in > qapi-schema.json > - rebase the latest qemu master tree. > > > This patch series realize the framework and emulation of a new > virtio crypto device, which is similar with virtio net device. > > - I introduce the cryptodev backend as the client of virtio crypto device > which can be realized by different methods, such as > cryptodev-backend-gcrypt in my series, > vhost-crypto kernel module, vhost-user etc. > - The patch set abides by the virtio crypto speccification. > - The virtio crypto support symmetric algorithms (including CIPHER and > algorithm chainning) > at present, except HASH, MAC and AEAD services. > - unsupport hot plug/unplug cryptodev backend at this moment. > > Firstly build QEMU with libgcrypt cryptography support. > > QEMU can then be started using the following parameters: > > qemu-system-x86_64 \ > [...] \ > -object cryptodev-backend-gcrypt,id=cryptodev0 \ > -device virtio-crypto-pci,id=crypto0,cryptodev=cryptodev0 \ > [...] > > The front-end linux kernel driver (Experimental at present) is publicly > accessible > from: > > https://github.com/gongleiarei/virtio-crypto-linux-driver.git > > After insmod virtio-crypto.ko, you can use cryptodev-linux test the crypto > function > in the guest. For example: > > linux-guest:/home/gonglei/cryptodev-linux/tests # ./cipher - > requested cipher CRYPTO_AES_CBC, got cbc(aes) with driver > virtio_crypto_aes_cbc > AES Test passed > requested cipher CRYPTO_AES_CBC, got cbc(aes) with driver > virtio_crypto_aes_cbc > requested cipher CRYPTO_AES_CBC, got cbc(aes) with driver > virtio_crypto_aes_cbc > Test passed > > QEMU code also can be accessible from: > > https://github.com/gongleiarei/qemu.git > > branch virtio-crypto > > For more information, please see: > http://qemu-project.org/Features/VirtioCrypto > > > Gonglei (10): > cryptodev: introduce cryptodev backend interface > cryptodev: add symmetric algorithm operation stuff > virtio-crypto: introduce virtio_crypto.h > cryptodev: introduce gcrypt lib as a new cryptodev backend > virtio-crypto: add virtio crypto device emulation > virtio-crypto-pci: add virtio crypto pci support > virtio-crypto: set capacity of algorithms supported > virtio-crypto: add control queue handler > virtio-crypto: add data queue processing handler > cryptodev: introduce an unified wrapper for crypto operation > > crypto/Makefile.objs | 2 + > crypto/cryptodev-gcrypt.c | 329 +++++++++ > crypto/cryptodev.c | 243 +++++++ > hw/virtio/Makefile.objs | 2 + > hw/virtio/virtio-crypto-pci.c | 76 +++ > hw/virtio/virtio-crypto.c | 904 > +++++++++++++++++++++++++ > hw/virtio/virtio-pci.h | 15 + > include/crypto/cryptodev.h | 276 ++++++++ > include/hw/virtio/virtio-crypto.h | 100 +++ > include/standard-headers/linux/virtio_crypto.h | 466 +++++++++++++ > qemu-options.hx | 18 + > 11 files changed, 2431 insertions(+) > create mode 100644 crypto/cryptodev-gcrypt.c > create mode 100644 crypto/cryptodev.c > create mode 100644 hw/virtio/virtio-crypto-pci.c > create mode 100644 hw/virtio/virtio-crypto.c > create mode 100644 include/crypto/cryptodev.h > create mode 100644 include/hw/virtio/virtio-crypto.h > create mode 100644 include/standard-headers/linux/virtio_crypto.h > > -- > 1.7.12.4 >