From da3bacb39c0bc8d0970502237c6c5a60533a997f Mon Sep 17 00:00:00 2001 From: LiweiSong Date: Tue, 27 Jul 2021 10:40:42 +0800 Subject: qat17: upgrade qat to 4.14.0-00031 upgrade qat from 4.12.0-00011 to 4.14.0-00031 adjust patch index and add a patch to fix deadlock issue. Signed-off-by: Liwei Song Signed-off-by: Anuj Mittal --- ...nvert-mutex_lock-to-mutex_trylock-to-avio.patch | 104 +++++++++++++ ...006-qat-add-install-target-and-add-folder.patch | 16 +- .../0011-qat17-use-namespace-CRYPTO_INTERNAL.patch | 40 +++-- recipes-extended/qat/qat17_4.12.0-00011.bb | 171 --------------------- recipes-extended/qat/qat17_4.14.0-00031.bb | 170 ++++++++++++++++++++ 5 files changed, 311 insertions(+), 190 deletions(-) create mode 100644 recipes-extended/qat/files/0001-usdm_drv-convert-mutex_lock-to-mutex_trylock-to-avio.patch delete mode 100644 recipes-extended/qat/qat17_4.12.0-00011.bb create mode 100644 recipes-extended/qat/qat17_4.14.0-00031.bb diff --git a/recipes-extended/qat/files/0001-usdm_drv-convert-mutex_lock-to-mutex_trylock-to-avio.patch b/recipes-extended/qat/files/0001-usdm_drv-convert-mutex_lock-to-mutex_trylock-to-avio.patch new file mode 100644 index 0000000..04ff59e --- /dev/null +++ b/recipes-extended/qat/files/0001-usdm_drv-convert-mutex_lock-to-mutex_trylock-to-avio.patch @@ -0,0 +1,104 @@ +From acf49dcacc450830bf9ccad5dcd895ce1b8ba786 Mon Sep 17 00:00:00 2001 +From: Liwei Song +Date: Thu, 22 Jul 2021 08:09:05 +0000 +Subject: [PATCH] usdm_drv: convert mutex_lock to mutex_trylock to aviod + deadlock + +exist the following deadlock when run cpa_sample_code: + +====================================================== +WARNING: possible circular locking dependency detected +5.10.47-yocto-standard #1 Tainted: G O +------------------------------------------------------ + +cpa_sample_code/2144 is trying to acquire lock: +ffffffffc04883d0 (&dev_mem_lock +============================= +){+.+.}-{3:3}, at: mem_mmap+0x32/0x160 [usdm_drv] + +but task is already holding lock: +ff1ab034bf111278 (&mm->mmap_lock#2){++++}-{3:3}, at: vm_mmap_pgoff+0x99/0x100 + +which lock already depends on the new lock. + +the existing dependency chain (in reverse order) is: + +-> #1 (&mm->mmap_lock#2){++++}-{3:3}: + __lock_acquire+0x4be/0x980 + lock_acquire+0xe1/0x2f0 +WARNING: suspicious RCU usage + __might_fault+0x5e/0x80 + _copy_to_user+0x23/0xa0 + mem_ioctl+0x2ed/0x3b5 [usdm_drv] + __x64_sys_ioctl+0x91/0xc0 + do_syscall_64+0x38/0x50 + entry_SYSCALL_64_after_hwframe+0x44/0xa9 +5.10.47-yocto-standard #1 Tainted: G O + +-> #0 (&dev_mem_lock){+.+.}-{3:3}: + check_prev_add+0x95/0xc00 + validate_chain+0x723/0xaa0 + __lock_acquire+0x4be/0x980 + lock_acquire+0xe1/0x2f0 + __mutex_lock+0x97/0x960 + mutex_lock_nested+0x1b/0x20 + mem_mmap+0x32/0x160 [usdm_drv] +----------------------------- + mmap_region+0x423/0x6b0 + do_mmap+0x46a/0x5e0 + vm_mmap_pgoff+0xc5/0x100 + ksys_mmap_pgoff+0x1d0/0x230 + __x64_sys_mmap+0x33/0x40 + do_syscall_64+0x38/0x50 + entry_SYSCALL_64_after_hwframe+0x44/0xa9 +kernel/sched/core.c:7263 Illegal context switch in RCU-bh read-side critical section! + +other info that might help us debug this: + + Possible unsafe locking scenario: + + CPU0 CPU1 + ---- ---- + lock(&mm->mmap_lock#2); + lock(&dev_mem_lock); + lock(&mm->mmap_lock#2); + lock(&dev_mem_lock); + + *** DEADLOCK *** + +convert mutex_lock to mutex_trylock which will return without wait. + +Upstream-Status: Inappropriate + +Signed-off-by: Liwei Song +--- + .../utilities/libusdm_drv/linux/kernel_space/qae_mem_drv.c | 6 +++++- + 1 file changed, 5 insertions(+), 1 deletion(-) + +diff --git a/quickassist/utilities/libusdm_drv/linux/kernel_space/qae_mem_drv.c b/quickassist/utilities/libusdm_drv/linux/kernel_space/qae_mem_drv.c +index e404647aafb2..2a4de14a0300 100644 +--- a/quickassist/utilities/libusdm_drv/linux/kernel_space/qae_mem_drv.c ++++ b/quickassist/utilities/libusdm_drv/linux/kernel_space/qae_mem_drv.c +@@ -87,6 +87,7 @@ + #include + #include + #include ++#include + + #include "qae_mem_utils.h" + +@@ -975,7 +976,10 @@ mem_mmap(struct file *fp, struct vm_area_struct *vma) + unsigned long size = vma->vm_end - vma->vm_start; + id = vma->vm_pgoff << PAGE_SHIFT; + +- mutex_lock(&dev_mem_lock); ++ while(!mutex_trylock(&dev_mem_lock)){ ++ udelay(5); ++ } ++ + kmem = userMemGetInfo(fp, id); + if (!kmem) + { +-- +2.29.2 + diff --git a/recipes-extended/qat/files/0006-qat-add-install-target-and-add-folder.patch b/recipes-extended/qat/files/0006-qat-add-install-target-and-add-folder.patch index 62d25e0..9d92f83 100644 --- a/recipes-extended/qat/files/0006-qat-add-install-target-and-add-folder.patch +++ b/recipes-extended/qat/files/0006-qat-add-install-target-and-add-folder.patch @@ -1,4 +1,4 @@ -From fc2ae28063d10721282a4e6009cec9143ce37c80 Mon Sep 17 00:00:00 2001 +From b6f1c6465ce5d9d3792b8e00fe0a94ddd2724b91 Mon Sep 17 00:00:00 2001 From: "Tan, Raymond" Date: Mon, 4 Jun 2018 09:26:33 +0800 Subject: [PATCH 06/11] qat-add-install-target-and-add-folder @@ -13,18 +13,18 @@ Signed-off-by: Tan, Raymond 1 file changed, 22 insertions(+), 3 deletions(-) diff --git a/quickassist/Makefile b/quickassist/Makefile -index 558f85d..4cc0f2b 100644 +index 34aaae021a40..292a19921832 100644 --- a/quickassist/Makefile +++ b/quickassist/Makefile -@@ -96,6 +96,7 @@ ICP_BUILD_OUTPUT?=build_$(DATE) - ICP_TOP_ENV=$(ICP_BUILDSYSTEM_PATH)/build_files/env_files/ - export ICP_ACCEL_INC=YES +@@ -98,6 +98,7 @@ export ICP_ACCEL_INC=YES + export ICP_PARAM_CHECK ?= y + export CNV_STRICT_MODE ?= 1 LAC_LIB_DIR=$(LAC_PATH)/build/libs +MODULE_INSTALLPATH=$(SAMPLE_BUILD_OUTPUT)/lib/modules/$(QAT_KERNEL_VER)/updates/drivers/crypto/qat #Release Package build steps ALL_TARGETS = lac_user lac_kernel -@@ -113,10 +114,14 @@ all: $(ALL_TARGETS) +@@ -115,10 +116,14 @@ all: $(ALL_TARGETS) user: lac_lib_dir libosal_user lac_user @@ -41,7 +41,7 @@ index 558f85d..4cc0f2b 100644 # # Common memory driver -@@ -199,8 +204,22 @@ ifeq ($(ICP_NO_CLEAN),) +@@ -201,8 +206,22 @@ ifeq ($(ICP_NO_CLEAN),) endif @@ -66,5 +66,5 @@ index 558f85d..4cc0f2b 100644 lac_lib_dir: clean test -d $(LAC_LIB_DIR) || mkdir -p $(LAC_LIB_DIR); -- -2.14.5 +2.29.2 diff --git a/recipes-extended/qat/files/0011-qat17-use-namespace-CRYPTO_INTERNAL.patch b/recipes-extended/qat/files/0011-qat17-use-namespace-CRYPTO_INTERNAL.patch index 1a7a647..c9eb5c3 100644 --- a/recipes-extended/qat/files/0011-qat17-use-namespace-CRYPTO_INTERNAL.patch +++ b/recipes-extended/qat/files/0011-qat17-use-namespace-CRYPTO_INTERNAL.patch @@ -1,4 +1,4 @@ -From 9b2b7a79fc9d9323fe9ec44de7619ea175c45bc1 Mon Sep 17 00:00:00 2001 +From 6a1fa62ffa4acd6e8e4d4f648e19363a2ed5ef74 Mon Sep 17 00:00:00 2001 From: Yongxin Liu Date: Tue, 23 Mar 2021 09:31:25 +0000 Subject: [PATCH 11/11] qat17: use namespace CRYPTO_INTERNAL @@ -11,12 +11,13 @@ Upstream-Status: Inappropriate [Code released in tarball form only] Signed-off-by: Yongxin Liu --- - quickassist/lookaside/access_layer/src/linux/icp_qa_module.c | 3 +++ - .../utilities/osal/src/linux/kernel_space/OsalCryptoInterface.c | 5 +++++ - 2 files changed, 8 insertions(+) + quickassist/lookaside/access_layer/src/linux/icp_qa_module.c | 3 +++ + quickassist/qat/drivers/crypto/qat/qat_common/qat_algs.c | 5 +++++ + .../osal/src/linux/kernel_space/OsalCryptoInterface.c | 5 +++++ + 3 files changed, 13 insertions(+) diff --git a/quickassist/lookaside/access_layer/src/linux/icp_qa_module.c b/quickassist/lookaside/access_layer/src/linux/icp_qa_module.c -index 413eb07..f3a371e 100644 +index db51add84592..209b3054aa8c 100644 --- a/quickassist/lookaside/access_layer/src/linux/icp_qa_module.c +++ b/quickassist/lookaside/access_layer/src/linux/icp_qa_module.c @@ -120,3 +120,6 @@ module_exit(kapi_mod_exit); @@ -26,14 +27,31 @@ index 413eb07..f3a371e 100644 +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(5,12,0)) +MODULE_IMPORT_NS(CRYPTO_INTERNAL); +#endif +diff --git a/quickassist/qat/drivers/crypto/qat/qat_common/qat_algs.c b/quickassist/qat/drivers/crypto/qat/qat_common/qat_algs.c +index 23249de3db39..0e61954c0150 100644 +--- a/quickassist/qat/drivers/crypto/qat/qat_common/qat_algs.c ++++ b/quickassist/qat/drivers/crypto/qat/qat_common/qat_algs.c +@@ -8,7 +8,12 @@ + #include + #include + #include ++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(5,11,0)) ++#include ++#include ++#else + #include ++#endif + #include + #include + #include diff --git a/quickassist/utilities/osal/src/linux/kernel_space/OsalCryptoInterface.c b/quickassist/utilities/osal/src/linux/kernel_space/OsalCryptoInterface.c -index de24fa0..96c29c0 100644 +index ec536607989a..9d62bb8749d5 100644 --- a/quickassist/utilities/osal/src/linux/kernel_space/OsalCryptoInterface.c +++ b/quickassist/utilities/osal/src/linux/kernel_space/OsalCryptoInterface.c -@@ -75,6 +75,11 @@ - #else - #include - #endif +@@ -76,6 +76,11 @@ + #endif /* end of 5.11.0, 2.6.29 checks */ + #if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,29)) + #include +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(5,12,0)) +#include +#include @@ -43,5 +61,5 @@ index de24fa0..96c29c0 100644 #define OSAL_MAX_SHASH_DECSIZE 512 -- -2.14.5 +2.29.2 diff --git a/recipes-extended/qat/qat17_4.12.0-00011.bb b/recipes-extended/qat/qat17_4.12.0-00011.bb deleted file mode 100644 index 28bcad7..0000000 --- a/recipes-extended/qat/qat17_4.12.0-00011.bb +++ /dev/null @@ -1,171 +0,0 @@ -DESCRIPTION = "Intel(r) QuickAssist Technology API" -HOMEPAGE = "https://01.org/packet-processing/intel%C2%AE-quickassist-technology-drivers-and-patches" - -#Dual BSD and GPLv2 License -LICENSE = "BSD & GPLv2" -LIC_FILES_CHKSUM = "\ - file://${COMMON_LICENSE_DIR}/GPL-2.0-only;md5=801f80980d171dd6425610833a22dbe6 \ - file://${COMMON_LICENSE_DIR}/BSD;md5=3775480a712fc46a69647678acb234cb \ - " -DEPENDS += "boost udev zlib openssl" -PROVIDES += "virtual/qat" - -TARGET_CC_ARCH += "${LDFLAGS}" - -SRC_URI = "https://01.org/sites/default/files/downloads//qat1.7.l.4.12.0-00011.tar.gz;subdir=qat17 \ - file://0001-qat-fix-for-cross-compilation-issue.patch \ - file://0002-qat-remove-local-path-from-makefile.patch \ - file://0003-qat-override-CC-LD-AR-only-when-it-is-not-define.patch \ - file://0004-update-KDIR-for-cross-compilation.patch \ - file://0005-Added-include-dir-path.patch \ - file://0006-qat-add-install-target-and-add-folder.patch \ - file://0007-qat-use-static-lib-for-linking-under-cpa-sample-code.patch \ - file://0008-qat-overwrite-KBUILD_BUILTIN-in-kernel-s-Makefile.patch \ - file://0009-crypto-qat-Silence-smp_processor_id-warning.patch \ - file://0010-qat-include-sha1.h-and-sha2.h-instead-of-sha.h-in-ke.patch \ - file://0011-qat17-use-namespace-CRYPTO_INTERNAL.patch \ - " - -do_configure[depends] += "virtual/kernel:do_shared_workdir" - -SRC_URI[md5sum] = "23d962944ae22ef14ff880fdbff4223b" -SRC_URI[sha256sum] = "6b8d643780b2640d084f5bd50546c8dae4ae9ec50cf167660a0ebdc55619eb2e" - -COMPATIBLE_MACHINE = "null" -COMPATIBLE_HOST_x86-x32 = 'null' -COMPATIBLE_HOST_libc-musl_class-target = 'null' - -S = "${WORKDIR}/qat17" -ICP_TOOLS = "accelcomp" -SAMPLE_CODE_DIR = "${S}/quickassist/lookaside/access_layer/src/sample_code" -export INSTALL_MOD_PATH = "${D}" -export ICP_ROOT = "${S}" -export ICP_ENV_DIR = "${S}/quickassist/build_system/build_files/env_files" -export ICP_BUILDSYSTEM_PATH = "${S}/quickassist/build_system" -export ICP_TOOLS_TARGET = "${ICP_TOOLS}" -export FUNC_PATH = "${ICP_ROOT}/quickassist/lookaside/access_layer/src/sample_code/functional" -export INSTALL_FW_PATH = "${D}${base_libdir}/firmware" -export KERNEL_SOURCE_ROOT = "${STAGING_KERNEL_DIR}" -export ICP_BUILD_OUTPUT = "${D}" -export DEST_LIBDIR = "${libdir}" -export DEST_BINDIR = "${bindir}" -export QAT_KERNEL_VER = "${KERNEL_VERSION}" -export SAMPLE_BUILD_OUTPUT = "${D}" -export INSTALL_MOD_DIR = "${D}${base_libdir}/modules/${KERNEL_VERSION}" -export KERNEL_BUILDDIR = "${STAGING_KERNEL_BUILDDIR}" -export SC_EPOLL_DISABLED = "1" -export WITH_UPSTREAM = "1" -export WITH_CMDRV = "1" -export KERNEL_SOURCE_DIR = "${ICP_ROOT}/quickassist/qat/" -export ICP_NO_CLEAN = "1" -export ICP_QDM_IOMMU = "1" - -inherit module -inherit update-rc.d -INITSCRIPT_NAME = "qat_service" - -PARALLEL_MAKE = "" - -EXTRA_OEMAKE_append = " CFLAGS+='-fgnu89-inline -fPIC'" -EXTRA_OEMAKE = "-e MAKEFLAGS=" - -do_compile () { - export LD="${LD} --hash-style=gnu" - export MACHINE="${TARGET_ARCH}" - - cd ${S}/quickassist/qat - oe_runmake - oe_runmake 'modules_install' - - cd ${S}/quickassist - oe_runmake - - cd ${S}/quickassist/utilities/adf_ctl - oe_runmake - - cd ${S}/quickassist/utilities/libusdm_drv - oe_runmake - - cd ${S}/quickassist/lookaside/access_layer/src/qat_direct/src/ - oe_runmake - - #build the whole sample code: per_user only - cd ${SAMPLE_CODE_DIR} - oe_runmake 'perf_user' -} - -do_install() { - export MACHINE="${TARGET_ARCH}" - - cd ${S}/quickassist - oe_runmake install - - cd ${S}/quickassist/qat - oe_runmake modules_install - - install -d ${D}${sysconfdir}/udev/rules.d - install -d ${D}${sbindir} - install -d ${D}${sysconfdir}/conf_files - install -d ${D}${prefix}/src/qat - install -d ${D}${includedir} - install -d ${D}${includedir}/dc - install -d ${D}${includedir}/lac - - echo 'KERNEL=="qat_adf_ctl" MODE="0660" GROUP="qat"' > ${D}/etc/udev/rules.d/00-qat.rules - echo 'KERNEL=="qat_dev_processes" MODE="0660" GROUP="qat"' >> ${D}/etc/udev/rules.d/00-qat.rules - echo 'KERNEL=="usdm_drv" MODE="0660" GROUP="qat"' >> ${D}/etc/udev/rules.d/00-qat.rules - echo 'KERNEL=="uio*" MODE="0660" GROUP="qat"' >> ${D}/etc/udev/rules.d/00-qat.rules - echo 'KERNEL=="hugepages" MODE="0660" GROUP="qat"' >> ${D}/etc/udev/rules.d/00-qat.rules - - mkdir -p ${D}${base_libdir} - - install -D -m 0755 ${S}/quickassist/lookaside/access_layer/src/build/linux_2.6/user_space/libqat_s.so ${D}${base_libdir} - install -D -m 0755 ${S}/quickassist/lookaside/access_layer/src/build/linux_2.6/user_space/libqat.a ${D}${base_libdir} - install -D -m 0755 ${S}/quickassist/utilities/osal/src/build/linux_2.6/user_space/libosal_s.so ${D}${base_libdir} - install -D -m 0755 ${S}/quickassist/utilities/osal/src/build/linux_2.6/user_space/libosal.a ${D}${base_libdir} - install -D -m 0755 ${S}/quickassist/lookaside/access_layer/src/qat_direct/src/build/linux_2.6/user_space/libadf_user.a ${D}${base_libdir}/libadf.a - install -D -m 0755 ${S}/quickassist/utilities/libusdm_drv/libusdm_drv_s.so ${D}${base_libdir} - install -D -m 0755 ${S}/quickassist/utilities/libusdm_drv/libusdm_drv.a ${D}${base_libdir} - install -D -m 0750 ${S}/quickassist/utilities/adf_ctl/adf_ctl ${D}${sbindir} - - install -D -m 640 ${S}/quickassist/utilities/adf_ctl/conf_files/*.conf ${D}${sysconfdir}/conf_files - install -D -m 640 ${S}/quickassist/utilities/adf_ctl/conf_files/*.conf.vm ${D}${sysconfdir}/conf_files - - install -m 0755 ${S}/quickassist/qat/fw/qat_d15xx.bin ${D}${nonarch_base_libdir}/firmware - install -m 0755 ${S}/quickassist/qat/fw/qat_d15xx_mmp.bin ${D}${nonarch_base_libdir}/firmware - - install -m 640 ${S}/quickassist/include/*.h ${D}${includedir} - install -m 640 ${S}/quickassist/include/dc/*.h ${D}${includedir}/dc/ - install -m 640 ${S}/quickassist/include/lac/*.h ${D}${includedir}/lac/ - install -m 640 ${S}/quickassist/lookaside/access_layer/include/*.h ${D}${includedir} - install -m 640 ${S}/quickassist/utilities/libusdm_drv/*.h ${D}${includedir} - - install -m 0755 ${S}/quickassist/lookaside/access_layer/src/sample_code/performance/compression/calgary ${D}${nonarch_base_libdir}/firmware - install -m 0755 ${S}/quickassist/lookaside/access_layer/src/sample_code/performance/compression/calgary32 ${D}${nonarch_base_libdir}/firmware - install -m 0755 ${S}/quickassist/lookaside/access_layer/src/sample_code/performance/compression/canterbury ${D}${nonarch_base_libdir}/firmware - - #install qat source - cp ${DL_DIR}/qat1.7.l.${PV}.tar.gz ${D}${prefix}/src/qat/ -} - -PACKAGES += "${PN}-app" - -FILES_${PN}-dev = "${includedir}/ \ - ${nonarch_base_libdir}/*.a \ - " - -FILES_${PN} += "\ - ${libdir}/ \ - ${nonarch_base_libdir}/firmware \ - ${sysconfdir}/ \ - ${sbindir}/ \ - ${base_libdir}/*.so \ - ${prefix}/src/qat \ - " - -FILES_${PN}-dbg += "${sysconfdir}/init.d/.debug/ \ - " - -FILES_${PN}-app += "${bindir}/* \ - ${prefix}/qat \ - " diff --git a/recipes-extended/qat/qat17_4.14.0-00031.bb b/recipes-extended/qat/qat17_4.14.0-00031.bb new file mode 100644 index 0000000..d27d933 --- /dev/null +++ b/recipes-extended/qat/qat17_4.14.0-00031.bb @@ -0,0 +1,170 @@ +DESCRIPTION = "Intel(r) QuickAssist Technology API" +HOMEPAGE = "https://01.org/packet-processing/intel%C2%AE-quickassist-technology-drivers-and-patches" + +#Dual BSD and GPLv2 License +LICENSE = "BSD & GPLv2" +LIC_FILES_CHKSUM = "\ + file://${COMMON_LICENSE_DIR}/GPL-2.0-only;md5=801f80980d171dd6425610833a22dbe6 \ + file://${COMMON_LICENSE_DIR}/BSD;md5=3775480a712fc46a69647678acb234cb \ + " +DEPENDS += "boost udev zlib openssl yasm-native" +PROVIDES += "virtual/qat" + +TARGET_CC_ARCH += "${LDFLAGS}" + +SRC_URI = "https://downloadmirror.intel.com/30178/eng/QAT1.7.L.4.14.0-00031.tar.gz;subdir=qat17 \ + file://0001-qat-fix-for-cross-compilation-issue.patch \ + file://0002-qat-remove-local-path-from-makefile.patch \ + file://0003-qat-override-CC-LD-AR-only-when-it-is-not-define.patch \ + file://0004-update-KDIR-for-cross-compilation.patch \ + file://0005-Added-include-dir-path.patch \ + file://0006-qat-add-install-target-and-add-folder.patch \ + file://0007-qat-use-static-lib-for-linking-under-cpa-sample-code.patch \ + file://0009-crypto-qat-Silence-smp_processor_id-warning.patch \ + file://0011-qat17-use-namespace-CRYPTO_INTERNAL.patch \ + file://0001-usdm_drv-convert-mutex_lock-to-mutex_trylock-to-avio.patch \ + " + +do_configure[depends] += "virtual/kernel:do_shared_workdir" + +SRC_URI[md5sum] = "a6ff665184159583542dac89b9226f09" +SRC_URI[sha256sum] = "a68dfaea4308e0bb5f350b7528f1a076a0c6ba3ec577d60d99dc42c49307b76e" + +COMPATIBLE_MACHINE = "null" +COMPATIBLE_HOST_x86-x32 = 'null' +COMPATIBLE_HOST_libc-musl_class-target = 'null' + +S = "${WORKDIR}/qat17" +ICP_TOOLS = "accelcomp" +SAMPLE_CODE_DIR = "${S}/quickassist/lookaside/access_layer/src/sample_code" +export INSTALL_MOD_PATH = "${D}" +export ICP_ROOT = "${S}" +export ICP_ENV_DIR = "${S}/quickassist/build_system/build_files/env_files" +export ICP_BUILDSYSTEM_PATH = "${S}/quickassist/build_system" +export ICP_TOOLS_TARGET = "${ICP_TOOLS}" +export FUNC_PATH = "${ICP_ROOT}/quickassist/lookaside/access_layer/src/sample_code/functional" +export INSTALL_FW_PATH = "${D}${base_libdir}/firmware" +export KERNEL_SOURCE_ROOT = "${STAGING_KERNEL_DIR}" +export ICP_BUILD_OUTPUT = "${D}" +export DEST_LIBDIR = "${libdir}" +export DEST_BINDIR = "${bindir}" +export QAT_KERNEL_VER = "${KERNEL_VERSION}" +export SAMPLE_BUILD_OUTPUT = "${D}" +export INSTALL_MOD_DIR = "${D}${base_libdir}/modules/${KERNEL_VERSION}" +export KERNEL_BUILDDIR = "${STAGING_KERNEL_BUILDDIR}" +export SC_EPOLL_DISABLED = "1" +export WITH_UPSTREAM = "1" +export WITH_CMDRV = "1" +export KERNEL_SOURCE_DIR = "${ICP_ROOT}/quickassist/qat/" +export ICP_NO_CLEAN = "1" +export ICP_QDM_IOMMU = "1" + +inherit module +inherit update-rc.d +INITSCRIPT_NAME = "qat_service" + +PARALLEL_MAKE = "" + +EXTRA_OEMAKE_append = " CFLAGS+='-fgnu89-inline -fPIC'" +EXTRA_OEMAKE = "-e MAKEFLAGS=" + +do_compile () { + export LD="${LD} --hash-style=gnu" + export MACHINE="${TARGET_ARCH}" + + cd ${S}/quickassist/qat + oe_runmake + oe_runmake 'modules_install' + + cd ${S}/quickassist + oe_runmake + + cd ${S}/quickassist/utilities/adf_ctl + oe_runmake + + cd ${S}/quickassist/utilities/libusdm_drv + oe_runmake + + cd ${S}/quickassist/lookaside/access_layer/src/qat_direct/src/ + oe_runmake + + #build the whole sample code: per_user only + cd ${SAMPLE_CODE_DIR} + oe_runmake 'perf_user' +} + +do_install() { + export MACHINE="${TARGET_ARCH}" + + cd ${S}/quickassist + oe_runmake install + + cd ${S}/quickassist/qat + oe_runmake modules_install + + install -d ${D}${sysconfdir}/udev/rules.d + install -d ${D}${sbindir} + install -d ${D}${sysconfdir}/conf_files + install -d ${D}${prefix}/src/qat + install -d ${D}${includedir} + install -d ${D}${includedir}/dc + install -d ${D}${includedir}/lac + + echo 'KERNEL=="qat_adf_ctl" MODE="0660" GROUP="qat"' > ${D}/etc/udev/rules.d/00-qat.rules + echo 'KERNEL=="qat_dev_processes" MODE="0660" GROUP="qat"' >> ${D}/etc/udev/rules.d/00-qat.rules + echo 'KERNEL=="usdm_drv" MODE="0660" GROUP="qat"' >> ${D}/etc/udev/rules.d/00-qat.rules + echo 'KERNEL=="uio*" MODE="0660" GROUP="qat"' >> ${D}/etc/udev/rules.d/00-qat.rules + echo 'KERNEL=="hugepages" MODE="0660" GROUP="qat"' >> ${D}/etc/udev/rules.d/00-qat.rules + + mkdir -p ${D}${base_libdir} + + install -D -m 0755 ${S}/quickassist/lookaside/access_layer/src/build/linux_2.6/user_space/libqat_s.so ${D}${base_libdir} + install -D -m 0755 ${S}/quickassist/lookaside/access_layer/src/build/linux_2.6/user_space/libqat.a ${D}${base_libdir} + install -D -m 0755 ${S}/quickassist/utilities/osal/src/build/linux_2.6/user_space/libosal_s.so ${D}${base_libdir} + install -D -m 0755 ${S}/quickassist/utilities/osal/src/build/linux_2.6/user_space/libosal.a ${D}${base_libdir} + install -D -m 0755 ${S}/quickassist/lookaside/access_layer/src/qat_direct/src/build/linux_2.6/user_space/libadf_user.a ${D}${base_libdir}/libadf.a + install -D -m 0755 ${S}/quickassist/utilities/libusdm_drv/libusdm_drv_s.so ${D}${base_libdir} + install -D -m 0755 ${S}/quickassist/utilities/libusdm_drv/libusdm_drv.a ${D}${base_libdir} + install -D -m 0750 ${S}/quickassist/utilities/adf_ctl/adf_ctl ${D}${sbindir} + + install -D -m 640 ${S}/quickassist/utilities/adf_ctl/conf_files/*.conf ${D}${sysconfdir}/conf_files + install -D -m 640 ${S}/quickassist/utilities/adf_ctl/conf_files/*.conf.vm ${D}${sysconfdir}/conf_files + + install -m 0755 ${S}/quickassist/qat/fw/qat_d15xx.bin ${D}${nonarch_base_libdir}/firmware + install -m 0755 ${S}/quickassist/qat/fw/qat_d15xx_mmp.bin ${D}${nonarch_base_libdir}/firmware + + install -m 640 ${S}/quickassist/include/*.h ${D}${includedir} + install -m 640 ${S}/quickassist/include/dc/*.h ${D}${includedir}/dc/ + install -m 640 ${S}/quickassist/include/lac/*.h ${D}${includedir}/lac/ + install -m 640 ${S}/quickassist/lookaside/access_layer/include/*.h ${D}${includedir} + install -m 640 ${S}/quickassist/utilities/libusdm_drv/*.h ${D}${includedir} + + install -m 0755 ${S}/quickassist/lookaside/access_layer/src/sample_code/performance/compression/calgary ${D}${nonarch_base_libdir}/firmware + install -m 0755 ${S}/quickassist/lookaside/access_layer/src/sample_code/performance/compression/calgary32 ${D}${nonarch_base_libdir}/firmware + install -m 0755 ${S}/quickassist/lookaside/access_layer/src/sample_code/performance/compression/canterbury ${D}${nonarch_base_libdir}/firmware + + #install qat source + cp ${DL_DIR}/QAT1.7.L.${PV}.tar.gz ${D}${prefix}/src/qat/ +} + +PACKAGES += "${PN}-app" + +FILES_${PN}-dev = "${includedir}/ \ + ${nonarch_base_libdir}/*.a \ + " + +FILES_${PN} += "\ + ${libdir}/ \ + ${nonarch_base_libdir}/firmware \ + ${sysconfdir}/ \ + ${sbindir}/ \ + ${base_libdir}/*.so \ + ${prefix}/src/qat \ + " + +FILES_${PN}-dbg += "${sysconfdir}/init.d/.debug/ \ + " + +FILES_${PN}-app += "${bindir}/* \ + ${prefix}/qat \ + " -- cgit v1.2.3-54-g00ecf