From: sundararaja perumal <sundara.rajax.p.manoha...@intel.com> This is an Initial version of Intel QuickAssist Technology(QAT)
Intel's QuickAssist Technology is designed to optimize the use and deployment of algorithm accelerators in networking and security applications. This recipe is created under meta-intel/meta-crystalforest. This recipe supports QAT on Intel Xeon Processor E5-2600 series and E5-2400 processors. Formerly(CrystalForest and HighlandForest) Platforms. The Top-levelpackage name is "QATmux". The QATmux can interface to both QAT1.5 and QAT1.6 to bring up the Intel Communication Chipsets 89xx series formerly Coleto Creek(Intel DH895xcc PCH) and Cave Creek(Intel DH89xxCC PCH). QAT1.5. for use with Intel Communications Chipset 8900 to 8920(DH89xxCC)Series. QAT1.6. for use with Intel Communications Chipset 8925 to 8955(DH895xcc)Series. This recipe supports QAT on both Highland Forest and Crystal Forest platforms. Signed-off-by: sundararaja perumal <sundara.rajax.p.manoha...@intel.com> Acked-by: Ong Boon Leong <boon.leong....@intel.com> --- .../recipes-extended/qat-core/qat-core.bb | 367 +++++++++++++++++++++ .../qat-core/qat-core/00-qat_core_qa.rules | 3 + .../0001-Fix-for-QAT_MUX-Compilation-error.patch | 46 +++ .../qat-core/qat-1.6-sample-fix-QA-issue.patch | 32 ++ 4 files changed, 448 insertions(+) create mode 100644 meta-crystalforest/recipes-extended/qat-core/qat-core.bb create mode 100644 meta-crystalforest/recipes-extended/qat-core/qat-core/00-qat_core_qa.rules create mode 100644 meta-crystalforest/recipes-extended/qat-core/qat-core/0001-Fix-for-QAT_MUX-Compilation-error.patch create mode 100644 meta-crystalforest/recipes-extended/qat-core/qat-core/qat-1.6-sample-fix-QA-issue.patch diff --git a/meta-crystalforest/recipes-extended/qat-core/qat-core.bb b/meta-crystalforest/recipes-extended/qat-core/qat-core.bb new file mode 100644 index 0000000..3efb62e --- /dev/null +++ b/meta-crystalforest/recipes-extended/qat-core/qat-core.bb @@ -0,0 +1,367 @@ +SUMMARY = "Intel QuickAssist Technology Driver" +DESCRIPTION = "Intel QuickAssist Technology for packet processing acceleration for both Intel Crystal Forest & Highland Forest platforms \ +Software Package. " + +LICENSE = "GPLv2" +LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/GPL-2.0;md5=801f80980d171dd6425610833a22dbe6" + +QAT_MUX_VERSION = "2.2.0-30" + +PV = "${QAT_MUX_VERSION}" +QAT1_5_VERSION = "1.7.0-30" +QAT1_6_VERSION = "2.2.0-30" + +PR = "r0" + +SRC_URI = "https://01.org/sites/default/files/page/qatmux.l.${PV}.tar_.gz;name=qat\ + file://00-qat_core_qa.rules \ + file://0001-Fix-for-QAT_MUX-Compilation-error.patch \ + file://qat-1.6-sample-fix-QA-issue.patch \ + " + +SRC_URI[qat.md5sum] = "9567adeba4a4af50f4ac3ab70a3091ed" +SRC_URI[qat.sha256sum] = "00ac245dc6226d6bcba2326d7b6fa045f91a616c67a003f299f404af84d52032" + +KERNEL_VERSION = "${@base_read_file('${STAGING_KERNEL_DIR}/kernel-abiversion')}" + +# The list of binary built by QAT package. + +ICP_DRIVER_TYPE_LIST = "\ + dh895xcc \ + dh89xxcc \ + " + +STATIC_LIBS_QAT_1.6 = "\ + libadf_proxy.a \ + libqat_1_6_mux.a \ + libqat_mux.a \ + libosal.a \ + " + +STATIC_LIBS_QAT_1.5 = "\ + libqat_1_5_mux.a \ + libadf_proxy.a \ + libqat_mux.a \ + libosal.a \ + " + +SHARED_LIBS_QAT_1.6 = "\ + libqat_1_6_mux_s.so \ + libqat_mux_s.so \ + " + +SHARED_LIBS_QAT_1.5 = "\ + libqat_1_5_mux_s.so \ + " + +KERNEL_OBJ_LIST_QAT_1.5 = "\ + qat_1_5_mux.ko \ + " + +KERNEL_OBJ_LIST_QAT_1.6 = "\ + qat_1_6_mux.ko \ + qat_mux.ko \ + " + +BIN_LIST_QAT1_6 = "\ + mof_firmware.bin \ + mmp_firmware.bin \ + " + +BIN_LIST_QAT1_5 = "\ + mof_firmware.bin \ + mmp_firmware.bin \ + mof_firmware_c2xxx.bin \ + mmp_firmware_c2xxx.bin \ + " + +INITD_SCRIPT_LIST = "\ + qat_service \ + " + +INITD_APP_LIST = "\ + adf_ctl \ + " + +FUNC_KERNEL_OBJ_LIST = "\ + algchaining_sample.ko \ + ccm_sample.ko \ + cipher_sample.ko \ + dc_dp_sample.ko \ + dc_stateless_multi_op_sample.ko \ + dc_stateless_sample.ko \ + dh_sample.ko \ + drbg_sample.ko \ + gcm_sample.ko \ + hash_sample.ko \ + ipsec_sample.ko \ + nrbg_sample.ko \ + prime_sample.ko \ + ssl_sample.ko \ + sym_dp_sample.ko \ + " + +FUNC_USER_APP_LIST = "\ + dh_sample \ + dc_stateful_sample \ + dc_dp_sample \ + cipher_sample \ + sym_dp_sample \ + nrbg_sample \ + drbg_sample \ + dc_stateless_multi_op_sample \ + paper4 \ + hash_file_sample \ + ccm_sample \ + ipsec_sample \ + algchaining_sample \ + ssl_sample \ + dc_stateless_sample \ + hash_sample \ + gcm_sample \ + prime_sample \ + " + +ICP_TOOLS = "accelcomp" + +MODULE_DIR = "${D}${base_libdir}/modules/${KERNEL_VERSION}/kernel/drivers" + +export ICP_DH89XX = "QAT1.5" +export ICP_DH895X = "QAT1.6" + +export KERNEL_SOURCE_ROOT = "${STAGING_KERNEL_DIR}" +export ICP_TOOLS_TARGET = "${ICP_TOOLS}" +export ICP_NONBLOCKING_PARTIALS_PERFORM = "1" +export WITH_CPA_MUX = "1" + +HOST[unexport] = "1" +HOST[unexport] = "includedir" + +inherit update-rc.d +INITSCRIPT_NAME = "qat_service" + +inherit module +DEPENDS += "openssl" +PARALLEL_MAKE="" + +do_unpack_extra () { + cd ${WORKDIR} + tar xvf qatmux.l.${PV}.tar_ + cd "${WORKDIR}/${ICP_DH89XX}" + tar xzvf ${ICP_DH89XX}.L.${QAT1_5_VERSION}.tar.gz + cd "${WORKDIR}/${ICP_DH895X}" + tar xzvf ${ICP_DH895X}.L.${QAT1_6_VERSION}.tar.gz + #cpa_mux is introduced in latest QAT1.6 version for compiling both QAT1.5 and QAT1.6 + #we need to move it to common "WORKDIR" directory . + mv "${WORKDIR}/${ICP_DH895X}/cpa_mux" "${WORKDIR}" +} + +addtask unpack_extra after do_unpack before do_patch + +do_patch() { + cd ${WORKDIR} + patch -p1 < qat-1.6-sample-fix-QA-issue.patch + patch -p1 < 0001-Fix-for-QAT_MUX-Compilation-error.patch +} + +do_compile() { + export LD="${LD} --hash-style=gnu" + export MACHINE="${TARGET_ARCH}" + for k in ${ICP_DRIVER_TYPE_LIST} + do + if [ "${k}" == "dh89xxcc" ]; then + ICP_DRIVER_DIR="QAT1.5" + else + ICP_DRIVER_DIR="QAT1.6" + fi + PKGSRC="${WORKDIR}/${ICP_DRIVER_DIR}" + PKGBLD="${WORKDIR}/${ICP_DRIVER_DIR}/build" + export ICP_ROOT="${PKGSRC}" + export ICP_BUILD_OUTPUT="${PKGBLD}" + export ICP_ENV_DIR="${PKGSRC}/quickassist/build_system/build_files/env_files" + export ICP_BUILDSYSTEM_PATH="${PKGSRC}/quickassist/build_system" + export FUNC_PATH="${PKGSRC}/quickassist/lookaside/access_layer/src/sample_code/functional" + export SAMPLE_CODE_DIR="${PKGSRC}/quickassist/lookaside/access_layer/src/sample_code" + + cd ${PKGSRC}/quickassist + oe_runmake EXTRA_OEMAKE="CFLAGS=${CFLAGS} -fPIC" + + cd ${SAMPLE_CODE_DIR} + touch ${SAMPLE_CODE_DIR}/performance/compression/calgary + touch ${SAMPLE_CODE_DIR}/performance/compression/canterbury + # build the whole sample code: fips, functional, performance + oe_runmake 'all' + oe_runmake 'fips_user_code' + done +} + +do_install() { + for k in ${ICP_DRIVER_TYPE_LIST} + do + if [ "${k}" == "dh89xxcc" ]; then + ICP_DRIVER_DIR="QAT1.5" + else + ICP_DRIVER_DIR="QAT1.6" + fi + PKGSRC="${WORKDIR}/${ICP_DRIVER_DIR}" + PKGBLD="${WORKDIR}/${ICP_DRIVER_DIR}/build" + install -d ${D}${base_libdir}/firmware/$k \ + ${MODULE_DIR}/$k \ + ${D}${libdir}/$k \ + ${D}${sysconfdir}/$k \ + ${D}${sysconfdir}/udev/rules.d \ + ${D}${includedir}/$k \ + ${D}${includedir}/$k/dc \ + ${D}${includedir}/$k/lac \ + ${D}${bindir}/$k \ + ${D}${sysconfdir}/init.d/$k \ + ######################################################### + #Install QAT Core Modules and Binaries: + ######################################################### + if [ "${k}" == "dh89xxcc" ]; then + for i in ${BIN_LIST_QAT1_5} + do + install -m 640 ${PKGBLD}/$i ${D}${base_libdir}/firmware/$k/ + done + for i in ${KERNEL_OBJ_LIST_QAT_1.5} + do + install -m 640 ${PKGBLD}/$i ${MODULE_DIR}/$k/ + done + for i in ${STATIC_LIBS_QAT_1.5} + do + install -m 644 ${PKGBLD}/$i ${D}${libdir}/$k/ + done + for i in ${SHARED_LIBS_QAT_1.5} + do + install -m 644 ${PKGBLD}/$i ${D}${libdir}/$k/ + done + else + for i in ${BIN_LIST_QAT1_6} + do + install -m 640 ${PKGBLD}/$i ${D}${base_libdir}/firmware/$k/ + done + for i in ${KERNEL_OBJ_LIST_QAT_1.6} + do + install -m 640 ${PKGBLD}/$i ${MODULE_DIR}/$k/ + done + for i in ${STATIC_LIBS_QAT_1.6} + do + install -m 644 ${PKGBLD}/$i ${D}${libdir}/$k/ + done + for i in ${SHARED_LIBS_QAT_1.6} + do + install -m 644 ${PKGBLD}/$i ${D}${libdir}/$k/ + done + fi + + for i in ${INITD_SCRIPT_LIST} + do + install -m 0750 ${PKGBLD}/$i ${D}${sysconfdir}/init.d/$k/ + done + for i in ${INITD_APP_LIST} + do + install -m 0750 ${PKGBLD}/$i ${D}${sysconfdir}/init.d/$k/ + done + + install -m 660 ${PKGSRC}/quickassist/config/* ${D}${sysconfdir}/$k/ + + ################################################################################# + # Install QAT test application + ################################################################# + # Start putting package ingredient into each file system location + ################################################################# + # sample_code/performance + SAMPLE_CODE_DIR="${PKGSRC}/quickassist/lookaside/access_layer/src/sample_code" + install -m 640 ${SAMPLE_CODE_DIR}/build/cpa_sample_code.ko ${MODULE_DIR}/$k/ + install -m 640 ${SAMPLE_CODE_DIR}/build/qaeMemDrv.ko ${MODULE_DIR}/$k/ + install -m 0755 ${SAMPLE_CODE_DIR}/build/cpa_sample_code ${D}${bindir}/$k/ + install -m 640 ${SAMPLE_CODE_DIR}/build/cpa_sample_code_s.so ${D}${libdir}/$k/ + install -m 640 ${SAMPLE_CODE_DIR}/performance/build/linux_2.6/kernel_space/cpa_sample_code.a ${D}${libdir}/$k/ + # sample_code/fips + install -m 640 ${SAMPLE_CODE_DIR}/fips/build/linux_2.6/kernel_space/fips_sample.ko ${MODULE_DIR}/$k/ + install -m 640 ${SAMPLE_CODE_DIR}/fips/build/linux_2.6/user_space/fips_sample.a ${D}${libdir}/$k/ + install -m 640 ${SAMPLE_CODE_DIR}/fips/build/linux_2.6/user_space/fips_sample_s.so ${D}${libdir}/$k/ + # sample_code/functional + for i in ${FUNC_KERNEL_OBJ_LIST} + do + install -m 640 ${SAMPLE_CODE_DIR}/functional/build/$i ${MODULE_DIR}/$k/ + done + for i in ${FUNC_USER_APP_LIST} + do + install -m 0755 ${SAMPLE_CODE_DIR}/functional/build/$i ${D}/${bindir}/$k/ + done + # QAT LAC include headers are required by intel-dpdk to be built properly + install -m 640 ${PKGSRC}/quickassist/lookaside/access_layer/include/*.h ${D}${includedir}/$k/ + install -m 640 ${PKGSRC}/quickassist/include/*.h ${D}${includedir}/$k/ + install -m 640 ${PKGSRC}/quickassist/include/dc/*.h ${D}${includedir}/$k/dc/ + install -m 640 ${PKGSRC}/quickassist/include/lac/*.h ${D}${includedir}/$k/lac/ + done + # QAT include headers are required by intel-dpdk to be built properly + install -m 0600 ${WORKDIR}/00-qat_core_qa.rules ${D}${sysconfdir}/udev/rules.d + # Compression Calgary & Canterbury Corpus + install -m 0755 ${SAMPLE_CODE_DIR}/performance/compression/calgary ${D}${base_libdir}/firmware/ + install -m 0755 ${SAMPLE_CODE_DIR}/performance/compression/canterbury ${D}${base_libdir}/firmware/ +} + +pkg_postinst_${PN}_append () { + if [ -z "$D" ]; then + depmod -a + update-modules || true + fi +} + +PACKAGES += "${PN}-dh89xxcc" +PACKAGES += "${PN}-dh895xcc" +PACKAGES += "${PN}-app-dh89xxcc" +PACKAGES += "${PN}-app-dh895xcc" +PACKAGES += "${PN}-dbg-dh89xxcc" +PACKAGES += "${PN}-dbg-dh895xcc" + +FILES_${PN} += " \ + ${base_libdir}/firmware/ \ + ${sysconfdir}/udev/rules.d/ \ + " + +FILES_${PN}-dh89xxcc += " \ + ${base_libdir}/firmware/dh89xxcc \ + ${sysconfdir}/dh89xxcc \ + ${includedir}/dh89xxcc \ + ${libdir}/dh89xxcc/*.so \ + " + +FILES_${PN}-dh895xcc += " \ + ${base_libdir}/firmware/dh895xcc \ + ${sysconfdir}/dh895xcc \ + ${includedir}/dh895xcc \ + ${libdir}/dh895xcc/*.so \ + " + +FILES_${PN}-app-dh89xxcc += " \ + ${sysconfdir}/init.d/dh89xxcc/* \ + ${bindir}/dh89xxcc/* \ + " + +FILES_${PN}-app-dh895xcc += " \ + ${sysconfdir}/init.d/dh895xcc/* \ + ${bindir}/dh895xcc/* \ + " + +FILES_${PN}-dbg-dh89xxcc += " \ + ${sysconfdir}/init.d/dh89xxcc/.debug \ + ${bindir}/dh89xxcc/.debug \ + ${libdir}/dh89xxcc/.debug\ + " + +FILES_${PN}-dbg-dh895xcc += " \ + ${bindir}/dh895xcc/.debug \ + ${libdir}/dh895xcc/.debug\ + ${sysconfdir}/init.d/dh895xcc/.debug \ + " + +FILES_${PN}-staticdev += " \ + ${libdir}/dh895xcc/*.a \ + ${libdir}/dh89xxcc/*.a \ + " + +PRIVATE_LIBS_${PN}-dh895xcc = "fips_sample_s.so libicp_qa_al_s.so cpa_sample_code_s.so libqat_mux_s.so libqat_1_6_mux_s.so libqat_1_5_mux_s.so" +PRIVATE_LIBS_${PN}-dh89xxcc = "fips_sample_s.so libicp_qa_al_s.so cpa_sample_code_s.so libqat_mux_s.so libqat_1_6_mux_s.so libqat_1_5_mux_s.so" diff --git a/meta-crystalforest/recipes-extended/qat-core/qat-core/00-qat_core_qa.rules b/meta-crystalforest/recipes-extended/qat-core/qat-core/00-qat_core_qa.rules new file mode 100644 index 0000000..7b5b60e --- /dev/null +++ b/meta-crystalforest/recipes-extended/qat-core/qat-core/00-qat_core_qa.rules @@ -0,0 +1,3 @@ +KERNEL=="icp_adf_ctl" MODE="0600" +KERNEL=="icp_dev[0-9]*" MODE="0600" +KERNEL=="icp_dev_mem?" MODE="0600" diff --git a/meta-crystalforest/recipes-extended/qat-core/qat-core/0001-Fix-for-QAT_MUX-Compilation-error.patch b/meta-crystalforest/recipes-extended/qat-core/qat-core/0001-Fix-for-QAT_MUX-Compilation-error.patch new file mode 100644 index 0000000..acd3d6d --- /dev/null +++ b/meta-crystalforest/recipes-extended/qat-core/qat-core/0001-Fix-for-QAT_MUX-Compilation-error.patch @@ -0,0 +1,46 @@ +From 2d5688d873c2ca9bdbd4e350709b06be28acca06 Mon Sep 17 00:00:00 2001 +From: sundararaja perumal <sundara.rajax.p.manoha...@intel.com> +Date: Mon, 16 Feb 2015 13:41:41 +0800 +Subject: [PATCH] Fix for QAT_MUX Compilation error: + +This will fix the qat-core-Mux Compliation error: + +While building the Qat-core module along the sample applications with CPA_MUX enabled. +The QAT1.5 sample application requires libqat_mux.so in the ICP_BUILD_OUTPUT Path . +Since QAT1.6 comes along with the cpa_mux and need to copy the binareies in the +specified path mentioned in the Makefile. + +Upstream Status: Inappropriate + +Signed-off-by: sundararaja perumal <sundara.rajax.p.manoha...@intel.com> +--- + QAT1.5/quickassist/Makefile | 7 ++++++- + 1 file changed, 6 insertions(+), 1 deletion(-) + +diff --git a/QAT1.5/quickassist/Makefile b/QAT1.5/quickassist/Makefile +index d4e987d..ef092ad 100644 +--- a/QAT1.5/quickassist/Makefile ++++ b/QAT1.5/quickassist/Makefile +@@ -96,7 +96,7 @@ ICP_TOP_ENV=$(ICP_BUILDSYSTEM_PATH)/build_files/env_files/ + export ICP_ACCEL_INC=YES + LAC_LIB_DIR=$(LAC_PATH)/build/libs + export DRBG_POLL_AND_WAIT=1 +-ALL_TARGETS = clean lac_lib_dir libosal libosal_user hal adf adf_user lac lac_user qat-fw install_scripts ++ALL_TARGETS = clean lac_lib_dir libosal libosal_user hal adf adf_user lac lac_user qat_mux qat-fw install_scripts + ICP_ARCH_USER?=`uname -m` + + ifdef ICP_SRIOV +@@ -199,6 +199,11 @@ lac_user: output_dir libosal_user adf_user + @cd $(LAC_PATH) && export ICP_ENV_DIR=$(ICP_TOP_ENV) && export ONE_KO_RELEASE_PACKAGE=1 && cd src && $(MAKE) ARCH=$(ICP_ARCH_USER) lib_shared ICP_OS_LEVEL=user_space; + cp $(LAC_PATH)/src/build/linux_2.6/user_space/lib$(BASENAME)_s.so $(ICP_BUILD_OUTPUT)/; + ++qat_mux: output_dir ++ @echo ; echo 'Copying MUX Binary': ++ @cp $(CPA_MUX_PATH)/build/linux_2.6/user_space/libqat_mux_s.so $(ICP_BUILD_OUTPUT)/; ++ @cp $(CPA_MUX_PATH)/build/linux_2.6/user_space/libqat_mux.a $(ICP_BUILD_OUTPUT)/; ++ + qat-fw: output_dir + @echo ; echo 'Copying DH89XXCC QAT-FW Binary'; + @cp -f $(QAT_FW_PATH)/icp_qat_ae.mof $(ICP_BUILD_OUTPUT)/mof_firmware.bin; +-- +1.9.1 diff --git a/meta-crystalforest/recipes-extended/qat-core/qat-core/qat-1.6-sample-fix-QA-issue.patch b/meta-crystalforest/recipes-extended/qat-core/qat-core/qat-1.6-sample-fix-QA-issue.patch new file mode 100644 index 0000000..b5454f7 --- /dev/null +++ b/meta-crystalforest/recipes-extended/qat-core/qat-core/qat-1.6-sample-fix-QA-issue.patch @@ -0,0 +1,32 @@ +From 9f9529e41adf4aa3607b343da37f8af3f60ec31d Mon Sep 17 00:00:00 2001 +From: Sreeju Selvaraj <sreeju.armughanx.selva...@intel.com> +Date: Thu, 30 Oct 2014 18:04:36 +0800 +Subject: [PATCH] qat-core-sample: fix QA issue + +This will fix the qat-core-sample build error: +ERROR: QA Issue: qat-core-sample: The compile log indicates that host include +and/or library paths were used + +Upstream Status: Inappropriate + +Signed-off-by: Sreeju Selvaraj <sreeju.armughanx.selva...@intel.com> +--- + .../build_system/build_files/env_files/linux_2.6_user_space.mk | 3 +-- + 1 file changed, 1 insertion(+), 2 deletions(-) + +diff --git a/QAT1.6/quickassist/build_system/build_files/env_files/linux_2.6_user_space.mk b/QAT1.6/quickassist/build_system/build_files/env_files/linux_2.6_user_space.mk +index 2d6e2dc..4c4c1c9 100755 +--- a/QAT1.6/quickassist/build_system/build_files/env_files/linux_2.6_user_space.mk ++++ b/QAT1.6/quickassist/build_system/build_files/env_files/linux_2.6_user_space.mk +@@ -72,8 +72,7 @@ + # + #------------------------------------------------------------- + +-INCLUDES+=-I/usr/include \ +- -I$(API_DIR) \ ++INCLUDES+=-I$(API_DIR) \ + -I$(OSAL_DIR)/include \ + -I$(OSAL_DIR)/src/linux/user_space/include + +-- +1.9.1 -- 1.9.1 -- _______________________________________________ meta-intel mailing list meta-intel@yoctoproject.org https://lists.yoctoproject.org/listinfo/meta-intel