[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [List Home]
Subject: RE: [PATCH v6 00/12] virtio-crypto: introduce framework and device emulation
Oooops, incorrect git branch... NACK, I will resend v6. Regards, -Gonglei > -----Original Message----- > From: Gonglei (Arei) > Sent: Monday, October 10, 2016 4:44 PM > To: qemu-devel@nongnu.org; virtio-dev@lists.oasis-open.org > Cc: Luonengjun; mst@redhat.com; stefanha@redhat.com; > pbonzini@redhat.com; berrange@redhat.com; Huangweidong (C); Wubin (H); > mike.caraman@nxp.com; agraf@suse.de; xin.zeng@intel.com; Claudio > Fontana; nmorey@kalray.eu; vincent.jardin@6wind.com; Zhoujian (jay, Euler); > Hanweidong (Randy); Huangpeng (Peter); arei.gonglei@hotmail.com; > eblake@redhat.com; Gonglei (Arei) > Subject: [PATCH v6 00/12] virtio-crypto: introduce framework and device > emulation > > The virtio crypto is a virtual crypto device as well as a kind > of virtual hardware accelerator for virtual machines. The > encryption and decryption requests are placed in the data > queue and handled by the real crypto accelerators finally. > The second queue is the control queue used to create or > destroy sessions for symmetric algorithms and control > some advanced features in the future. The virtio crypto > device provides the following crypto services: CIPHER, > MAC, HASH, AEAD etc. > > TODO: > - add vhost-user as a high performance cryptodev backend. > - more crypto services support. > - mirgration support. > > Changes since v5: > - rebase the patch 14 in v5, using the correct at the beginning of whole patch > serials. [Eric] > - perfect algorithm chain support in patch 12. > - more friendly error handler in both controlq and dataq. > - drop patch "virtio-crypto: emulate virtio crypto as a legacy device by default" > because > we shouldn't support transitional virtio devices any more. [Michael] > - drop patch "virtio-crypto-test: add qtest case for virtio-crypto" because > libqtest doesn't support virtio-1.0 device yet. > - rebase the patch set based on Michael's pull request: > [PULL 00/33] virtio, pc: fixes and features > > Changes since v4: (Thanks to Stefan) > - drop scatter-gather I/O identification in virtio crypto spec and corresponding > code [Stefan] > - remove qcrypto perfix for cryptdov stuff [Stefan] > - use virtio_error() in virtio-crypto device's functions. [Stefan] > - fix endianness handling. [Stefan] > - use VMSTATE_VIRTIO_DEVICE() instead of calling register_savevm(). > [Stefan] > - redefine DPRINTF in virtio-crypto.h [Stefan] > - fix some typos [Stefan] > - fix other farraginous problems suggested by Stefan. > > Changes since v3: > - rename cryptodev-gcrypt to cryptodev-buitlin. [Daniel] > - move cryptodev stuff from crypto/ directory to backends/ directory > in order to keep the crypto subsystem influence by syetem > emulators. [Daniel] > - emulate virtio-crypto device as a legacy device by default in patch 11 > - introduce virtio-crypto qtest case in patch 12 > - add myself as cryptdoev backends mainatainer and vitio-crypto > co-maintainer in patch 13 > - add CRT support for cryptodev-builtin, it based on my previous crypto > patch serial queued by Daniel. > https://lists.gnu.org/archive/html/qemu-devel/2016-09/msg06607.html > - add queue_index for qcrypto_cryptodev_backend_sym_close_session() > > 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-builtin,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 (12): > virtio-crypto: introduce virtio_crypto.h > cryptodev: introduce 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 > virtio-crypto: add myself as virtio-crypto and cryptodev backends > maintainer > virtio-crypto: perfect algorithms chainning support > virtio-crypto: emulate virtio crypto as a legacy device by default > virtio-crypto-test: add qtest case for virtio-crypto > > MAINTAINERS | 13 + > backends/Makefile.objs | 1 + > backends/cryptodev-builtin.c | 351 +++++++++++ > backends/cryptodev.c | 28 +- > docs/specs/pci-ids.txt | 2 + > hw/virtio/Makefile.objs | 2 + > hw/virtio/virtio-crypto-pci.c | 79 +++ > hw/virtio/virtio-crypto.c | 821 > +++++++++++++++++++++++++ > hw/virtio/virtio-pci.h | 15 + > include/hw/pci/pci.h | 2 + > include/hw/virtio/virtio-crypto.h | 96 +++ > include/standard-headers/linux/virtio_crypto.h | 390 ++++++++++++ > include/standard-headers/linux/virtio_ids.h | 2 +- > include/sysemu/cryptodev.h | 26 +- > qemu-options.hx | 18 + > tests/Makefile.include | 3 + > tests/virtio-crypto-test.c | 427 +++++++++++++ > 17 files changed, 2266 insertions(+), 10 deletions(-) > create mode 100644 backends/cryptodev-builtin.c > create mode 100644 hw/virtio/virtio-crypto-pci.c > create mode 100644 hw/virtio/virtio-crypto.c > create mode 100644 include/hw/virtio/virtio-crypto.h > create mode 100644 include/standard-headers/linux/virtio_crypto.h > create mode 100644 tests/virtio-crypto-test.c > > -- > 1.7.12.4 >
[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [List Home]