From 6118b85333b455eded2dd35a462e31410afda6bd Mon Sep 17 00:00:00 2001 From: Daniel Verkamp Date: Thu, 22 Mar 2018 16:24:14 -0700 Subject: [PATCH] build: add intel-ipsec-mb submodule This is a dependency of the DPDK crypto framework. The submodule is currently set to our SPDK fork of the ipsec library which is based off of the library v0.48 tag, as required by DPDK plus one minor Makefile change on the 'spdk' branch of the fork. Also added is a configure option '--with-crypto' and the associated conditionals for building DPDK with or without the library dependency. The crypto vbdev patch will use this same configure option to determine DPDK opts as well as whether the crypto vbdev should be built or not. Change-Id: Ib1cfd15b63b29acf3c2f7345d0d7edfd94716620 Signed-off-by: Daniel Verkamp Signed-off-by: paul luse Reviewed-on: https://review.gerrithub.io/404983 Tested-by: SPDK CI Jenkins Reviewed-by: Ben Walker Reviewed-by: Shuhei Matsumoto Reviewed-by: Changpeng Liu --- .gitmodules | 3 +++ CHANGELOG.md | 3 +++ CONFIG | 5 ++++- configure | 11 +++++++++++ dpdkbuild/Makefile | 46 +++++++++++++++++++++++++++++++++++++++++----- intel-ipsec-mb | 1 + 6 files changed, 63 insertions(+), 6 deletions(-) create mode 160000 intel-ipsec-mb diff --git a/.gitmodules b/.gitmodules index d0ecf725f..f1d223b71 100644 --- a/.gitmodules +++ b/.gitmodules @@ -1,3 +1,6 @@ [submodule "dpdk"] path = dpdk url = https://github.com/spdk/dpdk.git +[submodule "intel-ipsec-mb"] + path = intel-ipsec-mb + url = https://github.com/spdk/intel-ipsec-mb.git diff --git a/CHANGELOG.md b/CHANGELOG.md index 433257d56..8ab97bddd 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -30,6 +30,9 @@ against SPDK easier. The static libraries are also still provided for users that prefer to link only the minimal set of components required. +A new configure option was added `--with-crypto` that, when set, will build the crypto +vbdev as well as its dependencies. + ### RPC The `start_nbd_disk` RPC method now returns the path to the kernel NBD device node diff --git a/CONFIG b/CONFIG index 7b70731f6..2142d9c12 100644 --- a/CONFIG +++ b/CONFIG @@ -99,5 +99,8 @@ CONFIG_VPP?=n # Requires libiscsi development libraries. CONFIG_ISCSI_INITIATOR?=n -#Build with raid +# Build with raid CONFIG_RAID?=n + +# Enable the dependencies for building the crypto vbdev +CONFIG_CRYPTO?=n diff --git a/configure b/configure index 6c797d611..775c017c7 100755 --- a/configure +++ b/configure @@ -31,6 +31,8 @@ function usage() echo " disable features and components." echo "" echo "Valid dependencies are listed below." + echo " crypto Required to build vbdev crypto module." + echo " No path required." echo " dpdk Optional. Uses dpdk submodule in spdk tree if not specified." echo " example: /usr/share/dpdk/x86_64-default-linuxapp-gcc" echo " fio Required to build fio_plugin." @@ -164,6 +166,12 @@ for i in "$@"; do --without-dpdk) CONFIG_DPDK_DIR= ;; + --with-crypto) + CONFIG_CRYPTO=y + ;; + --without-crypto) + CONFIG_CRYPTO=n + ;; --with-vhost) CONFIG_VHOST=y ;; @@ -303,6 +311,9 @@ fi if [ -n "$CONFIG_DPDK_DIR" ]; then echo "CONFIG_DPDK_DIR?=$CONFIG_DPDK_DIR" >> CONFIG.local fi +if [ -n "$CONFIG_CRYPTO" ]; then + echo "CONFIG_CRYPTO?=$CONFIG_CRYPTO" >> CONFIG.local +fi if [ -n "$CONFIG_VHOST" ]; then echo "CONFIG_VHOST?=$CONFIG_VHOST" >> CONFIG.local fi diff --git a/dpdkbuild/Makefile b/dpdkbuild/Makefile index 21a37474e..f81bd3e54 100644 --- a/dpdkbuild/Makefile +++ b/dpdkbuild/Makefile @@ -36,6 +36,32 @@ include $(SPDK_ROOT_DIR)/mk/spdk.common.mk .PHONY: all clean install +IPSEC_OPTS=SHARED=n +INTEL_IPSEC_MB_LIB= +CRYPTO_ENABLED=n + +ifeq ($(CONFIG_CRYPTO),y) +ifeq ($(TARGET_MACHINE),x86_64) +ifneq ($(wildcard $(SPDK_ROOT_DIR)/intel-ipsec-mb/README),) +INTEL_IPSEC_MB_LIB=$(SPDK_ROOT_DIR)/intel-ipsec-mb/libIPSec_MB.a +IPSEC_MB_CFLAGS = -fPIC +CRYPTO_ENABLED = y +DPDK_OPTS += AESNI_MULTI_BUFFER_LIB_PATH=$(SPDK_ROOT_DIR)/intel-ipsec-mb +DPDK_OPTS += CONFIG_RTE_LIBRTE_PMD_AESNI_MB=y +DPDK_OPTS += CONFIG_RTE_LIBRTE_CRYPTODEV=y +DPDK_OPTS += CONFIG_RTE_LIBRTE_REORDER=y +DPDK_OPTS += CONFIG_RTE_LIBRTE_KVARGS=y +endif +endif +endif + +ifeq ($(CRYPTO_ENABLED),n) +DPDK_OPTS += CONFIG_RTE_LIBRTE_PMD_AESNI_MB=n +DPDK_OPTS += CONFIG_RTE_LIBRTE_CRYPTODEV=n +DPDK_OPTS += CONFIG_RTE_LIBRTE_REORDER=n +DPDK_OPTS += CONFIG_RTE_LIBRTE_KVARGS=n +endif + ifeq ($(TARGET_MACHINE),aarch64) DPDK_CONFIG := arm64-armv8a else @@ -54,14 +80,17 @@ endif ifeq ($(CC_TYPE),clang) DPDK_CONFIG := $(DPDK_CONFIG)-clang +IPSEC_CC := clang else DPDK_CONFIG := $(DPDK_CONFIG)-gcc +IPSEC_CC := gcc endif DPDK_CFLAGS = -fPIC ifeq ($(CONFIG_DEBUG),y) DPDK_CFLAGS += -O0 -g +IPSEC_OPTS += DEBUG=y endif ifeq ($(CONFIG_WERROR),y) @@ -70,13 +99,20 @@ else DPDK_CFLAGS += -Wno-error endif -$(SPDK_ROOT_DIR)/dpdk/build: - $(Q)$(MAKE) -C $(SPDK_ROOT_DIR)/dpdk config T=$(DPDK_CONFIG) +$(SPDK_ROOT_DIR)/dpdk/build: $(INTEL_IPSEC_MB_LIB) + $(Q)$(MAKE) -C $(SPDK_ROOT_DIR)/dpdk config T=$(DPDK_CONFIG) $(DPDK_OPTS) -all: $(SPDK_ROOT_DIR)/dpdk/build - $(Q)$(MAKE) -C $(SPDK_ROOT_DIR)/dpdk/build EXTRA_CFLAGS="$(DPDK_CFLAGS)" MAKEFLAGS="T=$(DPDK_CONFIG) -j$(NPROC)" +all: $(SPDK_ROOT_DIR)/dpdk/build $(INTEL_IPSEC_MB_LIB) + $(Q)$(MAKE) -C $(SPDK_ROOT_DIR)/dpdk/build EXTRA_CFLAGS="$(DPDK_CFLAGS)" MAKEFLAGS="T=$(DPDK_CONFIG) -j$(NPROC)" $(DPDK_OPTS) + +ifeq ($(CONFIG_CRYPTO),y) +$(SPDK_ROOT_DIR)/intel-ipsec-mb/libIPSec_MB.a: + $(Q)$(MAKE) -C $(SPDK_ROOT_DIR)/intel-ipsec-mb EXTRA_CFLAGS="$(IPSEC_MB_CFLAGS)" $(IPSEC_OPTS) MAKEFLAGS="j$(NPROC)" CC=$(IPSEC_CC) +endif clean: - $(Q)rm -rf $(SPDK_ROOT_DIR)/dpdk/build + $(Q)rm -rf $(SPDK_ROOT_DIR)/dpdk/build; \ + rm -rf $(SPDK_ROOT_DIR)/intel-ipsec-mb/obj/*; \ + rm -rf $(SPDK_ROOT_DIR)/intel-ipsec-mb/libIPSec_MB.a install: all diff --git a/intel-ipsec-mb b/intel-ipsec-mb new file mode 160000 index 000000000..60a1f479c --- /dev/null +++ b/intel-ipsec-mb @@ -0,0 +1 @@ +Subproject commit 60a1f479c20d5374b7efe333e3c1b6c908d66d7d