summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSaul Wold <sgw@linux.intel.com>2017-09-26 08:25:37 -0700
committerSaul Wold <sgw@linux.intel.com>2017-09-26 08:25:37 -0700
commita98b71ccadc1458bf3a959e328d5ae814eb7e9b3 (patch)
treeb493f2ce5b78a56a70e76435658e370d44b2eab8
downloadmeta-intel-qat-a98b71ccadc1458bf3a959e328d5ae814eb7e9b3.tar.gz
Initial commit from meta-intel 2f1bcac3fb3b42602f689fb4a1092aa5f4cf0c8a
-rw-r--r--CHANGELOG43
-rw-r--r--COPYING.MIT17
-rw-r--r--LICENSE5
-rw-r--r--MAINTAINERS36
-rw-r--r--README481
-rw-r--r--README.sources17
-rw-r--r--classes/rmc-boot.bbclass17
-rw-r--r--classes/rmc-db.bbclass92
-rw-r--r--classes/uefi-comboapp.bbclass151
-rw-r--r--classes/uefi-sign.bbclass50
-rwxr-xr-xcommon/custom-licenses/BSD_LMS30
-rw-r--r--common/custom-licenses/Intel-Microcode-License123
-rw-r--r--common/recipes-bsp/amt/files/atnetworktool-printf-fix.patch20
-rw-r--r--common/recipes-bsp/amt/files/readlink-declaration.patch18
-rw-r--r--common/recipes-bsp/amt/lms/0001-Include-sys-select.h-for-fd_set.patch28
-rw-r--r--common/recipes-bsp/amt/lms/0001-Protocol.cpp-Add-whitespace-for-gcc6-compile-error.patch31
-rw-r--r--common/recipes-bsp/amt/lms/0002-Use-proper-netinet-in.h-API.patch31
-rw-r--r--common/recipes-bsp/amt/lms/0003-Fix-device-file-referance-to-dev-mei0-remove-select.patch91
-rw-r--r--common/recipes-bsp/amt/lms/0004-Intel-AMT-ME-real-time-notification-infra.patch2647
-rw-r--r--common/recipes-bsp/amt/lms7_7.1.20.bb58
-rw-r--r--common/recipes-bsp/amt/lms8_8.0.0-7.bb46
-rw-r--r--common/recipes-bsp/efilinux/efilinux/0001-Disable-address-of-packed-member-warning.patch33
-rw-r--r--common/recipes-bsp/efilinux/efilinux/0002-initialize-char-pointers.patch33
-rw-r--r--common/recipes-bsp/efilinux/efilinux_1.1.bb38
-rw-r--r--common/recipes-bsp/formfactor/formfactor/machconfig39
-rw-r--r--common/recipes-bsp/formfactor/formfactor_0.0.bbappend1
-rw-r--r--common/recipes-bsp/gma500-gfx-check/gma500-gfx-check/gma500-gfx-check.conf2
-rw-r--r--common/recipes-bsp/gma500-gfx-check/gma500-gfx-check/gma500-gfx-check.sh15
-rw-r--r--common/recipes-bsp/gma500-gfx-check/gma500-gfx-check_1.0.bb18
-rw-r--r--common/recipes-bsp/rmc/boards/Galileo2/BOOTENTRY.CONFIG3
-rw-r--r--common/recipes-bsp/rmc/boards/Galileo2/boot.conf4
-rwxr-xr-xcommon/recipes-bsp/rmc/boards/Galileo2/gallieo2.fpbin0 -> 109 bytes
-rw-r--r--common/recipes-bsp/rmc/boards/Galileo2/install.conf4
-rw-r--r--common/recipes-bsp/rmc/boards/MinnowboardTurbot/KBOOTPARAM1
-rw-r--r--common/recipes-bsp/rmc/boards/MinnowboardTurbot/minnowboardturbot.fpbin0 -> 154 bytes
-rw-r--r--common/recipes-bsp/rmc/boards/NUC5i5RYB/BOOTENTRY.CONFIG2
-rw-r--r--common/recipes-bsp/rmc/boards/NUC5i5RYB/INSTALLER.CONFIG2
-rw-r--r--common/recipes-bsp/rmc/boards/NUC5i5RYB/POSTINSTALL.sh2
-rw-r--r--common/recipes-bsp/rmc/boards/NUC5i5RYB/boot.conf4
-rw-r--r--common/recipes-bsp/rmc/boards/NUC5i5RYB/install.conf4
-rw-r--r--common/recipes-bsp/rmc/boards/NUC5i5RYB/nuc5i5.fpbin0 -> 149 bytes
-rw-r--r--common/recipes-bsp/rmc/boards/T100-32bit/BOOTENTRY.CONFIG2
-rw-r--r--common/recipes-bsp/rmc/boards/T100-32bit/T100-32bit.fpbin0 -> 116 bytes
-rw-r--r--common/recipes-bsp/rmc/boards/T100-32bit/boot.conf4
-rw-r--r--common/recipes-bsp/rmc/boards/T100-32bit/install.conf4
-rw-r--r--common/recipes-bsp/rmc/boards/broxton-m/BOOTENTRY.CONFIG2
-rw-r--r--common/recipes-bsp/rmc/boards/broxton-m/INSTALLER.CONFIG3
-rw-r--r--common/recipes-bsp/rmc/boards/broxton-m/KBOOTPARAM1
-rw-r--r--common/recipes-bsp/rmc/boards/broxton-m/POSTINSTALL.sh2
-rwxr-xr-xcommon/recipes-bsp/rmc/boards/broxton-m/bm-1F1.fpbin0 -> 83 bytes
-rwxr-xr-xcommon/recipes-bsp/rmc/boards/broxton-m/bm.fpbin0 -> 83 bytes
-rw-r--r--common/recipes-bsp/rmc/boards/broxton-m/boot.conf4
-rw-r--r--common/recipes-bsp/rmc/boards/broxton-m/install.conf4
-rw-r--r--common/recipes-bsp/rmc/boards/broxton-m/joule-1F1.fpbin0 -> 122 bytes
-rw-r--r--common/recipes-bsp/rmc/boards/minnowmax/BOOTENTRY.CONFIG2
-rw-r--r--common/recipes-bsp/rmc/boards/minnowmax/boot.conf4
-rw-r--r--common/recipes-bsp/rmc/boards/minnowmax/install.conf4
-rw-r--r--common/recipes-bsp/rmc/boards/minnowmax/minnowmax.fpbin0 -> 143 bytes
-rw-r--r--common/recipes-bsp/rmc/boards/minnowmaxB3/BOOTENTRY.CONFIG2
-rw-r--r--common/recipes-bsp/rmc/boards/minnowmaxB3/boot.conf4
-rw-r--r--common/recipes-bsp/rmc/boards/minnowmaxB3/install.conf4
-rw-r--r--common/recipes-bsp/rmc/boards/minnowmaxB3/minnowmaxB3.fpbin0 -> 148 bytes
-rw-r--r--common/recipes-bsp/rmc/boards/mohonpeak/BOOTENTRY.CONFIG2
-rw-r--r--common/recipes-bsp/rmc/boards/mohonpeak/INSTALLER.CONFIG3
-rw-r--r--common/recipes-bsp/rmc/boards/mohonpeak/KBOOTPARAM1
-rw-r--r--common/recipes-bsp/rmc/boards/mohonpeak/POSTINSTALL.sh3
-rw-r--r--common/recipes-bsp/rmc/boards/mohonpeak/boot.conf4
-rw-r--r--common/recipes-bsp/rmc/boards/mohonpeak/install.conf4
-rw-r--r--common/recipes-bsp/rmc/boards/mohonpeak/mohonpeak.fpbin0 -> 121 bytes
-rw-r--r--common/recipes-bsp/rmc/boards/nucgen6/BOOTENTRY.CONFIG2
-rw-r--r--common/recipes-bsp/rmc/boards/nucgen6/INSTALLER.CONFIG6
-rw-r--r--common/recipes-bsp/rmc/boards/nucgen6/KBOOTPARAM1
-rw-r--r--common/recipes-bsp/rmc/boards/nucgen6/POSTINSTALL.sh7
-rw-r--r--common/recipes-bsp/rmc/boards/nucgen6/boot.conf4
-rw-r--r--common/recipes-bsp/rmc/boards/nucgen6/install.conf4
-rw-r--r--common/recipes-bsp/rmc/boards/nucgen6/mylib.conf7
-rw-r--r--common/recipes-bsp/rmc/boards/nucgen6/nuc6.fpbin0 -> 149 bytes
-rw-r--r--common/recipes-bsp/rmc/boards/qemu-2.6/KBOOTPARAM1
-rw-r--r--common/recipes-bsp/rmc/boards/qemu-2.6/qemu-2.6.fpbin0 -> 113 bytes
-rw-r--r--common/recipes-bsp/rmc/boards/qemu-2.8/KBOOTPARAM1
-rw-r--r--common/recipes-bsp/rmc/boards/qemu-2.8/qemu-2.8.fpbin0 -> 113 bytes
-rw-r--r--common/recipes-bsp/rmc/rmc-db.bb49
-rw-r--r--common/recipes-bsp/rmc/rmc-efi.bb40
-rw-r--r--common/recipes-bsp/rmc/rmc.bb46
-rw-r--r--common/recipes-bsp/systemd-boot/systemd-boot/0001-efi-boot.c-workaround-for-Joule-BIOS-hang.patch31
-rw-r--r--common/recipes-bsp/systemd-boot/systemd-boot/0001-sd-boot-Link-RMC-library-into-bootloader-and-stub.patch39
-rw-r--r--common/recipes-bsp/systemd-boot/systemd-boot/0001-sd-boot-stub-check-LoadOptions-contains-data.patch42
-rw-r--r--common/recipes-bsp/systemd-boot/systemd-boot/0002-sd-boot-Load-board-specific-boot-entries-from-RMC-da.patch250
-rw-r--r--common/recipes-bsp/systemd-boot/systemd-boot/0003-sd-boot-Support-global-kernel-command-line-fragment.patch66
-rw-r--r--common/recipes-bsp/systemd-boot/systemd-boot/0004-sd-boot-Support-global-kernel-command-line-fragment-in-EFI-stub.patch81
-rw-r--r--common/recipes-bsp/systemd-boot/systemd-boot/rmc-boot.inc12
-rw-r--r--common/recipes-bsp/systemd-boot/systemd-boot/systemd-boot.inc7
-rw-r--r--common/recipes-bsp/systemd-boot/systemd-boot_%.bbappend23
-rw-r--r--common/recipes-bsp/thermald/thermald_1.6.bb33
-rw-r--r--common/recipes-core/images/core-image-minimal-initramfs.bbappend6
-rw-r--r--common/recipes-core/images/core-image-tiny.bb37
-rw-r--r--common/recipes-core/initrdscripts/files/intel-x86-common/init-install-efi.sh342
-rw-r--r--common/recipes-core/initrdscripts/initramfs-live-install-efi_%.bbappend2
-rw-r--r--common/recipes-core/microcode/intel-microcode_20170707.bb66
-rw-r--r--common/recipes-core/microcode/iucode-tool/0001-Makefile.am-Add-arg-parse-library-for-MUSL-support.patch29
-rw-r--r--common/recipes-core/microcode/iucode-tool_2.1.2.bb33
-rw-r--r--common/recipes-core/ovmf/files/0001-ovmf-RefkitTestCA-TEST-UEFI-SecureBoot.patch105
-rw-r--r--common/recipes-core/ovmf/ovmf-shell-image-enrollkeys.bb13
-rw-r--r--common/recipes-core/ovmf/ovmf_%.bbappend6
-rw-r--r--common/recipes-graphics/intel-gpu-tools/intel-gpu-tools_1.19.bb40
-rw-r--r--common/recipes-graphics/xorg-driver/xf86-video-ast_1.1.5.bb12
-rw-r--r--common/recipes-graphics/xorg-driver/xf86-video-mga/checkfile.patch68
-rw-r--r--common/recipes-graphics/xorg-driver/xf86-video-mga_1.6.5.bb23
-rw-r--r--common/recipes-kernel/cryptodev/cryptodev-module/0001-zc-Force-4.10-get_user_pages_remote-API.patch26
-rw-r--r--common/recipes-kernel/cryptodev/cryptodev-module_%.bbappend9
-rw-r--r--common/recipes-kernel/intel-ethernet/ixgbe.bb43
-rw-r--r--common/recipes-kernel/intel-ethernet/ixgbe/0001-ixgbe-src-Makefile-change-make-install-to-make.patch40
-rw-r--r--common/recipes-kernel/intel-ethernet/ixgbevf.bb44
-rw-r--r--common/recipes-kernel/intel-ethernet/ixgbevf/0001-ixgbevf-src-Makefile-change-make-install-to-make.patch32
-rw-r--r--common/recipes-kernel/intel-ethernet/ixgbevf/0002-ixgbevf_common.patch23
-rw-r--r--common/recipes-kernel/iwlwifi/backport-iwlwifi/0001-Makefile.real-skip-host-install-scripts.patch36
-rw-r--r--common/recipes-kernel/iwlwifi/backport-iwlwifi/iwlwifi.conf12
-rw-r--r--common/recipes-kernel/iwlwifi/backport-iwlwifi_git.bb42
-rw-r--r--common/recipes-kernel/linux-firmware/linux-firmware_%.bbappend23
-rw-r--r--common/recipes-kernel/linux/linux-intel-rt_4.9.bb17
-rw-r--r--common/recipes-kernel/linux/linux-intel.inc43
-rw-r--r--common/recipes-kernel/linux/linux-intel/disable_skylake_sound.cfg14
-rw-r--r--common/recipes-kernel/linux/linux-intel_4.9.bb13
-rw-r--r--common/recipes-kernel/linux/linux-yocto-dev.bbappend26
-rw-r--r--common/recipes-kernel/linux/linux-yocto-rt_4.10.bbappend13
-rw-r--r--common/recipes-kernel/linux/linux-yocto-rt_4.12.bbappend13
-rw-r--r--common/recipes-kernel/linux/linux-yocto-rt_4.4.bbappend33
-rw-r--r--common/recipes-kernel/linux/linux-yocto-rt_4.9.bbappend13
-rw-r--r--common/recipes-kernel/linux/linux-yocto-tiny_4.10.bbappend19
-rw-r--r--common/recipes-kernel/linux/linux-yocto-tiny_4.12.bbappend19
-rw-r--r--common/recipes-kernel/linux/linux-yocto-tiny_4.4.bbappend33
-rw-r--r--common/recipes-kernel/linux/linux-yocto-tiny_4.9.bbappend31
-rw-r--r--common/recipes-kernel/linux/linux-yocto_%.bbappend4
-rw-r--r--common/recipes-kernel/linux/linux-yocto_4.10.bbappend21
-rw-r--r--common/recipes-kernel/linux/linux-yocto_4.12.bbappend21
-rw-r--r--common/recipes-kernel/linux/linux-yocto_4.4.bbappend43
-rw-r--r--common/recipes-kernel/linux/linux-yocto_4.9.bbappend21
-rw-r--r--common/recipes-kernel/lttng/lttng-modules/0002-lttng-modules-PKT-4.9-yocto-build-failed.patch38
-rw-r--r--common/recipes-kernel/lttng/lttng-modules_%.bbappend7
-rw-r--r--common/recipes-multimedia/libva/libva-intel-driver_1.8.3.bb35
-rw-r--r--common/recipes-multimedia/libva/va-intel.bb32
-rw-r--r--common/recipes-multimedia/libyami/libyami-utils/0001-Fix-build-with-clang.patch99
-rw-r--r--common/recipes-multimedia/libyami/libyami-utils_1.2.0.bb31
-rw-r--r--common/recipes-multimedia/libyami/libyami/0001-bitWriter.cpp-Delete-unused-CACHEBYTES.patch27
-rw-r--r--common/recipes-multimedia/libyami/libyami/0002-typecast-index-from-size_t-to-int.patch42
-rw-r--r--common/recipes-multimedia/libyami/libyami/0003-Add-Wno-invalid-offsetof-to-compiler-commandline.patch29
-rw-r--r--common/recipes-multimedia/libyami/libyami/0004-Typecast-POWER32SUB2-to-uint8_t.patch33
-rw-r--r--common/recipes-multimedia/libyami/libyami/0005-move-c-definitions-out-of-extern-C-block.patch130
-rw-r--r--common/recipes-multimedia/libyami/libyami/0006-Avoid-namespace-conflicts-by-adding-explicit-using-n.patch41
-rw-r--r--common/recipes-multimedia/libyami/libyami/0007-Delete-unused-variables.patch36
-rw-r--r--common/recipes-multimedia/libyami/libyami/0008-NalUnit-is-declared-in-different-namespace.patch31
-rw-r--r--common/recipes-multimedia/libyami/libyami/0009-Fix-clang-warnings.patch37
-rw-r--r--common/recipes-multimedia/libyami/libyami_1.2.0.bb34
-rw-r--r--common/recipes-rt/images/core-image-rt-sdk.bb20
-rw-r--r--common/recipes-rt/images/core-image-rt.bb17
-rw-r--r--common/recipes-selftest/images/files/incorrect.crt19
-rw-r--r--common/recipes-selftest/images/files/incorrect.key27
-rw-r--r--common/recipes-selftest/images/files/refkit-db.crt18
-rw-r--r--common/recipes-selftest/images/files/refkit-db.key28
-rw-r--r--common/recipes-selftest/images/secureboot-selftest-image-signed.bb6
-rw-r--r--common/recipes-selftest/images/secureboot-selftest-image-unsigned.bb20
-rw-r--r--common/recipes-support/sbsigntool/sbsigntool-native_git.bb77
-rw-r--r--conf/include/maintainers.inc23
-rw-r--r--conf/layer.conf24
-rw-r--r--conf/machine/include/intel-common-pkgarch.inc15
-rw-r--r--conf/machine/include/intel-core2-32-common.inc7
-rw-r--r--conf/machine/include/intel-corei7-64-common.inc7
-rw-r--r--conf/machine/include/intel-quark-common.inc12
-rw-r--r--conf/machine/include/meta-intel.inc52
-rw-r--r--conf/machine/include/qemu-intel.inc19
-rw-r--r--conf/machine/include/qemuboot-intel.inc19
-rw-r--r--conf/machine/intel-core2-32.conf35
-rw-r--r--conf/machine/intel-corei7-64.conf46
-rw-r--r--conf/machine/intel-quark.conf33
-rw-r--r--documentation/rmc/README382
-rw-r--r--lib/oeqa/selftest/cases/secureboot.py176
-rw-r--r--meta-dpdk/COPYING.MIT17
-rw-r--r--meta-dpdk/LICENSE5
-rw-r--r--meta-dpdk/README85
-rw-r--r--meta-dpdk/conf/include/maintainers.inc4
-rw-r--r--meta-dpdk/conf/layer.conf19
-rw-r--r--meta-dpdk/recipes-extended/dpdk-dev-libibverbs/dpdk-dev-libibverbs_1.2.1-3.4-2.0.0.0.bb27
-rw-r--r--meta-dpdk/recipes-extended/dpdk-dev-libibverbs/files/0001-Fix-build-with-clang.patch32
-rw-r--r--meta-dpdk/recipes-extended/dpdk-dev-libibverbs/files/0002-typecast-enum-to-int-before-comparison.patch115
-rw-r--r--meta-dpdk/recipes-extended/dpdk-dev-libibverbs/files/0003-initialize-use_config_mr.patch31
-rw-r--r--meta-dpdk/recipes-extended/dpdk-dev-libibverbs/files/0004-Fix-clang-warnings.patch56
-rw-r--r--meta-dpdk/recipes-extended/dpdk-dev-libibverbs/files/init_c.patch23
-rw-r--r--meta-dpdk/recipes-extended/dpdk/dpdk.inc146
-rw-r--r--meta-dpdk/recipes-extended/dpdk/dpdk/0001-examples-Fix-maybe-uninitialized-warning.patch44
-rw-r--r--meta-dpdk/recipes-extended/dpdk/dpdk/dpdk-16.04-Fix-for-misleading-indentation-error.patch56
-rw-r--r--meta-dpdk/recipes-extended/dpdk/dpdk/dpdk-16.04-add-RTE_KERNELDIR_OUT-to-split-kernel-bu.patch52
-rw-r--r--meta-dpdk/recipes-extended/dpdk/dpdk/dpdk-16.04-dpdk-enable-ip_fragmentation-in-common_base-config.patch33
-rw-r--r--meta-dpdk/recipes-extended/dpdk/dpdk/dpdk-16.04-dpdk-fix-compilation-with-dynamic-libs.patch30
-rw-r--r--meta-dpdk/recipes-extended/dpdk/dpdk/dpdk-16.07-add-sysroot-option-within-app-makefile.patch32
-rw-r--r--meta-dpdk/recipes-extended/dpdk/dpdk/dpdk-16.07-dpdk-fix-for-parellel-make-issue.patch42
-rw-r--r--meta-dpdk/recipes-extended/dpdk/dpdk/dpdk-17.02-dpdk-fix-installation-warning-and-issue.patch81
-rw-r--r--meta-dpdk/recipes-extended/dpdk/dpdk_17.05.bb19
-rw-r--r--meta-qat/COPYING.MIT17
-rw-r--r--meta-qat/LICENSE5
-rw-r--r--meta-qat/README85
-rw-r--r--meta-qat/conf/include/maintainers.inc5
-rw-r--r--meta-qat/conf/layer.conf20
-rw-r--r--meta-qat/recipes-extended/openssl-qat/openssl-qat.inc125
-rw-r--r--meta-qat/recipes-extended/openssl-qat/openssl-qat/0001-Use_sched_yield_api.patch47
-rw-r--r--meta-qat/recipes-extended/openssl-qat/openssl-qat/openssl-qat_0.4.9-009-openssl_qat-add-openssl-async-specific-symbols.patch113
-rw-r--r--meta-qat/recipes-extended/openssl-qat/openssl-qat/openssl-qat_0.4.9-009-openssl_qat-add-version-script.patch4695
-rw-r--r--meta-qat/recipes-extended/openssl-qat/openssl-qat/openssl_qat-build-qat_mem-ko-against-yocto-kernel.patch62
-rw-r--r--meta-qat/recipes-extended/openssl-qat/openssl-qat/openssl_qat-environment-variables-to-have-precedence.patch59
-rw-r--r--meta-qat/recipes-extended/openssl-qat/openssl-qat/openssl_qat-install-engines-in-libdir-ssl.patch72
-rw-r--r--meta-qat/recipes-extended/openssl-qat/openssl-qat/openssl_qat-pass-oe_ldflags-to-linker.patch40
-rw-r--r--meta-qat/recipes-extended/openssl-qat/openssl-qat/openssl_qat-remove-redundant-rpaths.patch31
-rw-r--r--meta-qat/recipes-extended/openssl-qat/openssl-qat_0.4.9-009.bb14
-rw-r--r--meta-qat/recipes-extended/qat/qat16.inc123
-rw-r--r--meta-qat/recipes-extended/qat/qat16/0001-OsalServices-Only-use-bits-time-with-GLIBC.patch27
-rw-r--r--meta-qat/recipes-extended/qat/qat16/qat16_2.3.0-34-make-sure-CFLAGS-are-correct.patch30
-rw-r--r--meta-qat/recipes-extended/qat/qat16/qat16_2.3.0-34-qat-fix-for-cross-compilation-issue.patch40
-rw-r--r--meta-qat/recipes-extended/qat/qat16/qat16_2.3.0-34-qat-remove-local-path-from-makefile.patch31
-rw-r--r--meta-qat/recipes-extended/qat/qat16/qat16_2.5.0-80-qat-Added-include-dir-path.patch30
-rw-r--r--meta-qat/recipes-extended/qat/qat16/qat16_2.5.0-80-qat-add-install-target-to-makefiles.patch387
-rw-r--r--meta-qat/recipes-extended/qat/qat16/qat16_2.5.0-80-qat-change-in-return-type-of-func-in-kernel-v4.4.patch40
-rw-r--r--meta-qat/recipes-extended/qat/qat16/qat16_2.6.0-65-qat-add-install-target-to-makefiles.patch353
-rw-r--r--meta-qat/recipes-extended/qat/qat16/qat16_2.6.0-65-qat-override-CC-LD-AR-only-when-it-is-not-define.patch35
-rw-r--r--meta-qat/recipes-extended/qat/qat16/use-CC-for-LD.patch17
-rw-r--r--meta-qat/recipes-extended/qat/qat16_2.5.0-80.bb12
-rw-r--r--meta-qat/recipes-extended/qat/qat16_2.6.0-65.bb16
-rw-r--r--meta-qat/recipes-extended/zlib-qat/zlib-qat/0001-qat_zlib.h-Add-pthread.h-for-MUSL.patch29
-rw-r--r--meta-qat/recipes-extended/zlib-qat/zlib-qat/zlib-qat-0.4.7-002-qat_mem-build-qat_mem-ko-against-yocto-kernel-src.patch51
-rw-r--r--meta-qat/recipes-extended/zlib-qat/zlib-qat/zlib-qat-0.4.7-002-zlib-Remove-rpaths-from-makefile.patch52
-rw-r--r--meta-qat/recipes-extended/zlib-qat/zlib-qat/zlib-qat-0.4.7-002-zlib-qat-add-a-install-target-to-makefile.patch46
-rw-r--r--meta-qat/recipes-extended/zlib-qat/zlib-qat_0.4.7-002.bb133
-rw-r--r--meta-tlk/COPYING.MIT17
-rw-r--r--meta-tlk/README9
-rw-r--r--meta-tlk/conf/layer.conf13
-rw-r--r--meta-tlk/recipes-core/base-files/base-files_3.0.14.bbappend1
-rw-r--r--meta-tlk/recipes-core/base-files/files/motd7
-rw-r--r--meta-tlk/recipes-core/psplash/files/psplash-tlk.pngbin0 -> 42295 bytes
-rw-r--r--meta-tlk/recipes-core/psplash/psplash_git.bbappend6
-rw-r--r--meta-tlk/recipes-kernel/linux/files/time-limited-kernel.cfg3
-rw-r--r--meta-tlk/recipes-kernel/linux/files/uptime-allow-the-optional-limiting-of-kernel-runtime.patch251
-rw-r--r--meta-tlk/recipes-kernel/linux/linux-intel_%.bbappend3
-rw-r--r--meta-tlk/recipes-kernel/linux/linux-yocto_%.bbappend2
-rw-r--r--wic/core-image-tiny.wks.in14
-rw-r--r--wic/galileodisk-sd.wks9
-rw-r--r--wic/galileodisk-usb.wks9
-rw-r--r--wic/generic-bootdisk.wks.in6
-rw-r--r--wic/mktinygalileodisk.wks7
246 files changed, 16473 insertions, 0 deletions
diff --git a/CHANGELOG b/CHANGELOG
new file mode 100644
index 0000000..9b38eb5
--- /dev/null
+++ b/CHANGELOG
@@ -0,0 +1,43 @@
1This file will only list major changes that occur within a release.
2For a full list of changes, view the git log of the repository.
3
4Pyro Release 5/2017
5===================
6
7Changed default kernel provider from linux-yocto to linux-intel.
8----------------------------------------------------------------
9Linux-intel is an Intel(R)-maintained kernel based on the latest stable
10branch, along with backports from upstream to better support Intel(R)
11hardware. The intel-linux kernel also has a branch with the preempt-rt
12patches applied, providing a preempt-rt kernel with no additional work.
13
14Added QEMU support.
15-------------------
16We now build several virtio drivers into the kernel by default, and
17have qemuboot.conf files for intel-corei7-64 and intel-core2-32
18targets. This allows one to do basic testing on meta-intel images
19without having to use hardware. The virtio drivers are added via
20KERNEL_FEATURES_INTEL_COMMON. This prevents them from being added to
21custom kernels by default. They can be removed by adding the
22following to a conf or kernel bbappend file:
23 KERNEL_FEATURES_INTEL_COMMON_remove = “cfg/virtio.sccâ€
24OVMF firmware is also built and can be used in order to emulate a UEFI
25environment. A full runqemu command line for intel-corei7-64 could look
26like this:
27 runqemu core-image-minimal intel-corei7-64 wic ovmf
28
29Musl support
30------------
31Meta-intel is now compatible with the musl C library. You can specify musl
32As your C library by adding the following to your local.conf:
33 TCLIBC = “muslâ€
34Note: there is a known failure with DPDK.
35
36X32 support
37-----------
38The meta-intel layer can now build with the x32 tune settings in a multi-lib
39setting, it will not work in as the primary MACHINE tune as the bootloader needs
40to be built as a 64bit binary. The setup for this would be as follows:
41 require conf/multilib.conf
42 MULTILIBS = "multilib:libx32
43 DEFAULTTUNE_virtclass-multilib-libx32 = "corei7-64-x32"
diff --git a/COPYING.MIT b/COPYING.MIT
new file mode 100644
index 0000000..fb950dc
--- /dev/null
+++ b/COPYING.MIT
@@ -0,0 +1,17 @@
1Permission is hereby granted, free of charge, to any person obtaining a copy
2of this software and associated documentation files (the "Software"), to deal
3in the Software without restriction, including without limitation the rights
4to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
5copies of the Software, and to permit persons to whom the Software is
6furnished to do so, subject to the following conditions:
7
8The above copyright notice and this permission notice shall be included in
9all copies or substantial portions of the Software.
10
11THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
12IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
13FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
14AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
15LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
16OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
17THE SOFTWARE.
diff --git a/LICENSE b/LICENSE
new file mode 100644
index 0000000..e57d3b9
--- /dev/null
+++ b/LICENSE
@@ -0,0 +1,5 @@
1All metadata files (including, but not limited to bb, bbappend,
2bbclass, inc and conf files) are MIT licensed unless otherwise stated.
3Source code included in tree for individual recipes is under the
4LICENSE stated in the associated recipe (.bb file) unless otherwise
5stated.
diff --git a/MAINTAINERS b/MAINTAINERS
new file mode 100644
index 0000000..443041d
--- /dev/null
+++ b/MAINTAINERS
@@ -0,0 +1,36 @@
1This file contains a list of BSP maintainers for the BSPs contained in
2the meta-intel repository.
3
4The purpose of this file is to provide contact information for
5specific BSPs and other code contained within meta-intel. You should
6address questions and patches for a particular BSP or other code to
7the appropriate maintainer listed in this file, cc'ing the meta-intel
8mailing list. This ensures that your question or patch will be
9addressed by the appropriate person, and that it will be seen by other
10users who may be facing similar problems or questions.
11
12Please see the top-level README file for guidelines relating to the
13details of submitting patches, reporting problems, or asking questions
14about any of the BSPs or other recipes contained within meta-intel.
15
16Descriptions of section entries:
17
18 M: Mail patches to: FullName <address@domain>
19 F: Files and directories with wildcard patterns.
20 A trailing slash includes all files and subdirectory files.
21 F: common/ all files in and below common
22 F: common/* all files in common, but not below
23 One pattern per line. Multiple F: lines acceptable.
24
25Please keep this list in alphabetical order.
26
27Maintainers List (try to look for most precise areas first)
28
29 -----------------------------------
30COMMON
31M: Saul Wold <sgw@linux.intel.com>
32F: common/
33
34TLK
35M: Saul Wold <sgw@linux.intel.com>
36F: meta-tlk/
diff --git a/README b/README
new file mode 100644
index 0000000..d16f692
--- /dev/null
+++ b/README
@@ -0,0 +1,481 @@
1meta-intel
2==========
3
4This README file contains information on building and booting
5meta-intel BSP layers. Please see the corresponding sections below
6for details.
7
8
9Yocto Project Compatible
10========================
11
12The BSPs contained in this layer are compatible with the Yocto Project
13as per the requirements listed here:
14
15 https://www.yoctoproject.org/webform/yocto-project-compatible-registration
16
17
18Dependencies
19============
20
21This layer depends on:
22
23 URI: git://git.openembedded.org/bitbake
24 branch: 1.34
25
26 URI: git://git.openembedded.org/openembedded-core
27 layers: meta
28 branch: rocko
29
30
31Table of Contents
32=================
33
34 I. Overview
35 II. Building and booting meta-intel BSP layers
36 a. Building the intel-common and quark BSP layers
37 b. Booting the intel-common BSP images
38 c. Booting the intel-quark BSP image on a Galileo board
39 III. Technical Miscellany
40 Benefits of using meta-intel
41 The intel-common kernel package architecture
42 Intel-specific machine features
43 IV. Tested Hardware
44 V. Guidelines for submitting patches
45
46
47I. Overview
48===========
49
50This is the location for Intel-maintained BSPs.
51
52For details on the intel-common and intel-quark BSPs, see the
53information below.
54
55For all others, please see the README files contained in the
56individual BSP layers for BSP-specific information.
57
58If you have problems with or questions about a particular BSP, please
59contact the maintainer listed in the MAINTAINERS file directly (cc:ing
60the Yocto mailing list puts it in the archive and helps other people
61who might have the same questions in the future), but please try to do
62the following first:
63
64 - look in the Yocto Project Bugzilla
65 (http://bugzilla.yoctoproject.org/) to see if a problem has
66 already been reported
67
68 - look through recent entries of the meta-intel
69 (https://lists.yoctoproject.org/pipermail/meta-intel/) and Yocto
70 (https://lists.yoctoproject.org/pipermail/yocto/) mailing list
71 archives to see if other people have run into similar problems or
72 had similar questions answered.
73
74If you believe you have encountered a bug, you can open a new bug and
75enter the details in the Yocto Project Bugzilla
76(http://bugzilla.yoctoproject.org/). If you're relatively certain
77that it's a bug against the BSP itself, please use the 'Yocto Project
78Components: BSPs | meta-intel' category for the bug; otherwise, please
79submit the bug against the most likely category for the problem - if
80you're wrong, it's not a big deal and the bug will be recategorized
81upon triage.
82
83
84II. Building and booting meta-intel BSP layers
85==============================================
86
87The following sections contain information on building and booting the
88BSPs contained in the meta-intel layer.
89
90Note that these instructions specifically cover the intel-common and
91quark BSPs, which may or may not be applicable to other BSPs contained
92in this layer - if a given BSP contains its own README, that version
93should be used instead, and these instructions can be ignored.
94
95a. Building the intel-common and quark BSP layers
96-------------------------------------------------
97
98In order to build an image with BSP support for a given release, you
99need to download the corresponding BSP tarball from the 'Board Support
100Package (BSP) Downloads' page of the Yocto Project website (or
101equivalently, check out the appropriate branch from the meta-intel git
102repository, see below). For the intel-common and quark BSPs, those
103tarballs would correspond to the following choices in the BSP
104downloads section:
105
106 - Intel-core2-32 Intel® Common Core BSP (Intel-core2-32)
107 - Intel-core2-32 Intel® Common Core BSP (Intel-quark)
108 - Intel-corei7-64 Intel® Common Core BSP (Intel-corei7-64)
109
110The intel-* BSPs, also known as the intel-common BSPs, provide a few
111carefully selected tune options and generic hardware support to cover
112the majority of current Intel CPUs and devices. The naming follows the
113convention of intel-<TUNE>-<BITS>, where TUNE is the gcc cpu-type
114(used with mtune and march typically) and BITS is either 32 bit or 64
115bit.
116
117Having done that, and assuming you extracted the BSP tarball contents
118at the top-level of your yocto build tree, you can build a BSP image
119by adding the location of the meta-intel layer to bblayers.conf e.g.:
120
121 yocto/meta-intel \
122
123To enable a particular machine, you need to add a MACHINE line naming
124the BSP to the local.conf file:
125
126 MACHINE ?= "xxx"
127
128where 'xxx' is replaced by one of the following BSP names:
129
130 - intel-core2-32
131
132 This BSP is optimized for the Core2 family of CPUs as well as all
133 Atom CPUs prior to the Silvermont core.
134
135 - intel-corei7-64
136
137 This BSP is optimized for Nehalem and later Core and Xeon CPUs as
138 well as Silvermont and later Atom CPUs, such as the Baytrail SoCs.
139
140 - intel-quark
141
142 This BSP is optimized for Quark-based systems.
143
144You should then be able to build an image as such:
145
146 $ source oe-init-build-env
147 $ bitbake core-image-sato
148
149At the end of a successful build, you should have an image that
150you can boot from a USB flash drive (see instructions on how to do
151that below, in the section 'Booting the intel-common BSP images').
152
153As an alternative to downloading the BSP tarball, you can also work
154directly from the meta-intel git repository. For each BSP in the
155'meta-intel' repository, there are multiple branches, one
156corresponding to each major release starting with 'laverne' (0.90), in
157addition to the latest code which tracks the current master (note that
158not all BSPs are present in every release). Instead of extracting
159a BSP tarball at the top level of your yocto build tree, you can
160equivalently check out the appropriate branch from the meta-intel
161repository at the same location.
162
163b. Booting the intel-common BSP images
164--------------------------------------
165
166If you downloaded the BSP tarball, you will find bootable images in
167the /binary directory. If you've built your own image, either from
168the downloaded BSP layer or from the meta-intel git repository, you'll
169find the bootable image in the build/tmp/deploy/images/xxx directory,
170where again 'xxx' refers to the machine name used in the build.
171
172The BSP /binary directory or build contains bootable live images,
173which can be used to directly boot Yocto off of a USB flash drive.
174
175Under Linux, insert a USB flash drive. Assuming the USB flash drive
176takes device /dev/sdf, use dd to copy the image to it. For example:
177
178 $ dd if=core-image-sato-intel-corei7-64.wic of=/dev/sdf
179 $ sync
180 $ eject /dev/sdf
181
182This should give you a bootable USB flash device. Insert the device
183into a bootable USB socket on the target, and power on. This should
184result in a system booted to the Sato graphical desktop.
185
186If you want a terminal, use the arrows at the top of the UI to move to
187different pages of available applications, one of which is named
188'Terminal'. Clicking that should give you a root terminal.
189
190If you want to ssh into the system, you can use the root terminal to
191ifconfig the IP address and use that to ssh in. The root password is
192empty, so to log in type 'root' for the user name and hit 'Enter' at
193the Password prompt: and you should be in.
194
195If you find you're getting corrupt images on the USB (it doesn't show
196the syslinux boot: prompt, or the boot: prompt contains strange
197characters), try doing this first:
198
199 $ dd if=/dev/zero of=/dev/sdf bs=1M count=512
200
201c. Booting the intel-quark BSP image on a Galileo board
202-------------------------------------------------------
203
204If you downloaded the BSP tarball, you will find bootable images in
205the /binary directory. If you've built your own image, either from
206the downloaded BSP layer or from the meta-intel git repository, you'll
207find the bootable image in the build/tmp/deploy/images/xxx directory,
208where again 'xxx' refers to the machine name used in the build.
209
210The Galileo board can boot off of either an SD card or USB storage
211media that has a special disk layout. The 'wic' tool can be used to
212create directly bootable images for either of the two formats via the
213following steps. As of meta-intel 6.0-morty-2.2 or newer, wic images are
214created automatically during build time, and the manual use of wic is
215not necessary. By default, the galileodisk-sd wic kickstart file is used,
216which targets SD cards. This can be changed by setting the WKS_FILE to
217something else in local.conf, such as the following:
218
219WKS_FILE = “galileodisk-usbâ€
220
221If your build is successful, a .wic image will be created in the usual
222deploy directory. Write this image to an SD card:
223
224 $ sudo dd if=/path/to/image/image-name.wic of=/dev/your_sd_dev
225 $ sync
226 $ sudo eject /dev/your_sd_dev
227
228Insert the SD card into the Galileo and power on.
229
230The Galileo board can boot from an hddimg formatted USB drive as well,
231but currently only live-boot, and not installation, is supported.
232An image in hddimg format is generated when you build the quark BSP.
233You can follow the procedure in II.b to use dd command to prepare your USB
234drive, then press F7 key during startup to bring up the boot option menu.
235Choose the UEFI USB boot option for the drive to boot the system. If the board
236already passes this stage and show a grub boot menu, you can press 'c'
237key and then type "quit" in grub shell. The board should come back to
238the UEFI boot menu.
239
240III. Technical Miscellany
241=========================
242
243Benefits of using meta-intel
244----------------------------
245
246Using meta-intel has the following benefits over a generic BSP:
247
248tune flags
249++++++++++
250intel-* MACHINEs each have different compilation flags appropriate for their
251targeted hardware sets. intel-corei7-64 has tune flags appropriate for modern
25264-bit Intel Core i microarchitecture, and includes instruction sets up to
253SSE4.2. intel-core2-32 has tune flags appropriate for legacy 32-bit Intel Core2
254microarchitecture, and includes instruction sets up to SSE3. intel-quark
255contains a subset of the intel-core2-32 instruction set, as quark does not
256support prefix locking instructions.
257
258linux-intel kernel
259++++++++++++++++++
260The linux-intel kernel is an initiative to bring better Intel(R) hardware
261support to the current LTS linux kernel. It contains a base LTS kernel with
262additional backports from upstream Intel drivers. In addition, a default kernel
263config containing most features found on Intel boards is supplied via the
264yocto-kernel-cache.
265
266graphics stack
267++++++++++++++
268Meta-intel provides the latest Intel Graphics Linux Stack drivers to support
269Intel hardware as defined by the https://01.org/linuxgraphics.
270
271Other software
272++++++++++++++
273 * intel ucode - provides the latest microcode updates for Intel processors
274
275 * thermald - which proactively controls thermal, using P-states, T-states, and
276the Intel power clamp driver.
277(https://01.org/linux-thermal-daemon/documentation/introduction-thermal-daemon)
278
279 * RMC - Runtime Machine Configuration, which allows the bootload to determine
280board and CPU information in order to set specific kernel command line
281information at startup.
282
283The intel-common kernel package architecture
284--------------------------------------------
285
286These BSPs use what we call the intel-common Linux kernel package
287architecture. This includes core2-32-intel-common and
288corei7-64-intel-common. These kernel packages can also be used by any
289of the BSPs in meta-intel that choose to include the
290intel-common-pkgarch.inc file.
291
292To minimize the proliferation of vendor trees, reduce the sources we
293must support, and consolidate QA efforts, all BSP maintainers are
294encouraged to make use of the intel-common Linux kernel package
295architecture.
296
297Intel-specific machine features
298-------------------------------
299
300The meta-intel layer makes some additional machine features available
301to BSPs. These machine features can be used in a BSP layer in the
302same way that machine features are used in other layers based on
303oe-core, via the MACHINE_FEATURES variable.
304
305Requirements
306++++++++++++
307
308The meta-intel-specific machine features are only available to a BSP
309when the meta-intel layer is included in the build configuration, and
310the meta-intel.inc file is included in the machine configuration of
311that BSP.
312
313To make these features available for your machine, you will need to:
314
315 1. include a configuration line such as the below in bblayers.conf
316 BBLAYERS += "<local path>/meta-intel"
317 2. include the following line in the machine configuration file
318 require conf/machine/include/meta-intel.inc
319
320Once the above requirements are met, the machine features provided by
321the meta-intel layer will be available for the BSP to use.
322
323Available machine features
324++++++++++++++++++++++++++
325
326Currently, the meta-intel layer makes the following set of
327Intel-specific machine features available:
328
329 * intel-ucode
330
331These machine features can be included by listing them in the
332MACHINE_FEATURES variable in the machine configuration file. For
333example:
334
335 MACHINE_FEATURES += "intel-ucode"
336
337Machine feature details
338+++++++++++++++++++++++
339
340 * intel-ucode
341
342 This feature provides support for microcode updates to Intel
343 processors. The intel-ucode feature runs at early boot and uses
344 the microcode data file added by the feature into the BSP's
345 initrd. It also puts the userland microcode-updating tool,
346 iucode_tool, into the target images along with the microcode data
347 file.
348
349 Q. Why might a user want to enable the intel-ucode feature?
350
351 A. Intel releases microcode updates to correct processor behavior
352 as documented in the respective processor specification
353 updates. While the normal approach to getting such microcode
354 updates is via a BIOS upgrade, this can be an administrative
355 hassle and not always possible in the field. The intel-ucode
356 feature enables the microcode update capability present in the
357 Linux kernel. It provides an easy path for upgrading processor
358 microcode without the need to change the BIOS. If the feature
359 is enabled, it is also possible to update the existing target
360 images with a newer microcode update in the future.
361
362 Q. How would a user bundle only target-specific microcode in the
363 target image?
364
365 A. The Intel microcode data file released by Intel contains
366 microcode updates for multiple processors. If the BSP image is
367 meant to run on only a certain subset of processor types, a
368 processor-specific subset of microcode can be bundled into the
369 target image via the UCODE_FILTER_PARAMETERS variable. This
370 works by listing a sequence of iucode-tool parameters in the
371 UCODE_FILTER_PARAMETERS variable, which in this case will
372 select only the specific microcode relevant to the BSP. For
373 more information on the underlying parameters refer to the
374 iucode-tool manual page at http://manned.org/iucode-tool
375
376 To define a set of parameters for microcode-filtering via the
377 UCODE_FILTER_PARAMETERS variable, one needs to identify the
378 cpuid signatures of all the processors the BSP is meant to run
379 on. One way to determine the cpuid signature for a specific
380 processor is to build and run an intel-ucode-feature-enabled
381 image on the target hardware, without first assigning any value
382 to the UCODE_FILTER_PARAMETERS variable, and then once the
383 image is booted, run the "ucode_tool -S" command to have the
384 ucode tool scan the system for processor signatures. These
385 signatures can then be used in the UCODE_FILTER_PARAMETERS
386 variable in conjunction with -s parameter. For example, for
387 the fri2 BSP, the cpuid can be determined as such:
388
389 [root@fri2 ~]# iucode_tool -S
390 iucode_tool: system has processor(s) with signature 0x00020661
391
392 Given that output, a suitable UCODE_FILTER_PARAMETERS variable
393 definition could be specified in the machine configuration as
394 such:
395
396 UCODE_FILTER_PARAMETERS = "-s 0x00020661"
397
398 Q. Are there any reasons a user might want to disable the
399 intel-ucode feature?
400
401 A. The microcode data file and associated tools occupy a small
402 amount of space (a few KB) on the target image. BSPs which are
403 highly sensitive to target image size and which are not
404 experiencing microcode-related issues might consider not
405 enabling this feature.
406
407
408IV. Tested Hardware
409===================
410
411The following undergo regular basic testing with their respective MACHINE types.
412Note that both 64-bit and 32-bit firmware is available for the MinnowBoard
413Turbot, so it is tested against both intel-corei7-64 and intel-core2-32.
414
415intel-corei7-64:
416 NUC6i5SYH
417 MinnowBoard Turbot
418 Braswell RVP
419
420intel-core2-32:
421 MinnowBoard Turbot
422
423Intel-quark:
424 Galileo 2
425
426
427V. Guidelines for submitting patches
428====================================
429
430Please submit any patches against meta-intel BSPs to the meta-intel
431mailing list (meta-intel@yoctoproject.org). Also, if your patches are
432available via a public git repository, please also include a URL to
433the repo and branch containing your patches as that makes it easier
434for maintainers to grab and test your patches.
435
436There are patch submission scripts available that will, among other
437things, automatically include the repo URL and branch as mentioned.
438Please see the Yocto Project Development Manual sections entitled
439'Using Scripts to Push a Change Upstream and Request a Pull' and
440'Using Email to Submit a Patch' for details.
441
442Regardless of how you submit a patch or patchset, the patches should
443at minimum follow the suggestions outlined in the 'Submitting a Change
444to the Yocto Project' section in the Yocto Project Development Manual.
445Specifically, they should:
446
447 - Include a 'Signed-off-by:' line. A commit can't legally be pulled
448 in without this.
449
450 - Provide a single-line, short summary of the change. This short
451 description should be prefixed by the BSP or recipe name, as
452 appropriate, followed by a colon. Capitalize the first character
453 of the summary (following the colon).
454
455 - For the body of the commit message, provide detailed information
456 that describes what you changed, why you made the change, and the
457 approach you used.
458
459 - If the change addresses a specific bug or issue that is associated
460 with a bug-tracking ID, include a reference to that ID in your
461 detailed description in the following format: [YOCTO #<bug-id>].
462
463 - Pay attention to line length - please don't allow any particular
464 line in the commit message to stretch past 72 characters.
465
466 - For any non-trivial patch, provide information about how you
467 tested the patch, and for any non-trivial or non-obvious testing
468 setup, provide details of that setup.
469
470Doing a quick 'git log' in meta-intel will provide you with many
471examples of good example commits if you have questions about any
472aspect of the preferred format.
473
474The meta-intel maintainers will do their best to review and/or pull in
475a patch or patchset within 24 hours of the time it was posted. For
476larger and/or more involved patches and patchsets, the review process
477may take longer.
478
479Please see the meta-intel/MAINTAINERS file for the list of maintainers
480and their specific areas; it's also a good idea to cc: the specific
481maintainer, if applicable.
diff --git a/README.sources b/README.sources
new file mode 100644
index 0000000..ee72e54
--- /dev/null
+++ b/README.sources
@@ -0,0 +1,17 @@
1The sources for the packages comprising the images shipped with this
2BSP can be found at the following location:
3
4http://downloads.yoctoproject.org/mirror/sources/
5
6The metadata used to generate the images shipped with this BSP, in
7addition to the code contained in this BSP, can be found at the
8following location:
9
10http://downloads.yoctoproject.org/releases/yocto/yocto-2.1/poky-krogoth-15.0.tar.bz2
11
12The metadata used to generate the images shipped with this BSP, in
13addition to the code contained in this BSP, can also be found at the
14following locations:
15
16git://git.yoctoproject.org/poky.git
17git://git.yoctoproject.org/meta-intel
diff --git a/classes/rmc-boot.bbclass b/classes/rmc-boot.bbclass
new file mode 100644
index 0000000..37c3e30
--- /dev/null
+++ b/classes/rmc-boot.bbclass
@@ -0,0 +1,17 @@
1# rmc-boot bbclass
2# Deploy central RMC database file to ESP
3
4IMAGE_INSTALL_append = " rmc"
5RMC_BOOTLOADER ?= "systemd-boot"
6
7inherit ${RMC_BOOTLOADER}
8
9do_bootimg[depends] += "${MLPREFIX}rmc-db:do_deploy"
10
11efi_populate_append() {
12 if [ -f ${DEPLOY_DIR_IMAGE}/rmc.db ]; then
13 install -m 0400 ${DEPLOY_DIR_IMAGE}/rmc.db ${DEST}/rmc.db
14 else
15 rm -f ${DEST}/rmc.db
16 fi
17}
diff --git a/classes/rmc-db.bbclass b/classes/rmc-db.bbclass
new file mode 100644
index 0000000..72594d6
--- /dev/null
+++ b/classes/rmc-db.bbclass
@@ -0,0 +1,92 @@
1# RMC database bbclass
2# provide functions to generate RMC database file on build host (native)
3
4DEPENDS += "rmc-native"
5
6# rmc_generate_db()
7# $1: a list of directories. Each directory holds directories for a group of
8# boards.
9# $2: path_name of rmc generates database file and records
10#
11# WARNING: content of directory of database file will be removed.
12#
13# Each board directory shall contain a fingerprint file (*.fp) at least, with
14# optional file blob(s) associated to the type of board. If a board directory
15# has no file blob, no record is created for that board.
16#
17# An example of two directories each of which contains two boards for RMC:
18# (All file and directory names are for illustration purpose.)
19#
20# dir_1/
21# board_1/
22# board_1_fingerprint.fp
23# file_1.blob
24# board_2/
25# board_2.fp
26# dir_2/
27# board_3/
28# b3.fp
29# file_1.blob
30# file_2.conf
31# board_4/
32# board_foo.fp
33# mylib.config
34#
35# To generate a RMC database "rmc.db" with data of all (actually 3) of boards in
36# a directory "deploy_dir":
37#
38# rmc_generate_db "dir_1 dir_2" "deploy_dir/rmc.db"
39#
40# The board_2 will be skipped. No record or any data for it is packed in
41# generated database because it only contains a fingerprint file.
42#
43
44rmc_generate_db () {
45 RMC_BOARD_DIRS=$1
46
47 if [ "$#" -ne 2 ]; then
48 echo "rmc_generate_db(): Wrong number of arguments: $#"
49 return 1
50 fi
51
52 RMC_DB_DIR=$(dirname "$2")
53 RMC_RECORDS=""
54
55 rm -rf ${RMC_DB_DIR}
56 mkdir -p ${RMC_DB_DIR}
57
58 # generate rmc database
59 for topdir in ${RMC_BOARD_DIRS}; do
60 # For all board dirs in a topdir:
61 CUR_BOARD_DIRS=$(find ${topdir}/* -type d)
62 for board_dir in ${CUR_BOARD_DIRS}; do
63 CUR_FINGERPRINT=$(find ${board_dir}/ -name "*.fp")
64
65 # disallow a board directory without any fingerprint file in it.
66 if [ -z "${CUR_FINGERPRINT}" ]; then
67 echo "Cannot find RMC fingerprint file in ${board_dir}"
68 return 1
69 fi
70
71 CUR_FILES=$(find ${board_dir}/ -type f |grep -v '\.fp$' || true)
72
73 # allow a directory only with fingerprint file. Developer may
74 # check in fingerprint for future use.
75 if [ -z "${CUR_FILES}" ]; then
76 continue
77 fi
78
79 for fp in ${CUR_FINGERPRINT}; do
80 fullname=$(basename ${fp})
81 CUR_TAG="${fullname%.*}"
82 CUR_RECORD=${RMC_DB_DIR}/${CUR_TAG}.rec
83 rmc -R -f ${fp} -b ${CUR_FILES} -o ${CUR_RECORD}
84 RMC_RECORDS="${RMC_RECORDS} ${CUR_RECORD}"
85 done
86 done
87 done
88
89 if [ ! -z "${RMC_RECORDS}" ]; then
90 rmc -D ${RMC_RECORDS} -o "$2"
91 fi
92}
diff --git a/classes/uefi-comboapp.bbclass b/classes/uefi-comboapp.bbclass
new file mode 100644
index 0000000..5c3ca8c
--- /dev/null
+++ b/classes/uefi-comboapp.bbclass
@@ -0,0 +1,151 @@
1# This class brings a more generic version of the UEFI combo app from refkit to meta-intel.
2# It uses a combo file, containing kernel, initramfs and
3# command line, presented to the BIOS as UEFI application, by prepending
4# it with the efi stub obtained from systemd-boot.
5
6# Don't add syslinux or build an ISO
7PCBIOS_forcevariable = "0"
8NOISO_forcevariable = "1"
9
10# image-live.bbclass will default INITRD_LIVE to the image INITRD_IMAGE creates.
11# We want behavior to be consistent whether or not "live" is in IMAGE_FSTYPES, so
12# we default INITRD_LIVE to the INITRD_IMAGE as well.
13INITRD_IMAGE ?= "core-image-minimal-initramfs"
14INITRD_LIVE ?= " ${@ ('${DEPLOY_DIR_IMAGE}/' + d.getVar('INITRD_IMAGE', expand=True) + '-${MACHINE}.cpio.gz') if d.getVar('INITRD_IMAGE', True) else ''}"
15
16do_uefiapp[depends] += " \
17 intel-microcode:do_deploy \
18 systemd-boot:do_deploy \
19 virtual/kernel:do_deploy \
20 "
21
22# INITRD_IMAGE is added to INITRD_LIVE, which we use to create our initrd, so depend on it if it is set
23do_uefiapp[depends] += "${@ '${INITRD_IMAGE}:do_image_complete' if d.getVar('INITRD_IMAGE') else ''}"
24
25# The image does without traditional bootloader.
26# In its place, instead, it uses a single UEFI executable binary, which is
27# composed by:
28# - an UEFI stub
29# The linux kernel can generate a UEFI stub, however the one from systemd-boot can fetch
30# the command line from a separate section of the EFI application, avoiding the need to
31# rebuild the kernel.
32# - the kernel
33# - an initramfs (optional)
34
35def create_uefiapp(d, uuid=None, app_suffix=''):
36 import glob, re
37 from subprocess import check_call
38
39 build_dir = d.getVar('B')
40 deploy_dir_image = d.getVar('DEPLOY_DIR_IMAGE')
41 image_link_name = d.getVar('IMAGE_LINK_NAME')
42
43 cmdline = '%s/cmdline.txt' % build_dir
44 linux = '%s/%s' % (deploy_dir_image, d.getVar('KERNEL_IMAGETYPE'))
45 initrd = '%s/initrd' % build_dir
46
47 stub_path = '%s/linux*.efi.stub' % deploy_dir_image
48 stub = glob.glob(stub_path)[0]
49 m = re.match(r"\S*(ia32|x64)(.efi)\S*", os.path.basename(stub))
50 app = "boot%s%s%s" % (m.group(1), app_suffix, m.group(2))
51 executable = '%s/%s.%s' % (deploy_dir_image, image_link_name, app)
52
53 if d.getVar('INITRD_LIVE'):
54 with open(initrd, 'wb') as dst:
55 for cpio in d.getVar('INITRD_LIVE').split():
56 with open(cpio, 'rb') as src:
57 dst.write(src.read())
58 initrd_cmd = "--add-section .initrd=%s --change-section-vma .initrd=0x3000000 " % initrd
59 else:
60 initrd_cmd = ""
61
62 root = 'root=PARTUUID=%s' % uuid if uuid else ''
63
64 with open(cmdline, 'w') as f:
65 f.write('%s %s' % (d.getVar('APPEND'), root))
66
67 objcopy_cmd = ("objcopy "
68 "--add-section .cmdline=%s --change-section-vma .cmdline=0x30000 "
69 "--add-section .linux=%s --change-section-vma .linux=0x40000 "
70 "%s %s %s") % \
71 (cmdline, linux, initrd_cmd, stub, executable)
72
73 check_call(objcopy_cmd, shell=True)
74
75python create_uefiapps () {
76 # We must clean up anything that matches the expected output pattern, to ensure that
77 # the next steps do not accidentally use old files.
78 import glob
79 pattern = d.expand('${DEPLOY_DIR_IMAGE}/${IMAGE_LINK_NAME}.boot*.efi')
80 for old_efi in glob.glob(pattern):
81 os.unlink(old_efi)
82 uuid = d.getVar('DISK_SIGNATURE_UUID')
83 create_uefiapp(d, uuid=uuid)
84}
85
86# This is intentionally split into different parts. This way, derived
87# classes or images can extend the individual parts. We can also use
88# whatever language (shell script or Python) is more suitable.
89python do_uefiapp() {
90 bb.build.exec_func('create_uefiapps', d)
91}
92
93do_uefiapp[vardeps] += "APPEND DISK_SIGNATURE_UUID INITRD_LIVE KERNEL_IMAGETYPE IMAGE_LINK_NAME"
94
95uefiapp_deploy_at() {
96 dest=$1
97 for i in ${DEPLOY_DIR_IMAGE}/${IMAGE_LINK_NAME}.boot*.efi; do
98 target=`basename $i`
99 target=`echo $target | sed -e 's/${IMAGE_LINK_NAME}.//'`
100 cp --preserve=timestamps -r $i $dest/$target
101 done
102}
103
104do_uefiapp_deploy() {
105 rm -rf ${IMAGE_ROOTFS}/boot/*
106 dest=${IMAGE_ROOTFS}/boot/EFI/BOOT
107 mkdir -p $dest
108 uefiapp_deploy_at $dest
109}
110
111do_uefiapp_deploy[depends] += "${PN}:do_uefiapp"
112
113
114# This decides when/how we add our tasks to the image
115python () {
116 image_fstypes = d.getVar('IMAGE_FSTYPES', True)
117 initramfs_fstypes = d.getVar('INITRAMFS_FSTYPES', True)
118
119 # Don't add any of these tasks to initramfs images
120 if initramfs_fstypes not in image_fstypes:
121 bb.build.addtask('uefiapp', 'do_image', 'do_rootfs', d)
122 bb.build.addtask('uefiapp_deploy', 'do_image', 'do_rootfs', d)
123}
124
125SIGN_AFTER ?= "do_uefiapp"
126SIGN_BEFORE ?= "do_uefiapp_deploy"
127SIGNING_DIR ?= "${DEPLOY_DIR_IMAGE}"
128SIGNING_BINARIES ?= "${IMAGE_LINK_NAME}.boot*.efi"
129inherit uefi-sign
130
131# Legacy hddimg support below this line
132efi_hddimg_populate() {
133 uefiapp_deploy_at "$1"
134}
135
136build_efi_cfg() {
137 # The command line is built into the combo app, so this is a null op
138 :
139}
140
141populate_kernel_append() {
142 # The kernel and initrd are built into the app, so we don't need these
143 if [ -f $dest/initrd ]; then
144 rm $dest/initrd
145 fi
146 if [ -f $dest/vmlinuz ]; then
147 rm $dest/vmlinuz
148 fi
149}
150
151IMAGE_FEATURES[validitems] += "secureboot"
diff --git a/classes/uefi-sign.bbclass b/classes/uefi-sign.bbclass
new file mode 100644
index 0000000..e8f203b
--- /dev/null
+++ b/classes/uefi-sign.bbclass
@@ -0,0 +1,50 @@
1# By default, sign all .efi binaries in ${B} after compiling and before deploying
2SIGNING_DIR ?= "${B}"
3SIGNING_BINARIES ?= "*.efi"
4SIGN_AFTER ?= "do_compile"
5SIGN_BEFORE ?= "do_deploy"
6
7python () {
8 import os
9 import hashlib
10
11 # Ensure that if the signing key or cert change, we rerun the uefiapp process
12 if bb.utils.contains('IMAGE_FEATURES', 'secureboot', True, False, d):
13 for varname in ('SECURE_BOOT_SIGNING_CERT', 'SECURE_BOOT_SIGNING_KEY'):
14 filename = d.getVar(varname)
15 if filename is None:
16 bb.fatal('%s is not set.' % varname)
17 if not os.path.isfile(filename):
18 bb.fatal('%s=%s is not a file.' % (varname, filename))
19 with open(filename, 'rb') as f:
20 data = f.read()
21 hash = hashlib.sha256(data).hexdigest()
22 d.setVar('%s_HASH' % varname, hash)
23
24 # Must reparse and thus rehash on file changes.
25 bb.parse.mark_dependency(d, filename)
26
27 bb.build.addtask('uefi_sign', d.getVar('SIGN_BEFORE'), d.getVar('SIGN_AFTER'), d)
28
29 # Original binary needs to be regenerated if the hash changes since we overwrite it
30 # SIGN_AFTER isn't necessarily when it gets generated, but its our best guess
31 d.appendVarFlag(d.getVar('SIGN_AFTER'), 'vardeps', 'SECURE_BOOT_SIGNING_CERT_HASH SECURE_BOOT_SIGNING_KEY_HASH')
32}
33
34do_uefi_sign() {
35 if [ -f ${SECURE_BOOT_SIGNING_KEY} ] && [ -f ${SECURE_BOOT_SIGNING_CERT} ]; then
36 for i in `find ${SIGNING_DIR}/ -name '${SIGNING_BINARIES}'`; do
37 sbsign --key ${SECURE_BOOT_SIGNING_KEY} --cert ${SECURE_BOOT_SIGNING_CERT} $i
38 sbverify --cert ${SECURE_BOOT_SIGNING_CERT} $i.signed
39 mv $i.signed $i
40 done
41 fi
42}
43
44do_uefi_sign[depends] += "sbsigntool-native:do_populate_sysroot"
45
46do_uefi_sign[vardeps] += "SECURE_BOOT_SIGNING_CERT_HASH \
47 SECURE_BOOT_SIGNING_KEY_HASH \
48 SIGNING_BINARIES SIGNING_DIR \
49 SIGN_BEFORE SIGN_AFTER \
50 "
diff --git a/common/custom-licenses/BSD_LMS b/common/custom-licenses/BSD_LMS
new file mode 100755
index 0000000..2ea28ff
--- /dev/null
+++ b/common/custom-licenses/BSD_LMS
@@ -0,0 +1,30 @@
1Copyright (C) 2004-2012 Intel Corporation. All rights reserved.
2
3• This license covers the sources of the Local Manageability Service (LMS).
4For licensing information for the LMS build scripts, please refer to the file build_script_license.txt.
5
6Redistribution and use in source and binary forms, with or without
7modification, are permitted provided that the following conditions are met:
8
9 - Redistributions of source code must retain the above copyright notice,
10 this list of conditions and the following disclaimer.
11
12 - Redistributions in binary form must reproduce the above copyright notice,
13 this list of conditions and the following disclaimer in the documentation
14 and/or other materials provided with the distribution.
15
16 - Neither the name of Intel Corporation. nor the names of its
17 contributors may be used to endorse or promote products derived from this
18 software without specific prior written permission.
19
20THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``AS IS''
21AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
22IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
23ARE DISCLAIMED. IN NO EVENT SHALL Intel Corporation. OR THE CONTRIBUTORS
24BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
25CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
26SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
27INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
28CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
29ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
30POSSIBILITY OF SUCH DAMAGE.
diff --git a/common/custom-licenses/Intel-Microcode-License b/common/custom-licenses/Intel-Microcode-License
new file mode 100644
index 0000000..af5b41c
--- /dev/null
+++ b/common/custom-licenses/Intel-Microcode-License
@@ -0,0 +1,123 @@
1INTEL SOFTWARE LICENSE AGREEMENT
2
3IMPORTANT - READ BEFORE COPYING, INSTALLING OR USING.
4Do not use or load this software and any associated materials (collectively,
5the "Software") until you have carefully read the following terms and
6conditions. By loading or using the Software, you agree to the terms of this
7Agreement. If you do not wish to so agree, do not install or use the Software.
8
9LICENSES: Please Note:
10- If you are a network administrator, the "Site License" below shall
11apply to you.
12- If you are an end user, the "Single User License" shall apply to you.
13- If you are an original equipment manufacturer (OEM), the "OEM License"
14shall apply to you.
15
16SITE LICENSE. You may copy the Software onto your organization's computers
17for your organization's use, and you may make a reasonable number of
18back-up copies of the Software, subject to these conditions:
19
201. This Software is licensed for use only in conjunction with Intel
21component products. Use of the Software in conjunction with non-Intel
22component products is not licensed hereunder.
232. You may not copy, modify, rent, sell, distribute or transfer any part
24of the Software except as provided in this Agreement, and you agree to
25prevent unauthorized copying of the Software.
263. You may not reverse engineer, decompile, or disassemble the Software.
274. You may not sublicense or permit simultaneous use of the Software by
28more than one user.
295. The Software may include portions offered on terms in addition to those
30set out here, as set out in a license accompanying those portions.
31
32SINGLE USER LICENSE. You may copy the Software onto a single computer for
33your personal, noncommercial use, and you may make one back-up copy of the
34Software, subject to these conditions:
35
361. This Software is licensed for use only in conjunction with Intel
37component products. Use of the Software in conjunction with non-Intel
38component products is not licensed hereunder.
392. You may not copy, modify, rent, sell, distribute or transfer any part
40of the Software except as provided in this Agreement, and you agree to
41prevent unauthorized copying of the Software.
423. You may not reverse engineer, decompile, or disassemble the Software.
434. You may not sublicense or permit simultaneous use of the Software by
44more than one user.
455. The Software may include portions offered on terms in addition to those
46set out here, as set out in a license accompanying those portions.
47
48OEM LICENSE: You may reproduce and distribute the Software only as an
49integral part of or incorporated in Your product or as a standalone
50Software maintenance update for existing end users of Your products,
51excluding any other standalone products, subject to these conditions:
52
531. This Software is licensed for use only in conjunction with Intel
54component products. Use of the Software in conjunction with non-Intel
55component products is not licensed hereunder.
562. You may not copy, modify, rent, sell, distribute or transfer any part
57of the Software except as provided in this Agreement, and you agree to
58prevent unauthorized copying of the Software.
593. You may not reverse engineer, decompile, or disassemble the Software.
604. You may only distribute the Software to your customers pursuant to a
61written license agreement. Such license agreement may be a "break-the-
62seal" license agreement. At a minimum such license shall safeguard
63Intel's ownership rights to the Software.
645. The Software may include portions offered on terms in addition to those
65set out here, as set out in a license accompanying those portions.
66
67NO OTHER RIGHTS. No rights or licenses are granted by Intel to You, expressly
68or by implication, with respect to any proprietary information or patent,
69copyright, mask work, trademark, trade secret, or other intellectual property
70right owned or controlled by Intel, except as expressly provided in this
71Agreement.
72
73OWNERSHIP OF SOFTWARE AND COPYRIGHTS. Title to all copies of the Software
74remains with Intel or its suppliers. The Software is copyrighted and
75protected by the laws of the United States and other countries, and
76international treaty provisions. You may not remove any copyright notices
77from the Software. Intel may make changes to the Software, or to items
78referenced therein, at any time without notice, but is not obligated to
79support or update the Software. Except as otherwise expressly provided, Intel
80grants no express or implied right under Intel patents, copyrights,
81trademarks, or other intellectual property rights. You may transfer the
82Software only if the recipient agrees to be fully bound by these terms and if
83you retain no copies of the Software.
84
85LIMITED MEDIA WARRANTY. If the Software has been delivered by Intel on
86physical media, Intel warrants the media to be free from material physical
87defects for a period of ninety days after delivery by Intel. If such a defect
88is found, return the media to Intel for replacement or alternate delivery of
89the Software as Intel may select.
90
91EXCLUSION OF OTHER WARRANTIES. EXCEPT AS PROVIDED ABOVE, THE SOFTWARE IS
92PROVIDED "AS IS" WITHOUT ANY EXPRESS OR IMPLIED WARRANTY OF ANY KIND
93INCLUDING WARRANTIES OF MERCHANTABILITY, NONINFRINGEMENT, OR FITNESS FOR A
94PARTICULAR PURPOSE. Intel does not warrant or assume responsibility for the
95accuracy or completeness of any information, text, graphics, links or other
96items contained within the Software.
97
98LIMITATION OF LIABILITY. IN NO EVENT SHALL INTEL OR ITS SUPPLIERS BE LIABLE
99FOR ANY DAMAGES WHATSOEVER (INCLUDING, WITHOUT LIMITATION, LOST PROFITS,
100BUSINESS INTERRUPTION, OR LOST INFORMATION) ARISING OUT OF THE USE OF OR
101INABILITY TO USE THE SOFTWARE, EVEN IF INTEL HAS BEEN ADVISED OF THE
102POSSIBILITY OF SUCH DAMAGES. SOME JURISDICTIONS PROHIBIT EXCLUSION OR
103LIMITATION OF LIABILITY FOR IMPLIED WARRANTIES OR CONSEQUENTIAL OR INCIDENTAL
104DAMAGES, SO THE ABOVE LIMITATION MAY NOT APPLY TO YOU. YOU MAY ALSO HAVE
105OTHER LEGAL RIGHTS THAT VARY FROM JURISDICTION TO JURISDICTION.
106
107TERMINATION OF THIS AGREEMENT. Intel may terminate this Agreement at any time
108if you violate its terms. Upon termination, you will immediately destroy the
109Software or return all copies of the Software to Intel.
110
111APPLICABLE LAWS. Claims arising under this Agreement shall be governed by the
112laws of California, excluding its principles of conflict of laws and the
113United Nations Convention on Contracts for the Sale of Goods. You may not
114export the Software in violation of applicable export laws and regulations.
115Intel is not obligated under any other agreements unless they are in writing
116and signed by an authorized representative of Intel.
117
118GOVERNMENT RESTRICTED RIGHTS. The Software is provided with "RESTRICTED
119RIGHTS." Use, duplication, or disclosure by the Government is subject to
120restrictions as set forth in FAR52.227-14 and DFAR252.227-7013 et seq. or its
121successor. Use of the Software by the Government constitutes acknowledgment
122of Intel's proprietary rights therein. Contractor or Manufacturer is Intel
1232200 Mission College Blvd., Santa Clara, CA 95052.
diff --git a/common/recipes-bsp/amt/files/atnetworktool-printf-fix.patch b/common/recipes-bsp/amt/files/atnetworktool-printf-fix.patch
new file mode 100644
index 0000000..6bb03e3
--- /dev/null
+++ b/common/recipes-bsp/amt/files/atnetworktool-printf-fix.patch
@@ -0,0 +1,20 @@
1Add a missing debug ifdef causing compilation problems.
2
3Upstream-Status: Submitted
4
5Signed-off-by: Tom Zanussi <tom.zanussi (a] intel.com>
6
7Index: lms-7.1.20/src/tools/ATNetworkTool.cpp
8===================================================================
9--- lms-7.1.20.orig/src/tools/ATNetworkTool.cpp 2012-04-30 23:24:56.693879920 -0500
10+++ lms-7.1.20/src/tools/ATNetworkTool.cpp 2012-04-30 23:25:32.363473948 -0500
11@@ -302,7 +302,9 @@
12 close(s);
13 return -1;
14 }
15+#ifdef LMS_NET_DEBUG
16 printf("successfully binded local\n");
17+#endif
18
19 }
20 if (bind(s, addr, addrlen) == -1) {
diff --git a/common/recipes-bsp/amt/files/readlink-declaration.patch b/common/recipes-bsp/amt/files/readlink-declaration.patch
new file mode 100644
index 0000000..0246d50
--- /dev/null
+++ b/common/recipes-bsp/amt/files/readlink-declaration.patch
@@ -0,0 +1,18 @@
1Add a missing include causing compilation (missing declaration) problems.
2
3Upstream-Status: Submitted
4
5Signed-off-by: Tom Zanussi <tom.zanussi (a] intel.com>
6
7Index: lms-7.1.20/src/tools/ATVersion.cpp
8===================================================================
9--- lms-7.1.20.orig/src/tools/ATVersion.cpp 2012-05-29 20:34:34.061997035 -0500
10+++ lms-7.1.20/src/tools/ATVersion.cpp 2012-05-29 20:35:22.671412948 -0500
11@@ -40,6 +40,7 @@
12 #include <cerrno>
13 #include <fstream>
14 #include <dirent.h>
15+#include <unistd.h>
16
17 #define AT_VERSION_ARGUMENT "--version"
18 #define AT_VERSION_MAXSIZE 40
diff --git a/common/recipes-bsp/amt/lms/0001-Include-sys-select.h-for-fd_set.patch b/common/recipes-bsp/amt/lms/0001-Include-sys-select.h-for-fd_set.patch
new file mode 100644
index 0000000..e28d45a
--- /dev/null
+++ b/common/recipes-bsp/amt/lms/0001-Include-sys-select.h-for-fd_set.patch
@@ -0,0 +1,28 @@
1From 518a3a277c89a3d6b0a9d3ee552cfa33a1dbd5c6 Mon Sep 17 00:00:00 2001
2From: Jussi Kukkonen <jussi.kukkonen@intel.com>
3Date: Mon, 23 Jan 2017 20:45:08 +0200
4Subject: [PATCH 1/2] Include sys/select.h for fd_set()
5
6This is needed at least on musl.
7
8Upstream-Status: Pending
9Signed-off-by: Jussi Kukkonen <jussi.kukkonen@intel.com>
10---
11 src/mei/MEILinux.cpp | 1 +
12 1 file changed, 1 insertion(+)
13
14diff --git a/src/mei/MEILinux.cpp b/src/mei/MEILinux.cpp
15index 1e9d28f..631270e 100755
16--- a/src/mei/MEILinux.cpp
17+++ b/src/mei/MEILinux.cpp
18@@ -37,6 +37,7 @@
19 #include <cerrno>
20 #include <fcntl.h>
21 #include <sys/ioctl.h>
22+#include <sys/select.h>
23 #include <unistd.h>
24 #include <stdint.h>
25 #include <aio.h>
26--
272.1.4
28
diff --git a/common/recipes-bsp/amt/lms/0001-Protocol.cpp-Add-whitespace-for-gcc6-compile-error.patch b/common/recipes-bsp/amt/lms/0001-Protocol.cpp-Add-whitespace-for-gcc6-compile-error.patch
new file mode 100644
index 0000000..17b206e
--- /dev/null
+++ b/common/recipes-bsp/amt/lms/0001-Protocol.cpp-Add-whitespace-for-gcc6-compile-error.patch
@@ -0,0 +1,31 @@
1From 8d737ba9745bef223c3d3b96899f11c26102ea04 Mon Sep 17 00:00:00 2001
2From: Saul Wold <sgw@linux.intel.com>
3Date: Mon, 16 May 2016 09:01:05 -0700
4Subject: [PATCH] Protocol.cpp: Add whitespace for gcc6 compile error
5
6When moving from C++-3 -> C++11 additiona white space is required between
7User-defined literals.
8
9Upstream-Status: Pending
10
11Signed-off-by: Saul Wold <sgw@linux.intel.com>
12---
13 src/Protocol.cpp | 2 +-
14 1 file changed, 1 insertion(+), 1 deletion(-)
15
16diff --git a/src/Protocol.cpp b/src/Protocol.cpp
17index 1c21a0f..3a4a9bb 100755
18--- a/src/Protocol.cpp
19+++ b/src/Protocol.cpp
20@@ -1428,7 +1428,7 @@ int Protocol::_handleFQDNChange(const char *fqdn)
21 char host[FQDN_MAX_SIZE + 1];
22 #define LMS_MAX_LINE_LEN 1023
23 char line[LMS_MAX_LINE_LEN + 1];
24-#define LMS_LINE_SIG_FIRST_WORDS(a) "# LMS GENERATED "a" "
25+#define LMS_LINE_SIG_FIRST_WORDS(a) "# LMS GENERATED " a " "
26 #define LMS_LINE_SIG_LAST_WORD "LINE"
27 #define LMS_LINE_SIG_LAST_WORD_LEN 4
28 #define LMS_LINE_SIG(a) LMS_LINE_SIG_FIRST_WORDS(a) LMS_LINE_SIG_LAST_WORD
29--
302.5.0
31
diff --git a/common/recipes-bsp/amt/lms/0002-Use-proper-netinet-in.h-API.patch b/common/recipes-bsp/amt/lms/0002-Use-proper-netinet-in.h-API.patch
new file mode 100644
index 0000000..fa2e29a
--- /dev/null
+++ b/common/recipes-bsp/amt/lms/0002-Use-proper-netinet-in.h-API.patch
@@ -0,0 +1,31 @@
1From 0adc925ca9e005f93d77f373ccda2a6c6cc3ff2f Mon Sep 17 00:00:00 2001
2From: Jussi Kukkonen <jussi.kukkonen@intel.com>
3Date: Mon, 23 Jan 2017 20:46:50 +0200
4Subject: [PATCH 2/2] Use proper netinet/in.h API
5
6in6addr is only guaranteed to contain this member:
7 uint8_t s6_addr[16]
8Use that instead of the glibc implementation detail __in6_u.
9
10Upstream-Status: Pending
11Signed-off-by: Jussi Kukkonen <jussi.kukkonen@intel.com>
12---
13 src/tools/ATNetworkTool.cpp | 2 +-
14 1 file changed, 1 insertion(+), 1 deletion(-)
15
16diff --git a/src/tools/ATNetworkTool.cpp b/src/tools/ATNetworkTool.cpp
17index 66e27df..0789c79 100755
18--- a/src/tools/ATNetworkTool.cpp
19+++ b/src/tools/ATNetworkTool.cpp
20@@ -207,7 +207,7 @@ int ATNetworkTool::GetSockPeerIP(int sock, ATAddressList & peerAddresses, int &e
21 if(sa->sa_family == AF_INET6 && IN6_IS_ADDR_V4MAPPED(&addr)) //if(IN6_IS_ADDR_V4COMPAT(&addr))
22 {
23 struct in_addr demapped_addr;
24- memcpy(&demapped_addr.s_addr, &addr.__in6_u.__u6_addr8[12], 4);
25+ memcpy(&demapped_addr.s_addr, &addr.s6_addr[12], 4);
26
27 struct sockaddr_in sa_in;
28 sa_in.sin_family = AF_INET;
29--
302.1.4
31
diff --git a/common/recipes-bsp/amt/lms/0003-Fix-device-file-referance-to-dev-mei0-remove-select.patch b/common/recipes-bsp/amt/lms/0003-Fix-device-file-referance-to-dev-mei0-remove-select.patch
new file mode 100644
index 0000000..433d301
--- /dev/null
+++ b/common/recipes-bsp/amt/lms/0003-Fix-device-file-referance-to-dev-mei0-remove-select.patch
@@ -0,0 +1,91 @@
1Fix device file referance to /dev/mei0, remove select post write.
2
3LMS uses /dev/mei character device which is absent on current kernel versions causing LMS fail to initialize. LMS sends messages to MEI with a post select timeout. Select timeout causes SendMessage to fail causing LMS to not to communicate properly with MEI.
4
5Adding /dev/mei0 device file reference to check first and then /dev/mei sucessfully initializes LMS. Rely on write return length and remove select with timeout to fix communication with MEI.
6
7Upstream-Status: Pending
8
9Signed-off-by: Anand Vastrad <anand.vastrad@intel.com>
10---
11 src/mei/MEILinux.cpp | 43 +++++++------------------------------------
12 1 file changed, 7 insertions(+), 36 deletions(-)
13
14diff --git a/src/mei/MEILinux.cpp b/src/mei/MEILinux.cpp
15index 1e9d28f..6d23f54 100755
16--- a/src/mei/MEILinux.cpp
17+++ b/src/mei/MEILinux.cpp
18@@ -94,13 +94,17 @@ bool MEILinux::Init(unsigned char reqProtocolVersion)
19 Deinit();
20 }
21
22- _fd = open("/dev/mei", O_RDWR);
23+ _fd = open("/dev/mei0", O_RDWR);
24
25 if (_fd == -1 ) {
26 if (_verbose) {
27- fprintf(stderr, "Error: Cannot establish a handle to the MEI driver\n");
28+ fprintf(stderr, "Warning: Cannot establish a handle to the MEI driver mei0, retrying with mei \n");
29+ }
30+ _fd = open("/dev/mei", O_RDWR);
31+ if (_fd == -1 ) {
32+ fprintf(stderr, "Error: Cannot establish a handle to the MEI driver mei\n");
33+ return false;
34 }
35- return false;
36 }
37 _initialized = true;
38
39@@ -181,13 +185,7 @@ int MEILinux::ReceiveMessage(unsigned char *buffer, int len, unsigned long timeo
40 int MEILinux::SendMessage(const unsigned char *buffer, int len, unsigned long timeout)
41 {
42 int rv = 0;
43- int return_length =0;
44 int error = 0;
45- fd_set set;
46- struct timeval tv;
47-
48- tv.tv_sec = timeout / 1000;
49- tv.tv_usec =(timeout % 1000) * 1000000;
50
51 if (_verbose) {
52 fprintf(stdout, "call write length = %d\n", len);
53@@ -198,35 +196,8 @@ int MEILinux::SendMessage(const unsigned char *buffer, int len, unsigned long ti
54 if (_verbose) {
55 fprintf(stderr,"write failed with status %d %d\n", rv, error);
56 }
57- goto out;
58- }
59-
60- return_length = rv;
61-
62- FD_ZERO(&set);
63- FD_SET(_fd, &set);
64- rv = select(_fd+1 ,&set, NULL, NULL, &tv);
65- if (rv > 0 && FD_ISSET(_fd, &set)) {
66- if (_verbose) {
67- fprintf(stderr, "write success\n");
68- }
69 }
70- else if (rv == 0) {
71- if (_verbose) {
72- fprintf(stderr, "write failed on timeout with status\n");
73- }
74- goto out;
75- }
76- else { //rv<0
77- if (_verbose) {
78- fprintf(stderr, "write failed on select with status %d\n", rv);
79- }
80- goto out;
81- }
82-
83- rv = return_length;
84
85-out:
86 if (rv < 0) {
87 Deinit();
88 }
89--
902.7.4
91
diff --git a/common/recipes-bsp/amt/lms/0004-Intel-AMT-ME-real-time-notification-infra.patch b/common/recipes-bsp/amt/lms/0004-Intel-AMT-ME-real-time-notification-infra.patch
new file mode 100644
index 0000000..04f584a
--- /dev/null
+++ b/common/recipes-bsp/amt/lms/0004-Intel-AMT-ME-real-time-notification-infra.patch
@@ -0,0 +1,2647 @@
1Added Intel AMT ME real time notification infra to LMS.
2
3Notification support now actively captures all the INTEL AMT ME events by plugging in to APF infra.
4These events message are in the WsMan XML format. WsMan XML is parsed to get the AlertID and Message arguments.
5A map is initialized initially by reading AMTAlerts.xml which provides alertid,messageArguements and verbose description.
6From AlertID, verbose description is obtained and then using d-bus infra verbose description is notified to the user.
7
8src/tools/utils.cpp Utils class provides static methods for string manipulation and desktop notification.
9src/tools/miniXmlParser.cpp MiniXmlParser class provide methods for parsing the xmlBuffer, validation and retreving tag/value.
10src/tools/httpParser.cpp HttpParser class provides method to parse http response buffer and populate header,body,headerfields properties.
11src/alertDescription.cpp AlertDescription class parses AMTAlerts.xml like xml to populate map of alertId-Arguments and verbose desctiption.
12src/alertIndication.cpp AlertIndication class provides binding to some xmlTags. It uses MiniXmlParse to parse xmlBuffer and provides access methods to some of the fields.
13src/defaultAlerts.cpp provides default AlertID-Description paris. This is used in absence of AMTAlerts.xml.
14src/notifyDesktop.sh is script which uses d-bus infra to pop up desktop notification. The following script can be modified based on device environment and libraries installed.
15src/LMEConnection.cpp has modified the buffer 4x times because of the size of AMT ME Xml data.
16src/Protocol.cpp [ _UNSHandler(char *data, int dataLength) ] has changes to recieve AMT ME event data, gracefully process the data and close the channel.
17
18src/tools/miniXmlParser.cpp has derived work from http://info.meshcentral.com/downloads/MeshAgentFullSource.rar microstack. Author: Bryan Y Roe <bryan.y.roe@intel.com>/Intel Corporation.
19
20Upstream-Status: Pending
21
22Signed-off-by: AnandVastrad <anand.vastrad@intel.com>
23---
24 Makefile.in | 2 +
25 src/AMTAlerts.xml | 464 ++++++++++++++++++++++++++++++++++++++++++++
26 src/LMEConnection.cpp | 2 +-
27 src/Makefile.am | 3 +
28 src/Makefile.in | 172 ++++++++++++++--
29 src/Makefile.inc | 20 +-
30 src/Protocol.cpp | 191 +++++++++++++++---
31 src/Protocol.h | 8 +-
32 src/alertDescription.cpp | 144 ++++++++++++++
33 src/alertDescription.h | 45 +++++
34 src/alertIndication.cpp | 90 +++++++++
35 src/alertIndication.h | 54 ++++++
36 src/defaultAlerts.h | 43 ++++
37 src/notifyDesktop.sh | 10 +
38 src/tools/httpParser.cpp | 101 ++++++++++
39 src/tools/httpParser.h | 49 +++++
40 src/tools/miniXmlParser.cpp | 375 +++++++++++++++++++++++++++++++++++
41 src/tools/miniXmlParser.h | 51 +++++
42 src/tools/utils.cpp | 185 ++++++++++++++++++
43 src/tools/utils.h | 57 ++++++
44 src/tools/xmlNode.cpp | 45 +++++
45 src/tools/xmlNode.h | 49 +++++
46 22 files changed, 2105 insertions(+), 55 deletions(-)
47 mode change 100755 => 100644 Makefile.in
48 create mode 100755 src/AMTAlerts.xml
49 mode change 100755 => 100644 src/Makefile.in
50 create mode 100644 src/alertDescription.cpp
51 create mode 100644 src/alertDescription.h
52 create mode 100644 src/alertIndication.cpp
53 create mode 100644 src/alertIndication.h
54 create mode 100644 src/defaultAlerts.h
55 create mode 100644 src/notifyDesktop.sh
56 create mode 100644 src/tools/httpParser.cpp
57 create mode 100644 src/tools/httpParser.h
58 create mode 100644 src/tools/miniXmlParser.cpp
59 create mode 100644 src/tools/miniXmlParser.h
60 create mode 100644 src/tools/utils.cpp
61 create mode 100644 src/tools/utils.h
62 create mode 100644 src/tools/xmlNode.cpp
63 create mode 100644 src/tools/xmlNode.h
64
65diff --git a/Makefile.in b/Makefile.in
66old mode 100755
67new mode 100644
68index f90be60..e1a248b
69--- a/Makefile.in
70+++ b/Makefile.in
71@@ -133,6 +133,7 @@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
72 PACKAGE_NAME = @PACKAGE_NAME@
73 PACKAGE_STRING = @PACKAGE_STRING@
74 PACKAGE_TARNAME = @PACKAGE_TARNAME@
75+PACKAGE_URL = @PACKAGE_URL@
76 PACKAGE_VERSION = @PACKAGE_VERSION@
77 PATH_SEPARATOR = @PATH_SEPARATOR@
78 RANLIB = @RANLIB@
79@@ -185,6 +186,7 @@ pdfdir = @pdfdir@
80 prefix = @prefix@
81 program_transform_name = @program_transform_name@
82 psdir = @psdir@
83+runstatedir = @runstatedir@
84 sbindir = @sbindir@
85 sharedstatedir = @sharedstatedir@
86 sysconfdir = @sysconfdir@
87diff --git a/src/AMTAlerts.xml b/src/AMTAlerts.xml
88new file mode 100755
89index 0000000..ddb3383
90--- /dev/null
91+++ b/src/AMTAlerts.xml
92@@ -0,0 +1,464 @@
93+<?xml version="1.0" encoding="utf-8" standalone="no"?>
94+<!-- Copyright (c) Intel Corporation, 2010 All Rights Reserved. -->
95+<Alerts>
96+<Alert>
97+<Id>iAMT0001</Id>
98+<Arg></Arg>
99+<Message>System Defense Policy triggered.</Message>
100+</Alert>
101+<Alert>
102+<Id>iAMT0002</Id>
103+<Arg></Arg>
104+<Message>Agent Presence Agent not started.</Message>
105+</Alert>
106+<Alert>
107+<Id>iAMT0003</Id>
108+<Arg></Arg>
109+<Message>Agent Presence Agent stopped.</Message>
110+</Alert>
111+<Alert>
112+<Id>iAMT0004</Id>
113+<Arg></Arg>
114+<Message>Agent Presence: running.</Message>
115+</Alert>
116+<Alert>
117+<Id>iAMT0005</Id>
118+<Arg></Arg>
119+<Message>Agent Presence: expired.</Message>
120+</Alert>
121+<Alert>
122+<Id>iAMT0006</Id>
123+<Arg></Arg>
124+<Message>Agent Presence: suspended.</Message>
125+</Alert>
126+<Alert>
127+<Id>iAMT0007</Id>
128+<Arg></Arg>
129+<Message>Host software attempt to disable AMT Network link detected.</Message>
130+</Alert>
131+<Alert>
132+<Id>iAMT0008</Id>
133+<Arg></Arg>
134+<Message>Host software attempt to disable AMT Network link detected -- Host Network link blocked.</Message>
135+</Alert>
136+<Alert>
137+<Id>iAMT0009</Id>
138+<Arg></Arg>
139+<Message>AMT clock or FLASH wear-out protection disabled.</Message>
140+</Alert>
141+<Alert>
142+<Id>iAMT0010</Id>
143+<Arg></Arg>
144+<Message>Intel(R) AMT Network Interface: Heuristics defense slow threshold trespassed.</Message>
145+</Alert>
146+<Alert>
147+<Id>iAMT0011</Id>
148+<Arg></Arg>
149+<Message>Intel(R) AMT Network Interface: Heuristics defense fast threshold trespassed.</Message>
150+</Alert>
151+<Alert>
152+<Id>iAMT0012</Id>
153+<Arg></Arg>
154+<Message>Intel(R) AMT Network Interface: Heuristics defense factory defined threshold trespassed.</Message>
155+</Alert>
156+<Alert>
157+<Id>iAMT0013</Id>
158+<Arg></Arg>
159+<Message>Intel(R) AMT Network Interface: Heuristics defense Encounter timeout expired.</Message>
160+</Alert>
161+<Alert>
162+<Id>iAMT0014</Id>
163+<Arg></Arg>
164+<Message>General certificate error.</Message>
165+</Alert>
166+<Alert>
167+<Id>iAMT0015</Id>
168+<Arg></Arg>
169+<Message>Certificate expired.</Message>
170+</Alert>
171+<Alert>
172+<Id>iAMT0016</Id>
173+<Arg></Arg>
174+<Message>No trusted root certificate.</Message>
175+</Alert>
176+<Alert>
177+<Id>iAMT0017</Id>
178+<Arg></Arg>
179+<Message>Not configured to work with server certificate.</Message>
180+</Alert>
181+<Alert>
182+<Id>iAMT0018</Id>
183+<Arg></Arg>
184+<Message>Certificate revoked.</Message>
185+</Alert>
186+<Alert>
187+<Id>iAMT0019</Id>
188+<Arg></Arg>
189+<Message>RSA exponent too large.</Message>
190+</Alert>
191+<Alert>
192+<Id>iAMT0020</Id>
193+<Arg></Arg>
194+<Message>RSA modulus too large.</Message>
195+</Alert>
196+<Alert>
197+<Id>iAMT0021</Id>
198+<Arg></Arg>
199+<Message>Unsupported digest.</Message>
200+</Alert>
201+<Alert>
202+<Id>iAMT0022</Id>
203+<Arg></Arg>
204+<Message>Distinguished name too long.</Message>
205+</Alert>
206+<Alert>
207+<Id>iAMT0023</Id>
208+<Arg></Arg>
209+<Message>Key usage missing.</Message>
210+</Alert>
211+<Alert>
212+<Id>iAMT0024</Id>
213+<Arg></Arg>
214+<Message>General SSL handshake error.</Message>
215+</Alert>
216+<Alert>
217+<Id>iAMT0025</Id>
218+<Arg></Arg>
219+<Message>General 802.1x error.</Message>
220+</Alert>
221+<Alert>
222+<Id>iAMT0026</Id>
223+<Arg></Arg>
224+<Message>AMT Diagnostic AlertEAC error - General NAC error.</Message>
225+</Alert>
226+<Alert>
227+<Id>iAMT0027</Id>
228+<Arg></Arg>
229+<Message>AMT Diagnostic AlertEAC error - attempt to get a NAC posture while AMT NAC is disabled.</Message>
230+</Alert>
231+<Alert>
232+<Id>iAMT0028</Id>
233+<Arg></Arg>
234+<Message>AMT Diagnostic AlertEAC error - attempt to get a posture of an unsupported type.</Message>
235+</Alert>
236+<Alert>
237+<Id>iAMT0029</Id>
238+<Arg></Arg>
239+<Message>Audit log storage is 50% full.</Message>
240+</Alert>
241+<Alert>
242+<Id>iAMT0030</Id>
243+<Arg></Arg>
244+<Message>Audit log storage is 75% full.</Message>
245+</Alert>
246+<Alert>
247+<Id>iAMT0031</Id>
248+<Arg></Arg>
249+<Message>Audit log storage is 85% full.</Message>
250+</Alert>
251+<Alert>
252+<Id>iAMT0032</Id>
253+<Arg></Arg>
254+<Message>Audit log storage is 95% full.</Message>
255+</Alert>
256+<Alert>
257+<Id>iAMT0033</Id>
258+<Arg></Arg>
259+<Message>Audit log storage is full.</Message>
260+</Alert>
261+<Alert>
262+<Id>iAMT0034</Id>
263+<Arg></Arg>
264+<Message>Firmware Update Event - Partial.</Message>
265+</Alert>
266+<Alert>
267+<Id>iAMT0035</Id>
268+<Arg></Arg>
269+<Message>Firmware Update Event - Failure.</Message>
270+</Alert>
271+<Alert>
272+<Id>iAMT0036</Id>
273+<Arg></Arg>
274+<Message>Remote connectivity initiated.</Message>
275+</Alert>
276+<Alert>
277+<Id>iAMT0037</Id>
278+<Arg></Arg>
279+<Message>ME Presence event.</Message>
280+</Alert>
281+<Alert>
282+<Id>iAMT0038</Id>
283+<Arg>0</Arg>
284+<Message>AMT is being unprovisioned using BIOS command.</Message>
285+</Alert>
286+<Alert>
287+<Id>iAMT0038</Id>
288+<Arg>1</Arg>
289+<Message>AMT is being unprovisioned using Local MEI command.</Message>
290+</Alert>
291+<Alert>
292+<Id>iAMT0038</Id>
293+<Arg>2</Arg>
294+<Message>AMT is being unprovisioned using Local WS-MAN/SOAP command.</Message>
295+</Alert>
296+<Alert>
297+<Id>iAMT0038</Id>
298+<Arg>3</Arg>
299+<Message>AMT is being unprovisioned using Remote WS-MAN/SOAP command.</Message>
300+</Alert>
301+<Alert>
302+<Id>iAMT0050</Id>
303+<Arg></Arg>
304+<Message>User Notification Alert - General Notification.</Message>
305+</Alert>
306+<Alert>
307+<Id>iAMT0050</Id>
308+<Arg>16</Arg>
309+<Message>User Notification Alert - Circuit Breaker notification (CB Drop TX filter hit.).</Message>
310+</Alert>
311+<Alert>
312+<Id>iAMT0050</Id>
313+<Arg>17</Arg>
314+<Message>User Notification Alert - Circuit Breaker notification (CB Rate Limit TX filter hit.).</Message>
315+</Alert>
316+<Alert>
317+<Id>iAMT0050</Id>
318+<Arg>18</Arg>
319+<Message>User Notification Alert - Circuit Breaker notification (CB Drop RX filter hit.).</Message>
320+</Alert>
321+<Alert>
322+<Id>iAMT0050</Id>
323+<Arg>19</Arg>
324+<Message>User Notification Alert - Circuit Breaker notification (CB Rate Limit RX filter hit.).</Message>
325+</Alert>
326+<Alert>
327+<Id>iAMT0050</Id>
328+<Arg>32</Arg>
329+<Message>User Notification Alert - EAC notification.</Message>
330+</Alert>
331+<Alert>
332+<Id>iAMT0050</Id>
333+<Arg>48</Arg>
334+<Message>User Notification Alert - Remote diagnostics - (Remote Redirection session started - SOL).</Message>
335+</Alert>
336+<Alert>
337+<Id>iAMT0050</Id>
338+<Arg>49</Arg>
339+<Message>User Notification Alert - Remote diagnostics - (Remote Redirection session stopped - SOL).</Message>
340+</Alert>
341+<Alert>
342+<Id>iAMT0050</Id>
343+<Arg>50</Arg>
344+<Message>User Notification Alert - Remote diagnostics. (Remote Redirection session started - IDE-R).</Message>
345+</Alert>
346+<Alert>
347+<Id>iAMT0050</Id>
348+<Arg>51</Arg>
349+<Message>User Notification Alert - Remote diagnostics. (Remote Redirection session stopped - IDE-R).</Message>
350+</Alert>
351+<Alert>
352+<Id>iAMT0050</Id>
353+<Arg>66</Arg>
354+<Message>User Notification Alert - WLAN notification (Host profile mismatch - Management Interface ignored).</Message>
355+</Alert>
356+<Alert>
357+<Id>iAMT0050</Id>
358+<Arg>67</Arg>
359+<Message>User Notification Alert - WLAN notification (Management device overrides host radio).</Message>
360+</Alert>
361+<Alert>
362+<Id>iAMT0050</Id>
363+<Arg>68</Arg>
364+<Message>User Notification Alert - WLAN notification (Host profile security mismatch).</Message>
365+</Alert>
366+<Alert>
367+<Id>iAMT0050</Id>
368+<Arg>69</Arg>
369+<Message>User Notification Alert - WLAN notification (Management device relinquishes control over host Radio).</Message>
370+</Alert>
371+<Alert>
372+<Id>iAMT0051</Id>
373+<Arg></Arg>
374+<Message>User Notification Alert - SecIo event.</Message>
375+</Alert>
376+<Alert>
377+<Id>iAMT0051</Id>
378+<Arg>0</Arg>
379+<Message>User Notification Alert - SecIo event semaphore at host.</Message>
380+</Alert>
381+<Alert>
382+<Id>iAMT0051</Id>
383+<Arg>1</Arg>
384+<Message>User Notification Alert - semaphore at ME.</Message>
385+</Alert>
386+<Alert>
387+<Id>iAMT0051</Id>
388+<Arg>2</Arg>
389+<Message>User Notification Alert - SecIo event - semaphore timeout.</Message>
390+</Alert>
391+<Alert>
392+<Id>iAMT0052</Id>
393+<Arg></Arg>
394+<Message>User Notification Alert - KVM session event.</Message>
395+</Alert>
396+<Alert>
397+<Id>iAMT0052</Id>
398+<Arg>0</Arg>
399+<Message>User Notification Alert - KVM session requested.</Message>
400+</Alert>
401+<Alert>
402+<Id>iAMT0052</Id>
403+<Arg>1</Arg>
404+<Message>User Notification Alert - KVM session started.</Message>
405+</Alert>
406+<Alert>
407+<Id>iAMT0052</Id>
408+<Arg>2</Arg>
409+<Message>User Notification Alert - KVM session stopped.</Message>
410+</Alert>
411+<Alert>
412+<Id>iAMT0053</Id>
413+<Arg></Arg>
414+<Message>User Notification Alert - RCS notification.</Message>
415+</Alert>
416+<Alert>
417+<Id>iAMT0053</Id>
418+<Arg>50</Arg>
419+<Message>User Notification Alert - RCS notification (HW button pressed. Connection initiated automatically).</Message>
420+</Alert>
421+<Alert>
422+<Id>iAMT0053</Id>
423+<Arg>52</Arg>
424+<Message>User Notification Alert - RCS notification (HW button pressed. Connection wasn't initiated automatically).</Message>
425+</Alert>
426+<Alert>
427+<Id>iAMT0053</Id>
428+<Arg>53</Arg>
429+<Message>User Notification Alert - RCS notification (Contracts updated).</Message>
430+</Alert>
431+<Alert>
432+<Id>iAMT0054</Id>
433+<Arg></Arg>
434+<Message>User Notification Alert - WLAN notification. Wireless Profile sync enablement state changed.</Message>
435+</Alert>
436+<Alert>
437+<Id>iAMT0055</Id>
438+<Arg></Arg>
439+<Message>User Notification Alert - Provisioning state change notification.</Message>
440+</Alert>
441+<Alert>
442+<Id>iAMT0055</Id>
443+<Arg>0</Arg>
444+<Message>User Notification Alert - Provisioning state change notification - Pre-configuration.</Message>
445+</Alert>
446+<Alert>
447+<Id>iAMT0055</Id>
448+<Arg>1</Arg>
449+<Message>User Notification Alert - Provisioning state change notification - In configuration.</Message>
450+</Alert>
451+<Alert>
452+<Id>iAMT0055</Id>
453+<Arg>2</Arg>
454+<Message>User Notification Alert - Provisioning state change notification - Post-configuration.</Message>
455+</Alert>
456+<Alert>
457+<Id>iAMT0055</Id>
458+<Arg>3</Arg>
459+<Message>User Notification Alert - Provisioning state change notification - unprovision process has started.</Message>
460+</Alert>
461+<Alert>
462+<Id>iAMT0056</Id>
463+<Arg></Arg>
464+<Message>User Notification Alert - System Defense change notification.</Message>
465+</Alert>
466+<Alert>
467+<Id>iAMT0057</Id>
468+<Arg></Arg>
469+<Message>User Notification Alert - Network State change notification.</Message>
470+</Alert>
471+<Alert>
472+<Id>iAMT0058</Id>
473+<Arg></Arg>
474+<Message>User Notification Alert - Remote Access change notification.</Message>
475+</Alert>
476+<Alert>
477+<Id>iAMT0058</Id>
478+<Arg>1</Arg>
479+<Message>User Notification Alert - Remote Access change notification - tunnel is closed.</Message>
480+</Alert>
481+<Alert>
482+<Id>iAMT0058</Id>
483+<Arg>1</Arg>
484+<Message>User Notification Alert - Remote Access change notification - tunnel is open.</Message>
485+</Alert>
486+<Alert>
487+<Id>iAMT0059</Id>
488+<Arg></Arg>
489+<Message>User Notification Alert - KVM enabled event.</Message>
490+</Alert>
491+<Alert>
492+<Id>iAMT0059</Id>
493+<Arg>0</Arg>
494+<Message>User Notification Alert - KVM enabled event - KVM disabled.</Message>
495+</Alert>
496+<Alert>
497+<Id>iAMT0059</Id>
498+<Arg>1</Arg>
499+<Message>User Notification Alert - KVM enabled event - KVM enabled (both from MEBx and PTNI).</Message>
500+</Alert>
501+<Alert>
502+<Id>iAMT0060</Id>
503+<Arg></Arg>
504+<Message>User Notification Alert - SecIO configuration event.</Message>
505+</Alert>
506+<Alert>
507+<Id>iAMT0061</Id>
508+<Arg></Arg>
509+<Message>ME FW reset occurred.</Message>
510+</Alert>
511+<Alert>
512+<Id>iAMT0062</Id>
513+<Arg></Arg>
514+<Message>User Notification Alert - IpSyncEnabled event.</Message>
515+</Alert>
516+<Alert>
517+<Id>iAMT0062</Id>
518+<Arg>0</Arg>
519+<Message>User Notification Alert - IpSyncEnabled event - IpSync disabled.</Message>
520+</Alert>
521+<Alert>
522+<Id>iAMT0062</Id>
523+<Arg>1</Arg>
524+<Message>User Notification Alert - IpSyncEnabled event - IpSync enabled.</Message>
525+</Alert>
526+<Alert>
527+<Id>iAMT0063</Id>
528+<Arg></Arg>
529+<Message>User Notification Alert - HTTP Proxy sync enabled event.</Message>
530+</Alert>
531+<Alert>
532+<Id>iAMT0063</Id>
533+<Arg>0</Arg>
534+<Message>User Notification Alert - HTTP Proxy sync enabled event - HTTP Proxy Sync disabled.</Message>
535+</Alert>
536+<Alert>
537+<Id>iAMT0063</Id>
538+<Arg>1</Arg>
539+<Message>User Notification Alert - HTTP Proxy sync enabled event - HTTP Proxy Sync enabled.</Message>
540+</Alert>
541+<Alert>
542+<Id>iAMT0064</Id>
543+<Arg></Arg>
544+<Message>User Notification Alert - User Consent event.</Message>
545+</Alert>
546+<Alert>
547+<Id>iAMT0064</Id>
548+<Arg>1</Arg>
549+<Message>User Notification Alert - User Consent event - User Consent granted.</Message>
550+</Alert>
551+<Alert>
552+<Id>iAMT0064</Id>
553+<Arg>2</Arg>
554+<Message>User Notification Alert - User Consent event - User Consent ended.</Message>
555+</Alert>
556+</Alerts>
557diff --git a/src/LMEConnection.cpp b/src/LMEConnection.cpp
558index f3e7a2b..d192626 100755
559--- a/src/LMEConnection.cpp
560+++ b/src/LMEConnection.cpp
561@@ -48,7 +48,7 @@ extern glue plugin;
562
563 const GUID LMEConnection::_guid = {0x6733a4db, 0x0476, 0x4e7b, {0xb3, 0xaf, 0xbc, 0xfc, 0x29, 0xbe, 0xe7, 0xa7}};
564
565-const UINT32 LMEConnection::RX_WINDOW_SIZE = 1024;
566+const UINT32 LMEConnection::RX_WINDOW_SIZE = 4096;
567
568 LMEConnection::LMEConnection(bool verbose) :
569 _reqID(0),
570diff --git a/src/Makefile.am b/src/Makefile.am
571index 42d9f47..364427b 100755
572--- a/src/Makefile.am
573+++ b/src/Makefile.am
574@@ -1,4 +1,7 @@
575 sbin_PROGRAMS=lms
576+dist_bin_SCRIPTS=notifyDesktop.sh
577+xml_dir=$(datadir)/xml
578+xml__DATA=AMTAlerts.xml
579
580 SYNCLIB_SRCDIR=SyncLib/src
581 SYNCLIB_HDRDIR=SyncLib/Include
582diff --git a/src/Makefile.in b/src/Makefile.in
583old mode 100755
584new mode 100644
585index c6fe1ba..7b6cafd
586--- a/src/Makefile.in
587+++ b/src/Makefile.in
588@@ -14,6 +14,8 @@
589
590 @SET_MAKE@
591
592+
593+
594 srcdir = @srcdir@
595 top_srcdir = @top_srcdir@
596 VPATH = @srcdir@
597@@ -37,9 +39,9 @@ POST_UNINSTALL = :
598 build_triplet = @build@
599 host_triplet = @host@
600 sbin_PROGRAMS = lms$(EXEEXT)
601-DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \
602- $(srcdir)/Makefile.inc $(srcdir)/iatshareddata.h.in \
603- $(srcdir)/plugin.h.in
604+DIST_COMMON = $(dist_bin_SCRIPTS) $(srcdir)/Makefile.am \
605+ $(srcdir)/Makefile.in $(srcdir)/Makefile.inc \
606+ $(srcdir)/iatshareddata.h.in $(srcdir)/plugin.h.in
607 subdir = src
608 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
609 am__aclocal_m4_deps = $(top_srcdir)/configure.ac
610@@ -48,14 +50,17 @@ am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
611 mkinstalldirs = $(install_sh) -d
612 CONFIG_HEADER = $(top_builddir)/config.h
613 CONFIG_CLEAN_FILES = plugin.h iatshareddata.h
614-am__installdirs = "$(DESTDIR)$(sbindir)"
615+am__installdirs = "$(DESTDIR)$(sbindir)" "$(DESTDIR)$(bindir)" \
616+ "$(DESTDIR)$(xml_dir)"
617 sbinPROGRAMS_INSTALL = $(INSTALL_PROGRAM)
618 PROGRAMS = $(sbin_PROGRAMS)
619 am__objects_1 = main.$(OBJEXT) LMEConnection.$(OBJEXT) \
620 ConfigConnection.$(OBJEXT) Protocol.$(OBJEXT) glue.$(OBJEXT) \
621- ChannelGenerator.$(OBJEXT)
622+ ChannelGenerator.$(OBJEXT) alertIndication.$(OBJEXT) \
623+ alertDescription.$(OBJEXT)
624 am__objects_2 = ATVersion.$(OBJEXT) ATNetworkTool.$(OBJEXT) \
625- daemonize.$(OBJEXT)
626+ daemonize.$(OBJEXT) utils.$(OBJEXT) miniXmlParser.$(OBJEXT) \
627+ xmlNode.$(OBJEXT) httpParser.$(OBJEXT)
628 am__objects_3 = MEILinux.$(OBJEXT) MNGCommand.$(OBJEXT) \
629 FWULCommand.$(OBJEXT) PTHICommand.$(OBJEXT)
630 am__objects_4 = EventLinux.$(OBJEXT) SemaphoreLinux.$(OBJEXT) \
631@@ -68,6 +73,8 @@ am__objects_7 = $(am__objects_6) $(am__objects_6) $(am__objects_6) \
632 am_lms_OBJECTS = $(am__objects_5) $(am__objects_7)
633 lms_OBJECTS = $(am_lms_OBJECTS)
634 lms_LDADD = $(LDADD)
635+dist_binSCRIPT_INSTALL = $(INSTALL_SCRIPT)
636+SCRIPTS = $(dist_bin_SCRIPTS)
637 DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir)
638 depcomp = $(SHELL) $(top_srcdir)/depcomp
639 am__depfiles_maybe = depfiles
640@@ -89,6 +96,14 @@ LINK = $(LIBTOOL) --tag=CC --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
641 $(AM_LDFLAGS) $(LDFLAGS) -o $@
642 SOURCES = $(lms_SOURCES)
643 DIST_SOURCES = $(lms_SOURCES)
644+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
645+am__vpath_adj = case $$p in \
646+ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
647+ *) f=$$p;; \
648+ esac;
649+am__strip_dir = `echo $$p | sed -e 's|^.*/||'`;
650+xml_DATA_INSTALL = $(INSTALL_DATA)
651+DATA = $(xml__DATA)
652 ETAGS = etags
653 CTAGS = ctags
654 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
655@@ -150,6 +165,7 @@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
656 PACKAGE_NAME = @PACKAGE_NAME@
657 PACKAGE_STRING = @PACKAGE_STRING@
658 PACKAGE_TARNAME = @PACKAGE_TARNAME@
659+PACKAGE_URL = @PACKAGE_URL@
660 PACKAGE_VERSION = @PACKAGE_VERSION@
661 PATH_SEPARATOR = @PATH_SEPARATOR@
662 RANLIB = @RANLIB@
663@@ -202,10 +218,14 @@ pdfdir = @pdfdir@
664 prefix = @prefix@
665 program_transform_name = @program_transform_name@
666 psdir = @psdir@
667+runstatedir = @runstatedir@
668 sbindir = @sbindir@
669 sharedstatedir = @sharedstatedir@
670 sysconfdir = @sysconfdir@
671 target_alias = @target_alias@
672+dist_bin_SCRIPTS = notifyDesktop.sh
673+xml_dir = $(datadir)/xml
674+xml__DATA = AMTAlerts.xml
675 SYNCLIB_SRCDIR = SyncLib/src
676 SYNCLIB_HDRDIR = SyncLib/Include
677 MEI_DIR = mei
678@@ -238,11 +258,19 @@ $(MEI_DIR)/PTHICommand.cpp
679
680 TOOLS_HDRS = $(TOOLS_DIR)/ATVersion.h \
681 $(TOOLS_DIR)/ATNetworkTool.h \
682-$(TOOLS_DIR)/daemonize.h
683+$(TOOLS_DIR)/daemonize.h \
684+$(TOOLS_DIR)/utils.h \
685+$(TOOLS_DIR)/miniXmlParser.h \
686+$(TOOLS_DIR)/xmlNode.h \
687+$(TOOLS_DIR)/httpParser.h
688
689 TOOLS_SRCS = $(TOOLS_DIR)/ATVersion.cpp \
690 $(TOOLS_DIR)/ATNetworkTool.cpp \
691-$(TOOLS_DIR)/daemonize.cpp
692+$(TOOLS_DIR)/daemonize.cpp \
693+$(TOOLS_DIR)/utils.cpp \
694+$(TOOLS_DIR)/miniXmlParser.cpp \
695+$(TOOLS_DIR)/xmlNode.cpp \
696+$(TOOLS_DIR)/httpParser.cpp
697
698 MAIN_HDRS = types.h \
699 Channel.h \
700@@ -254,14 +282,18 @@ ConfigConnection.h \
701 Protocol.h \
702 glue.h \
703 version.h \
704-ChannelGenerator.h
705+ChannelGenerator.h \
706+alertIndication.h \
707+alertDescription.h
708
709 MAIN_SRCS = main.cpp \
710 LMEConnection.cpp \
711 ConfigConnection.cpp \
712 Protocol.cpp \
713 glue.cpp \
714-ChannelGenerator.cpp
715+ChannelGenerator.cpp \
716+alertIndication.cpp \
717+alertDescription.cpp
718
719 SRCS = $(MAIN_SRCS) \
720 $(TOOLS_SRCS) \
721@@ -342,6 +374,25 @@ clean-sbinPROGRAMS:
722 lms$(EXEEXT): $(lms_OBJECTS) $(lms_DEPENDENCIES)
723 @rm -f lms$(EXEEXT)
724 $(CXXLINK) $(lms_LDFLAGS) $(lms_OBJECTS) $(lms_LDADD) $(LIBS)
725+install-dist_binSCRIPTS: $(dist_bin_SCRIPTS)
726+ @$(NORMAL_INSTALL)
727+ test -z "$(bindir)" || $(mkdir_p) "$(DESTDIR)$(bindir)"
728+ @list='$(dist_bin_SCRIPTS)'; for p in $$list; do \
729+ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
730+ if test -f $$d$$p; then \
731+ f=`echo "$$p" | sed 's|^.*/||;$(transform)'`; \
732+ echo " $(dist_binSCRIPT_INSTALL) '$$d$$p' '$(DESTDIR)$(bindir)/$$f'"; \
733+ $(dist_binSCRIPT_INSTALL) "$$d$$p" "$(DESTDIR)$(bindir)/$$f"; \
734+ else :; fi; \
735+ done
736+
737+uninstall-dist_binSCRIPTS:
738+ @$(NORMAL_UNINSTALL)
739+ @list='$(dist_bin_SCRIPTS)'; for p in $$list; do \
740+ f=`echo "$$p" | sed 's|^.*/||;$(transform)'`; \
741+ echo " rm -f '$(DESTDIR)$(bindir)/$$f'"; \
742+ rm -f "$(DESTDIR)$(bindir)/$$f"; \
743+ done
744
745 mostlyclean-compile:
746 -rm -f *.$(OBJEXT)
747@@ -355,17 +406,23 @@ distclean-compile:
748 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ConfigConnection.Po@am__quote@
749 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/EventLinux.Po@am__quote@
750 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/FWULCommand.Po@am__quote@
751-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/MEILinux.Po@am__quote@
752 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/LMEConnection.Po@am__quote@
753+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/MEILinux.Po@am__quote@
754 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/MNGCommand.Po@am__quote@
755 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/PTHICommand.Po@am__quote@
756 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Protocol.Po@am__quote@
757 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/RWLock.Po@am__quote@
758 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/SemaphoreLinux.Po@am__quote@
759 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ThreadLinux.Po@am__quote@
760+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/alertDescription.Po@am__quote@
761+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/alertIndication.Po@am__quote@
762 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/daemonize.Po@am__quote@
763 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/glue.Po@am__quote@
764+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/httpParser.Po@am__quote@
765 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/main.Po@am__quote@
766+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/miniXmlParser.Po@am__quote@
767+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/utils.Po@am__quote@
768+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xmlNode.Po@am__quote@
769
770 .cpp.o:
771 @am__fastdepCXX_TRUE@ if $(CXXCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \
772@@ -430,6 +487,62 @@ daemonize.obj: $(TOOLS_DIR)/daemonize.cpp
773 @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
774 @am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o daemonize.obj `if test -f '$(TOOLS_DIR)/daemonize.cpp'; then $(CYGPATH_W) '$(TOOLS_DIR)/daemonize.cpp'; else $(CYGPATH_W) '$(srcdir)/$(TOOLS_DIR)/daemonize.cpp'; fi`
775
776+utils.o: $(TOOLS_DIR)/utils.cpp
777+@am__fastdepCXX_TRUE@ if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT utils.o -MD -MP -MF "$(DEPDIR)/utils.Tpo" -c -o utils.o `test -f '$(TOOLS_DIR)/utils.cpp' || echo '$(srcdir)/'`$(TOOLS_DIR)/utils.cpp; \
778+@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/utils.Tpo" "$(DEPDIR)/utils.Po"; else rm -f "$(DEPDIR)/utils.Tpo"; exit 1; fi
779+@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$(TOOLS_DIR)/utils.cpp' object='utils.o' libtool=no @AMDEPBACKSLASH@
780+@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
781+@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o utils.o `test -f '$(TOOLS_DIR)/utils.cpp' || echo '$(srcdir)/'`$(TOOLS_DIR)/utils.cpp
782+
783+utils.obj: $(TOOLS_DIR)/utils.cpp
784+@am__fastdepCXX_TRUE@ if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT utils.obj -MD -MP -MF "$(DEPDIR)/utils.Tpo" -c -o utils.obj `if test -f '$(TOOLS_DIR)/utils.cpp'; then $(CYGPATH_W) '$(TOOLS_DIR)/utils.cpp'; else $(CYGPATH_W) '$(srcdir)/$(TOOLS_DIR)/utils.cpp'; fi`; \
785+@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/utils.Tpo" "$(DEPDIR)/utils.Po"; else rm -f "$(DEPDIR)/utils.Tpo"; exit 1; fi
786+@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$(TOOLS_DIR)/utils.cpp' object='utils.obj' libtool=no @AMDEPBACKSLASH@
787+@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
788+@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o utils.obj `if test -f '$(TOOLS_DIR)/utils.cpp'; then $(CYGPATH_W) '$(TOOLS_DIR)/utils.cpp'; else $(CYGPATH_W) '$(srcdir)/$(TOOLS_DIR)/utils.cpp'; fi`
789+
790+miniXmlParser.o: $(TOOLS_DIR)/miniXmlParser.cpp
791+@am__fastdepCXX_TRUE@ if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT miniXmlParser.o -MD -MP -MF "$(DEPDIR)/miniXmlParser.Tpo" -c -o miniXmlParser.o `test -f '$(TOOLS_DIR)/miniXmlParser.cpp' || echo '$(srcdir)/'`$(TOOLS_DIR)/miniXmlParser.cpp; \
792+@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/miniXmlParser.Tpo" "$(DEPDIR)/miniXmlParser.Po"; else rm -f "$(DEPDIR)/miniXmlParser.Tpo"; exit 1; fi
793+@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$(TOOLS_DIR)/miniXmlParser.cpp' object='miniXmlParser.o' libtool=no @AMDEPBACKSLASH@
794+@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
795+@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o miniXmlParser.o `test -f '$(TOOLS_DIR)/miniXmlParser.cpp' || echo '$(srcdir)/'`$(TOOLS_DIR)/miniXmlParser.cpp
796+
797+miniXmlParser.obj: $(TOOLS_DIR)/miniXmlParser.cpp
798+@am__fastdepCXX_TRUE@ if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT miniXmlParser.obj -MD -MP -MF "$(DEPDIR)/miniXmlParser.Tpo" -c -o miniXmlParser.obj `if test -f '$(TOOLS_DIR)/miniXmlParser.cpp'; then $(CYGPATH_W) '$(TOOLS_DIR)/miniXmlParser.cpp'; else $(CYGPATH_W) '$(srcdir)/$(TOOLS_DIR)/miniXmlParser.cpp'; fi`; \
799+@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/miniXmlParser.Tpo" "$(DEPDIR)/miniXmlParser.Po"; else rm -f "$(DEPDIR)/miniXmlParser.Tpo"; exit 1; fi
800+@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$(TOOLS_DIR)/miniXmlParser.cpp' object='miniXmlParser.obj' libtool=no @AMDEPBACKSLASH@
801+@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
802+@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o miniXmlParser.obj `if test -f '$(TOOLS_DIR)/miniXmlParser.cpp'; then $(CYGPATH_W) '$(TOOLS_DIR)/miniXmlParser.cpp'; else $(CYGPATH_W) '$(srcdir)/$(TOOLS_DIR)/miniXmlParser.cpp'; fi`
803+
804+xmlNode.o: $(TOOLS_DIR)/xmlNode.cpp
805+@am__fastdepCXX_TRUE@ if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT xmlNode.o -MD -MP -MF "$(DEPDIR)/xmlNode.Tpo" -c -o xmlNode.o `test -f '$(TOOLS_DIR)/xmlNode.cpp' || echo '$(srcdir)/'`$(TOOLS_DIR)/xmlNode.cpp; \
806+@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/xmlNode.Tpo" "$(DEPDIR)/xmlNode.Po"; else rm -f "$(DEPDIR)/xmlNode.Tpo"; exit 1; fi
807+@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$(TOOLS_DIR)/xmlNode.cpp' object='xmlNode.o' libtool=no @AMDEPBACKSLASH@
808+@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
809+@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o xmlNode.o `test -f '$(TOOLS_DIR)/xmlNode.cpp' || echo '$(srcdir)/'`$(TOOLS_DIR)/xmlNode.cpp
810+
811+xmlNode.obj: $(TOOLS_DIR)/xmlNode.cpp
812+@am__fastdepCXX_TRUE@ if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT xmlNode.obj -MD -MP -MF "$(DEPDIR)/xmlNode.Tpo" -c -o xmlNode.obj `if test -f '$(TOOLS_DIR)/xmlNode.cpp'; then $(CYGPATH_W) '$(TOOLS_DIR)/xmlNode.cpp'; else $(CYGPATH_W) '$(srcdir)/$(TOOLS_DIR)/xmlNode.cpp'; fi`; \
813+@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/xmlNode.Tpo" "$(DEPDIR)/xmlNode.Po"; else rm -f "$(DEPDIR)/xmlNode.Tpo"; exit 1; fi
814+@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$(TOOLS_DIR)/xmlNode.cpp' object='xmlNode.obj' libtool=no @AMDEPBACKSLASH@
815+@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
816+@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o xmlNode.obj `if test -f '$(TOOLS_DIR)/xmlNode.cpp'; then $(CYGPATH_W) '$(TOOLS_DIR)/xmlNode.cpp'; else $(CYGPATH_W) '$(srcdir)/$(TOOLS_DIR)/xmlNode.cpp'; fi`
817+
818+httpParser.o: $(TOOLS_DIR)/httpParser.cpp
819+@am__fastdepCXX_TRUE@ if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT httpParser.o -MD -MP -MF "$(DEPDIR)/httpParser.Tpo" -c -o httpParser.o `test -f '$(TOOLS_DIR)/httpParser.cpp' || echo '$(srcdir)/'`$(TOOLS_DIR)/httpParser.cpp; \
820+@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/httpParser.Tpo" "$(DEPDIR)/httpParser.Po"; else rm -f "$(DEPDIR)/httpParser.Tpo"; exit 1; fi
821+@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$(TOOLS_DIR)/httpParser.cpp' object='httpParser.o' libtool=no @AMDEPBACKSLASH@
822+@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
823+@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o httpParser.o `test -f '$(TOOLS_DIR)/httpParser.cpp' || echo '$(srcdir)/'`$(TOOLS_DIR)/httpParser.cpp
824+
825+httpParser.obj: $(TOOLS_DIR)/httpParser.cpp
826+@am__fastdepCXX_TRUE@ if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT httpParser.obj -MD -MP -MF "$(DEPDIR)/httpParser.Tpo" -c -o httpParser.obj `if test -f '$(TOOLS_DIR)/httpParser.cpp'; then $(CYGPATH_W) '$(TOOLS_DIR)/httpParser.cpp'; else $(CYGPATH_W) '$(srcdir)/$(TOOLS_DIR)/httpParser.cpp'; fi`; \
827+@am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/httpParser.Tpo" "$(DEPDIR)/httpParser.Po"; else rm -f "$(DEPDIR)/httpParser.Tpo"; exit 1; fi
828+@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$(TOOLS_DIR)/httpParser.cpp' object='httpParser.obj' libtool=no @AMDEPBACKSLASH@
829+@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
830+@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o httpParser.obj `if test -f '$(TOOLS_DIR)/httpParser.cpp'; then $(CYGPATH_W) '$(TOOLS_DIR)/httpParser.cpp'; else $(CYGPATH_W) '$(srcdir)/$(TOOLS_DIR)/httpParser.cpp'; fi`
831+
832 MEILinux.o: $(MEI_DIR)/MEILinux.cpp
833 @am__fastdepCXX_TRUE@ if $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT MEILinux.o -MD -MP -MF "$(DEPDIR)/MEILinux.Tpo" -c -o MEILinux.o `test -f '$(MEI_DIR)/MEILinux.cpp' || echo '$(srcdir)/'`$(MEI_DIR)/MEILinux.cpp; \
834 @am__fastdepCXX_TRUE@ then mv -f "$(DEPDIR)/MEILinux.Tpo" "$(DEPDIR)/MEILinux.Po"; else rm -f "$(DEPDIR)/MEILinux.Tpo"; exit 1; fi
835@@ -551,6 +664,23 @@ clean-libtool:
836 distclean-libtool:
837 -rm -f libtool
838 uninstall-info-am:
839+install-xml_DATA: $(xml__DATA)
840+ @$(NORMAL_INSTALL)
841+ test -z "$(xml_dir)" || $(mkdir_p) "$(DESTDIR)$(xml_dir)"
842+ @list='$(xml__DATA)'; for p in $$list; do \
843+ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
844+ f=$(am__strip_dir) \
845+ echo " $(xml_DATA_INSTALL) '$$d$$p' '$(DESTDIR)$(xml_dir)/$$f'"; \
846+ $(xml_DATA_INSTALL) "$$d$$p" "$(DESTDIR)$(xml_dir)/$$f"; \
847+ done
848+
849+uninstall-xml_DATA:
850+ @$(NORMAL_UNINSTALL)
851+ @list='$(xml__DATA)'; for p in $$list; do \
852+ f=$(am__strip_dir) \
853+ echo " rm -f '$(DESTDIR)$(xml_dir)/$$f'"; \
854+ rm -f "$(DESTDIR)$(xml_dir)/$$f"; \
855+ done
856
857 ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
858 list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
859@@ -629,9 +759,9 @@ distdir: $(DISTFILES)
860 done
861 check-am: all-am
862 check: check-am
863-all-am: Makefile $(PROGRAMS)
864+all-am: Makefile $(PROGRAMS) $(SCRIPTS) $(DATA)
865 installdirs:
866- for dir in "$(DESTDIR)$(sbindir)"; do \
867+ for dir in "$(DESTDIR)$(sbindir)" "$(DESTDIR)$(bindir)" "$(DESTDIR)$(xml_dir)"; do \
868 test -z "$$dir" || $(mkdir_p) "$$dir"; \
869 done
870 install: install-am
871@@ -679,11 +809,11 @@ info: info-am
872
873 info-am:
874
875-install-data-am:
876+install-data-am: install-xml_DATA
877 @$(NORMAL_INSTALL)
878 $(MAKE) $(AM_MAKEFLAGS) install-data-hook
879
880-install-exec-am: install-sbinPROGRAMS
881+install-exec-am: install-dist_binSCRIPTS install-sbinPROGRAMS
882
883 install-info: install-info-am
884
885@@ -709,20 +839,22 @@ ps: ps-am
886
887 ps-am:
888
889-uninstall-am: uninstall-info-am uninstall-sbinPROGRAMS
890+uninstall-am: uninstall-dist_binSCRIPTS uninstall-info-am \
891+ uninstall-sbinPROGRAMS uninstall-xml_DATA
892
893 .PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \
894 clean-libtool clean-sbinPROGRAMS ctags distclean \
895 distclean-compile distclean-generic distclean-libtool \
896 distclean-tags distdir dvi dvi-am html html-am info info-am \
897 install install-am install-data install-data-am \
898- install-data-hook install-exec install-exec-am install-info \
899- install-info-am install-man install-sbinPROGRAMS install-strip \
900+ install-data-hook install-dist_binSCRIPTS install-exec \
901+ install-exec-am install-info install-info-am install-man \
902+ install-sbinPROGRAMS install-strip install-xml_DATA \
903 installcheck installcheck-am installdirs maintainer-clean \
904 maintainer-clean-generic mostlyclean mostlyclean-compile \
905 mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
906- tags uninstall uninstall-am uninstall-info-am \
907- uninstall-sbinPROGRAMS
908+ tags uninstall uninstall-am uninstall-dist_binSCRIPTS \
909+ uninstall-info-am uninstall-sbinPROGRAMS uninstall-xml_DATA
910
911
912 install-data-hook:
913diff --git a/src/Makefile.inc b/src/Makefile.inc
914index 079503c..8d7e7ab 100755
915--- a/src/Makefile.inc
916+++ b/src/Makefile.inc
917@@ -26,11 +26,19 @@ $(MEI_DIR)/PTHICommand.cpp
918
919 TOOLS_HDRS=$(TOOLS_DIR)/ATVersion.h \
920 $(TOOLS_DIR)/ATNetworkTool.h \
921-$(TOOLS_DIR)/daemonize.h
922+$(TOOLS_DIR)/daemonize.h \
923+$(TOOLS_DIR)/utils.h \
924+$(TOOLS_DIR)/miniXmlParser.h \
925+$(TOOLS_DIR)/xmlNode.h \
926+$(TOOLS_DIR)/httpParser.h
927
928 TOOLS_SRCS=$(TOOLS_DIR)/ATVersion.cpp \
929 $(TOOLS_DIR)/ATNetworkTool.cpp \
930-$(TOOLS_DIR)/daemonize.cpp
931+$(TOOLS_DIR)/daemonize.cpp \
932+$(TOOLS_DIR)/utils.cpp \
933+$(TOOLS_DIR)/miniXmlParser.cpp \
934+$(TOOLS_DIR)/xmlNode.cpp \
935+$(TOOLS_DIR)/httpParser.cpp
936
937 MAIN_HDRS=types.h \
938 Channel.h \
939@@ -42,14 +50,18 @@ ConfigConnection.h \
940 Protocol.h \
941 glue.h \
942 version.h \
943-ChannelGenerator.h
944+ChannelGenerator.h \
945+alertIndication.h \
946+alertDescription.h
947
948 MAIN_SRCS=main.cpp \
949 LMEConnection.cpp \
950 ConfigConnection.cpp \
951 Protocol.cpp \
952 glue.cpp \
953-ChannelGenerator.cpp
954+ChannelGenerator.cpp \
955+alertIndication.cpp \
956+alertDescription.cpp
957
958 SRCS=$(MAIN_SRCS) \
959 $(TOOLS_SRCS) \
960diff --git a/src/Protocol.cpp b/src/Protocol.cpp
961index 3a4a9bb..c3de5cc 100755
962--- a/src/Protocol.cpp
963+++ b/src/Protocol.cpp
964@@ -28,6 +28,7 @@
965 * POSSIBILITY OF SUCH DAMAGE.
966 *******************************************************************************/
967
968+
969 #ifdef HAVE_CONFIG_H
970 #include "config.h"
971 #endif
972@@ -42,7 +43,8 @@
973 #include <fcntl.h>
974 #include <netdb.h>
975 #include <syslog.h>
976-#include "strings.h"
977+#include <vector>
978+#include <string.h>
979
980 #define _stprintf_s snprintf
981 #define strnicmp strncasecmp
982@@ -53,6 +55,11 @@
983 #include "LMS_if.h"
984 #include "Lock.h"
985 #include "ATNetworkTool.h"
986+#include "utils.h"
987+#include "httpParser.h"
988+#include "miniXmlParser.h"
989+#include "alertIndication.h"
990+#include "alertDescription.h"
991
992
993 const LMEProtocolVersionMessage Protocol::MIN_PROT_VERSION(1, 0);
994@@ -99,9 +106,9 @@ bool Protocol::Init(EventLogCallback cb, void *param)
995 PRINT("Protocol::Init started\n");
996 _eventLog = cb;
997 _eventLogParam = param;
998+ _UNSSenderChannel = INVALID_CHANNEL;
999
1000 DeinitFull();
1001-
1002 {
1003 Lock dl(_deinitLock);
1004 _deinitReq = false;
1005@@ -1170,10 +1177,112 @@ void Protocol::_removeFromMaps(Channel *c)
1006 _channelToSocket.erase(c->GetSenderChannel());
1007 _socketToChannel.erase(s);
1008 }
1009-void Protocol::_UNSConnection()
1010+
1011+std::string Protocol::_PACKET_BODY_LENGTH="Content-Length";
1012+std::string Protocol::_NOTIFICATION_HEADER="Intel Management Engine Notification";
1013+int Protocol::_UNSHandler(char *data, int dataLength)
1014 {
1015- PRINT("UNS event\n");
1016+ PRINT("UNS event data\n");
1017+ char *pBuffer = NULL;
1018+ static char *sBuffer = NULL;
1019+ static int sBufferLength = 0;
1020+ int rc = -1;
1021+ unsigned int packetBodyLength = 0;
1022+ HttpParser httpParser;
1023+ std::string httpBody;
1024+ AlertIndication alertIndication;
1025+
1026+ //printf("Processing notification message %d\n", newNotification);
1027+
1028+ //Init if new notification. Append recieved notification bytes to existing buffer otherwise.
1029+ if (_newNotification == true)
1030+ { if (sBuffer != NULL) {
1031+ delete []sBuffer;
1032+ }
1033+ sBuffer = NULL;
1034+ sBufferLength = 0;
1035+ }
1036+
1037+ if (sBuffer == NULL) {
1038+ sBufferLength = 0;
1039+ sBuffer = new char[(dataLength+1) *sizeof(char)];
1040+ memcpy(sBuffer, data, dataLength);
1041+ } else {
1042+ pBuffer = new char[(sBufferLength + dataLength + 1)*sizeof(char)];
1043+ memcpy(pBuffer, sBuffer, sBufferLength);
1044+ memcpy(pBuffer+sBufferLength, data, dataLength);
1045+ delete []sBuffer;
1046+ sBuffer = pBuffer;
1047+ }
1048+
1049+ sBufferLength += dataLength;
1050+ sBuffer[sBufferLength] = '\0';
1051+
1052+ do {
1053+
1054+ if (httpParser.parse(sBuffer) != 0) {
1055+ break;
1056+ }
1057+
1058+ if (httpParser.getHeaderField(_PACKET_BODY_LENGTH).empty()) {
1059+ break;
1060+ }
1061+
1062+ packetBodyLength = stoi(httpParser.getHeaderField(_PACKET_BODY_LENGTH));
1063+
1064+ if (packetBodyLength == 0) {
1065+ break;
1066+ }
1067+
1068+ httpBody = httpParser.getBody();
1069+ if (httpBody.size() < packetBodyLength) {
1070+ break;
1071+ }
1072+
1073+ if (alertIndication.initFromXml((char*)httpBody.c_str(), httpBody.size())) {
1074+ break;
1075+ }
1076+
1077+ std::string alertIDString(alertIndication.getMessageID().data, alertIndication.getMessageID().dataLength);
1078+ if (alertIDString.empty()) {
1079+ break;
1080+ }
1081+
1082+ /*Check if we have match only with ID, if fails then use MessageArguments and checkagain */
1083+ std::string alertDescription;
1084+ std::string _alertDescription;
1085+ std::string notificationBody;
1086+ std::string messageArguments;
1087+ alertDescription = AlertDescription::getAlertDescription(alertIDString);
1088+ messageArguments = std::string(alertIndication.getMessageArguments().data, alertIndication.getMessageArguments().dataLength);
1089+
1090+ if (alertDescription.empty()) {
1091+ alertIDString += "-" + messageArguments;
1092+ alertDescription = AlertDescription::getAlertDescription(alertIDString);
1093+ } else {
1094+ _alertDescription = messageArguments;
1095+ }
1096+
1097+ notificationBody = std::string(alertIndication.getIndicationTime().data, alertIndication.getIndicationTime().dataLength);
1098+ if (alertDescription.empty()) {
1099+ notificationBody += " " + alertIDString;
1100+ } else {
1101+ if (_alertDescription.empty()) {
1102+ notificationBody += " " + alertDescription;
1103+ } else {
1104+ notificationBody += " : " + _alertDescription + " : " + alertDescription;
1105+ }
1106+ }
1107+
1108+ Utils::notifyDesktop(_NOTIFICATION_HEADER, notificationBody, true);
1109+ rc = 0;
1110+
1111+ } while(0);
1112+
1113+ return rc;
1114+
1115 }
1116+
1117 int Protocol::_sendHostFQDN()
1118 {
1119 char localName[FQDN_MAX_SIZE] = "\0";
1120@@ -1195,12 +1304,15 @@ void Protocol::_apfChannelOpen(LMEChannelOpenRequestMessage *chOpenMsg, int *sta
1121 " Recipient channel %d for address %s, port %d.\n",
1122 chOpenMsg->SenderChannel,
1123 chOpenMsg->Address.c_str(), chOpenMsg->Port);
1124+
1125 if(chOpenMsg->Port==0)
1126 {
1127- _UNSConnection();
1128- _sendHostFQDN();
1129- return;
1130+ _UNSSenderChannel = chOpenMsg->SenderChannel;
1131+ _lme.ChannelOpenReplySuccess(_UNSSenderChannel, _UNSRecipientChannel);
1132+ _newNotification = true;
1133+ return;
1134 }
1135+
1136 SOCKET s = ATNetworkTool::Connect(chOpenMsg->Address.c_str(),
1137 chOpenMsg->Port, error, PF_UNSPEC);
1138 if (s == INVALID_SOCKET) {
1139@@ -1282,33 +1394,41 @@ PortForwardRequest *Protocol::_apfChannelClose(LMEChannelCloseMessage *chClMsg)
1140 Lock l(_channelsLock);
1141 PRINT("_apfChannelClose: RecipientChannel=%d\n",chClMsg->RecipientChannel);
1142
1143-
1144- ChannelToSocketMap::iterator it = _channelToSocket.find(chClMsg->RecipientChannel);
1145- if (it != _channelToSocket .end())
1146- {
1147- SOCKET s = it->second;
1148- Channel *c = _socketToChannel[s];
1149- switch(c->GetStatus()) {
1150- case Channel::OPEN:
1151- c->SetStatus(Channel::CLOSED);
1152-
1153- _lme.ChannelClose(c->GetRecipientChannel(), c->GetSenderChannel());
1154- PRINT("Channel %d was closed by Intel AMT.\n", c->GetSenderChannel());
1155+ do {
1156+ if (chClMsg->RecipientChannel == _UNSRecipientChannel)
1157+ {
1158+ //UNS event channel close.
1159+ //We have not created a channel on LMS side, hence ignore
1160 break;
1161+ }
1162
1163- case Channel::WAITING_CLOSE:
1164- PRINT("Received reply by Intel AMT on closing channel %d.\n", c->GetSenderChannel());
1165- break;
1166+ ChannelToSocketMap::iterator it = _channelToSocket.find(chClMsg->RecipientChannel);
1167+ if (it != _channelToSocket .end())
1168+ {
1169+ SOCKET s = it->second;
1170+ Channel *c = _socketToChannel[s];
1171+ switch(c->GetStatus()) {
1172+ case Channel::OPEN:
1173+ c->SetStatus(Channel::CLOSED);
1174+
1175+ _lme.ChannelClose(c->GetRecipientChannel(), c->GetSenderChannel());
1176+ PRINT("Channel %d was closed by Intel AMT.\n", c->GetSenderChannel());
1177+ break;
1178
1179- case Channel::CLOSED:
1180- case Channel::NOT_OPENED:
1181- break;
1182- }
1183+ case Channel::WAITING_CLOSE:
1184+ PRINT("Received reply by Intel AMT on closing channel %d.\n", c->GetSenderChannel());
1185+ break;
1186
1187- _removeFromMaps(c);
1188- clPFwdReq = _closeMChannel(c);
1189+ case Channel::CLOSED:
1190+ case Channel::NOT_OPENED:
1191+ break;
1192+ }
1193+
1194+ _removeFromMaps(c);
1195+ clPFwdReq = _closeMChannel(c);
1196
1197- }
1198+ }
1199+ } while(0);
1200
1201 _channelGenerator.FreeChannel(chClMsg->RecipientChannel);
1202
1203@@ -1320,6 +1440,18 @@ PortForwardRequest *Protocol::_apfChannelData(LMEChannelDataMessage *chDMsg, int
1204 PortForwardRequest *clPFwdReq = NULL;
1205
1206 do {
1207+ if (chDMsg->RecipientChannel == _UNSRecipientChannel)
1208+
1209+ {
1210+ if (_UNSHandler((char*)chDMsg->Data, chDMsg->DataLength) == 0)
1211+ {
1212+ _lme.ChannelClose(_UNSSenderChannel, _UNSRecipientChannel);
1213+ }
1214+ _newNotification = false;
1215+ //UNS event data handle.
1216+ //We have not created a channel on LMS side, hence break
1217+ break;
1218+ }
1219 Lock l(_channelsLock);
1220
1221 ChannelToSocketMap::iterator it = _channelToSocket.find(chDMsg->RecipientChannel);
1222@@ -1341,6 +1473,7 @@ PortForwardRequest *Protocol::_apfChannelData(LMEChannelDataMessage *chDMsg, int
1223 int senderr = 0;
1224 int count = _send(channel->GetSocket(), (char *)chDMsg->Data,
1225 chDMsg->DataLength, senderr);
1226+
1227 PRINT("Sent %d bytes of %d from Intel AMT to channel %d with socket %d.\n",
1228 count, chDMsg->DataLength, chDMsg->RecipientChannel,
1229 channel->GetSocket());
1230diff --git a/src/Protocol.h b/src/Protocol.h
1231index a4ef419..858cb78 100755
1232--- a/src/Protocol.h
1233+++ b/src/Protocol.h
1234@@ -46,6 +46,7 @@
1235
1236 #define SOCKET int
1237 #define INVALID_SOCKET (SOCKET)(~0)
1238+#define INVALID_CHANNEL -1
1239 #define SOCKET_ERROR (-1)
1240
1241
1242@@ -120,7 +121,7 @@ private:
1243 PortForwardRequest *_apfChannelData(LMEChannelDataMessage *chDMsg, int *status);
1244 void _LmeReceive(void *buffer, unsigned int len, int *status);
1245 void _signalSelect();
1246- void _UNSConnection();
1247+ int _UNSHandler(char *buffer, int len);
1248 bool _acceptConnection(SOCKET s, unsigned int port);
1249 int _rxFromSocket(SOCKET s);
1250 int _handleFQDNChange(const char *fqdn);
1251@@ -192,6 +193,11 @@ private:
1252 typedef std::set<unsigned int> listenPortSet;
1253 listenPortSet _listenFailReported;
1254 ChannelGenerator _channelGenerator;
1255+ static const unsigned int _UNSRecipientChannel = 55555;
1256+ unsigned int _UNSSenderChannel;
1257+ bool _newNotification;
1258+ static std::string _PACKET_BODY_LENGTH;
1259+ static std::string _NOTIFICATION_HEADER;
1260 };
1261
1262 #endif
1263diff --git a/src/alertDescription.cpp b/src/alertDescription.cpp
1264new file mode 100644
1265index 0000000..f05f940
1266--- /dev/null
1267+++ b/src/alertDescription.cpp
1268@@ -0,0 +1,144 @@
1269+/*******************************************************************************
1270+ * Copyright (C) 2017 Intel Corporation. All rights reserved.
1271+ *
1272+ * Redistribution and use in source and binary forms, with or without
1273+ * modification, are permitted provided that the following conditions are met:
1274+ *
1275+ * - Redistributions of source code must retain the above copyright notice,
1276+ * this list of conditions and the following disclaimer.
1277+ *
1278+ * - Redistributions in binary form must reproduce the above copyright notice,
1279+ * this list of conditions and the following disclaimer in the documentation
1280+ * and/or other materials provided with the distribution.
1281+ *
1282+ * - Neither the name of Intel Corporation. nor the names of its
1283+ * contributors may be used to endorse or promote products derived from this
1284+ * software without specific prior written permission.
1285+ *
1286+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``AS IS''
1287+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
1288+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
1289+ * ARE DISCLAIMED. IN NO EVENT SHALL Intel Corporation. OR THE CONTRIBUTORS
1290+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
1291+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
1292+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
1293+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
1294+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
1295+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
1296+ * POSSIBILITY OF SUCH DAMAGE.
1297+ *******************************************************************************/
1298+#include "alertDescription.h"
1299+#include "miniXmlParser.h"
1300+#include <sstream>
1301+#include <fstream>
1302+#include "defaultAlerts.h"
1303+#include "types.h"
1304+
1305+bool AlertDescription::classInited = false;
1306+std::string AlertDescription::alertXmlFile = "/usr/local/share/xml/AMTAlerts.xml";
1307+std::string AlertDescription::alertXmlFile1 = "/usr/share/xml/AMTAlerts.xml";
1308+std::map<std::string,std::string> AlertDescription::alertDescriptionMap;
1309+
1310+void AlertDescription::initAlertDescription() {
1311+
1312+ char *value = NULL;
1313+ unsigned int valueLength = 0;
1314+ bool fromFile = false;
1315+ std::string alertIdArg;
1316+ std::stringstream ss;
1317+ std::string xmlData;
1318+ CDataLen id;
1319+ CDataLen arg;
1320+ CDataLen description;
1321+ MiniXmlParser xmlParser;
1322+ std::list<CDataLen>defaultAlertsList;
1323+ std::list<CDataLen>::iterator it;
1324+
1325+ do {
1326+ if (classInited) {
1327+ break;
1328+ }
1329+
1330+ std::ifstream is(alertXmlFile, std::ifstream::in);
1331+ if (is.good()) {
1332+ ss << is.rdbuf();
1333+ xmlData = ss.str();
1334+ fromFile = true;
1335+ } else {
1336+ std::ifstream _is(alertXmlFile1, std::ifstream::in);
1337+ if (_is.good()) {
1338+ ss << _is.rdbuf();
1339+ xmlData = ss.str();
1340+ fromFile = true;
1341+ }
1342+ _is.close();
1343+ }
1344+ is.close();
1345+
1346+ /* Parse alert descriptions from xml file, if file is absent use the default ones */
1347+ if (fromFile) {
1348+ /* From xml file */
1349+ if (xmlParser.parse((char*)xmlData.c_str(), xmlData.size()) == 0) {
1350+ /* Process alert xml of form
1351+ * <Alerts><Alert><Id>iAMT0052</Id><Arg>1</Arg></Alert> <Alert>...</Alert> ...<Alerts>
1352+ */
1353+ if (xmlParser.getXmlTagValue(xmlParser.getRootNode(), "Alerts", 6, NULL, 0, &value, &valueLength) == 0 ) {
1354+ while (xmlParser.getXmlTagValue(NULL, "Alert", 5, NULL, 0, &value, &valueLength) == 0) {
1355+ xmlParser.getXmlTagValue(NULL, "Id", 2, NULL, 0, &value, &valueLength);
1356+ id.data = value;
1357+ id.dataLength = valueLength;
1358+
1359+ xmlParser.getXmlTagValue(NULL, "Arg", 3, NULL, 0, &value, &valueLength);
1360+ arg.data = value;
1361+ arg.dataLength = valueLength;
1362+
1363+ alertIdArg = std::string(id.data, id.dataLength) + "-" + std::string(arg.data, arg.dataLength);
1364+
1365+ xmlParser.getXmlTagValue(NULL, "Message", 7, NULL, 0, &value, &valueLength);
1366+ alertDescriptionMap.insert(std::pair<std::string, std::string>(alertIdArg, std::string(value, valueLength)));
1367+ }
1368+ classInited = true;
1369+ }
1370+ } else {
1371+ PRINT("Failed to parse XML\n");
1372+ }
1373+ } else {
1374+ /* Using default XML alerts descriptions */
1375+ defaultAlertsList = Utils::split(DEFAULT_ALERTS , DEFAULT_ALERTS_LENGTH , ";", 1);
1376+ for (CDataLen alert: defaultAlertsList) {
1377+ std::list<CDataLen> alertIdDescription = Utils::split(alert.data, alert.dataLength, ":", 1);
1378+ if (alertIdDescription.size() >= 2) {
1379+ it = alertIdDescription.begin();
1380+ id.data = it->data;
1381+ id.dataLength = it->dataLength;
1382+ it++;
1383+ description.data = it->data;
1384+ description.dataLength = it->dataLength;
1385+ /* Add to std::map for faster retreival */
1386+ alertDescriptionMap.insert(std::pair<std::string, std::string>(std::string(id.data, id.dataLength),
1387+ std::string(description.data, description.dataLength)));
1388+ }
1389+ }
1390+ classInited = true;
1391+ }
1392+ } while(0);
1393+}
1394+
1395+
1396+std::string AlertDescription::getAlertDescription(std::string alert) {
1397+ CDataLen alertDescription;
1398+ std::map<std::string, std::string>::iterator it;
1399+
1400+ if (classInited == false) {
1401+ initAlertDescription();
1402+ }
1403+
1404+ if (classInited && alertDescriptionMap.empty() == false) {
1405+ it = alertDescriptionMap.find(alert);
1406+ if (it != alertDescriptionMap.end()) {
1407+ return it->second;
1408+ }
1409+ }
1410+
1411+ return "";
1412+};
1413diff --git a/src/alertDescription.h b/src/alertDescription.h
1414new file mode 100644
1415index 0000000..6413f2a
1416--- /dev/null
1417+++ b/src/alertDescription.h
1418@@ -0,0 +1,45 @@
1419+/*******************************************************************************
1420+ * Copyright (C) 2017 Intel Corporation. All rights reserved.
1421+ *
1422+ * Redistribution and use in source and binary forms, with or without
1423+ * modification, are permitted provided that the following conditions are met:
1424+ *
1425+ * - Redistributions of source code must retain the above copyright notice,
1426+ * this list of conditions and the following disclaimer.
1427+ *
1428+ * - Redistributions in binary form must reproduce the above copyright notice,
1429+ * this list of conditions and the following disclaimer in the documentation
1430+ * and/or other materials provided with the distribution.
1431+ *
1432+ * - Neither the name of Intel Corporation. nor the names of its
1433+ * contributors may be used to endorse or promote products derived from this
1434+ * software without specific prior written permission.
1435+ *
1436+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``AS IS''
1437+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
1438+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
1439+ * ARE DISCLAIMED. IN NO EVENT SHALL Intel Corporation. OR THE CONTRIBUTORS
1440+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
1441+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
1442+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
1443+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
1444+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
1445+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
1446+ * POSSIBILITY OF SUCH DAMAGE.
1447+ *******************************************************************************/
1448+#ifndef _ALERTDESCRIPTION_H
1449+#define _AlERTDESCRIPTION_H
1450+#include "utils.h"
1451+#include <string>
1452+#include <map>
1453+class AlertDescription {
1454+ protected:
1455+ static bool classInited;
1456+ static std::string alertXmlFile;
1457+ static std::string alertXmlFile1;
1458+ static void initAlertDescription();
1459+ static std::map<std::string, std::string> alertDescriptionMap;
1460+ public:
1461+ static std::string getAlertDescription(std::string alert);
1462+};
1463+#endif
1464diff --git a/src/alertIndication.cpp b/src/alertIndication.cpp
1465new file mode 100644
1466index 0000000..ed14abd
1467--- /dev/null
1468+++ b/src/alertIndication.cpp
1469@@ -0,0 +1,90 @@
1470+/*******************************************************************************
1471+ * Copyright (C) 2017 Intel Corporation. All rights reserved.
1472+ *
1473+ * Redistribution and use in source and binary forms, with or without
1474+ * modification, are permitted provided that the following conditions are met:
1475+ *
1476+ * - Redistributions of source code must retain the above copyright notice,
1477+ * this list of conditions and the following disclaimer.
1478+ *
1479+ * - Redistributions in binary form must reproduce the above copyright notice,
1480+ * this list of conditions and the following disclaimer in the documentation
1481+ * and/or other materials provided with the distribution.
1482+ *
1483+ * - Neither the name of Intel Corporation. nor the names of its
1484+ * contributors may be used to endorse or promote products derived from this
1485+ * software without specific prior written permission.
1486+ *
1487+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``AS IS''
1488+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
1489+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
1490+ * ARE DISCLAIMED. IN NO EVENT SHALL Intel Corporation. OR THE CONTRIBUTORS
1491+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
1492+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
1493+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
1494+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
1495+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
1496+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
1497+ * POSSIBILITY OF SUCH DAMAGE.
1498+ *******************************************************************************/
1499+#include "miniXmlParser.h"
1500+#include "alertIndication.h"
1501+#include <string.h>
1502+
1503+const char* AlertIndication::CLASS_URI = "http://schemas.dmtf.org/wbem/wscim/1/cim-schema/2/CIM_AlertIndication";
1504+void AlertIndication::initAlertIndication(char *ns, unsigned int nsLen) {
1505+
1506+ char *value = NULL;
1507+ unsigned int valueLen= 0;
1508+
1509+ if (xmlParser.getXmlTagValue(xmlParser.getRootNode(), "MessageID", strlen("MessageID"), ns, nsLen, &value, &valueLen) == 0) {
1510+ messageID.data = value;
1511+ messageID.dataLength = valueLen;
1512+ }
1513+
1514+ if (xmlParser.getXmlTagValue(xmlParser.getRootNode(), "MessageArguments", strlen("MessageArguments"), ns, nsLen, &value, &valueLen) == 0) {
1515+ messageArguments.data = value;
1516+ messageArguments.dataLength = valueLen;
1517+ }
1518+
1519+ if (xmlParser.getXmlTagValue(xmlParser.getRootNode(), "IndicationTime", strlen("IndicationTime"), ns, nsLen, &value, &valueLen) == 0) {
1520+ if (xmlParser.getXmlTagValue(NULL, "Datetime", strlen("Datetime"), NULL, 0, &value, &valueLen) == 0) {
1521+ indicationTime.data = value;
1522+ indicationTime.dataLength = valueLen;
1523+ }
1524+ }
1525+}
1526+
1527+int AlertIndication::initFromXml(char *buffer, unsigned int bufferLen) {
1528+
1529+ char *nsPrefix = NULL;
1530+ int rc = 0;
1531+ unsigned int nsPrefixLen = 0;
1532+
1533+ do {
1534+ if (buffer == NULL || bufferLen == 0) {
1535+ rc = -1;
1536+ break;
1537+ }
1538+
1539+ if (xmlParser.parse(buffer, bufferLen)) {
1540+ rc = -1;
1541+ break;
1542+ }
1543+
1544+ if (xmlParser.getNSPrefix(xmlParser.getRootNode(), (char*)CLASS_URI, CLASS_URI_LEN, &nsPrefix, &nsPrefixLen)) {
1545+ rc = -1;
1546+ break;
1547+ }
1548+
1549+ initAlertIndication(nsPrefix, nsPrefixLen);
1550+
1551+ } while(0);
1552+
1553+ return rc;
1554+}
1555+
1556+CDataLen AlertIndication::getMessageArguments() { return messageArguments; };
1557+CDataLen AlertIndication::getIndicationTime() { return indicationTime; };
1558+CDataLen AlertIndication::getMessageID() { return messageID; };
1559+
1560diff --git a/src/alertIndication.h b/src/alertIndication.h
1561new file mode 100644
1562index 0000000..cf6dc51
1563--- /dev/null
1564+++ b/src/alertIndication.h
1565@@ -0,0 +1,54 @@
1566+/*******************************************************************************
1567+ * Copyright (C) 2017 Intel Corporation. All rights reserved.
1568+ *
1569+ * Redistribution and use in source and binary forms, with or without
1570+ * modification, are permitted provided that the following conditions are met:
1571+ *
1572+ * - Redistributions of source code must retain the above copyright notice,
1573+ * this list of conditions and the following disclaimer.
1574+ *
1575+ * - Redistributions in binary form must reproduce the above copyright notice,
1576+ * this list of conditions and the following disclaimer in the documentation
1577+ * and/or other materials provided with the distribution.
1578+ *
1579+ * - Neither the name of Intel Corporation. nor the names of its
1580+ * contributors may be used to endorse or promote products derived from this
1581+ * software without specific prior written permission.
1582+ *
1583+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``AS IS''
1584+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
1585+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
1586+ * ARE DISCLAIMED. IN NO EVENT SHALL Intel Corporation. OR THE CONTRIBUTORS
1587+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
1588+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
1589+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
1590+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
1591+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
1592+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
1593+ * POSSIBILITY OF SUCH DAMAGE.
1594+ *******************************************************************************/
1595+#ifndef __ALERTINDICATION_H
1596+#define __ALERTINDICATION_H
1597+
1598+#include "utils.h"
1599+#include <map>
1600+
1601+class AlertIndication {
1602+ private:
1603+ MiniXmlParser xmlParser;
1604+ CDataLen messageArguments;
1605+ CDataLen indicationTime;
1606+ CDataLen messageID;
1607+ void initAlertIndication(char *ns, unsigned int nsLen);
1608+
1609+ public:
1610+ static const char* CLASS_URI;
1611+ static const int CLASS_URI_LEN = 69;
1612+ int initFromXml(char *buffer, unsigned int bufferLen);
1613+ CDataLen getMessageArguments();
1614+ CDataLen getMessageID();
1615+ CDataLen getIndicationTime();
1616+
1617+};
1618+
1619+#endif
1620diff --git a/src/defaultAlerts.h b/src/defaultAlerts.h
1621new file mode 100644
1622index 0000000..23283f8
1623--- /dev/null
1624+++ b/src/defaultAlerts.h
1625@@ -0,0 +1,43 @@
1626+#ifndef _DEFAULTALERTS_H
1627+#define _DEFAULTALERTS_H
1628+#define DEFAULT_ALERTS_LENGTH 6257
1629+#define DEFAULT_ALERTS "iAMT0001-:System Defense Policy triggered.;iAMT0002-:Agent Presence Agent not started.;iAMT0003-:Agent Presence Agent stopped.;iAMT0004-:Agent Presence: running.;\
1630+iAMT0005-:Agent Presence: expired.;iAMT0006-:Agent Presence: suspended.;iAMT0007-:Host software attempt to disable AMT Network link detected.;\
1631+iAMT0008-:Host software attempt to disable AMT Network link detected -- Host Network link blocked.;iAMT0009-:AMT clock or FLASH wear-out protection disabled.;\
1632+iAMT0010-:Intel(R) AMT Network Interface: Heuristics defense slow threshold trespassed.;iAMT0011-:Intel(R) AMT Network Interface: Heuristics defense fast threshold trespassed.;\
1633+iAMT0012-:Intel(R) AMT Network Interface: Heuristics defense factory defined threshold trespassed.;iAMT0013-:Intel(R) AMT Network Interface: Heuristics defense Encounter timeout expired.;\
1634+iAMT0014-:General certificate error.;iAMT0015-:Certificate expired.;iAMT0016-:No trusted root certificate.;iAMT0017-:Not configured to work with server certificate.;iAMT0018-:Certificate revoked.;\
1635+iAMT0019-:RSA exponent too large.;iAMT0020-:RSA modulus too large.;iAMT0021-:Unsupported digest.;iAMT0022-:Distinguished name too long.;iAMT0023-:Key usage missing.;\
1636+iAMT0024-:General SSL handshake error.;iAMT0025-:General 802.1x error.;iAMT0026-:AMT Diagnostic AlertEAC error - General NAC error.;\
1637+iAMT0027-:AMT Diagnostic AlertEAC error - attempt to get a NAC posture while AMT NAC is disabled.;iAMT0028-:AMT Diagnostic AlertEAC error - attempt to get a posture of an unsupported type.;\
1638+iAMT0029-:Audit log storage is 50% full.;iAMT0030-:Audit log storage is 75% full.;iAMT0031-:Audit log storage is 85% full.;iAMT0032-:Audit log storage is 95% full.;\
1639+iAMT0033-:Audit log storage is full.;iAMT0034-:Firmware Update Event - Partial.;iAMT0035-:Firmware Update Event - Failure.;iAMT0036-:Remote connectivity initiated.;\
1640+iAMT0037-:ME Presence event.;iAMT0038-0:AMT is being unprovisioned using BIOS command.;iAMT0038-1:AMT is being unprovisioned using Local MEI command.;\
1641+iAMT0038-2:AMT is being unprovisioned using Local WS-MAN/SOAP command.;iAMT0038-3:AMT is being unprovisioned using Remote WS-MAN/SOAP command.;\
1642+iAMT0050-:User Notification Alert - General Notification.;iAMT0050-16:User Notification Alert - Circuit Breaker notification (CB Drop TX filter hit.).;\
1643+iAMT0050-17:User Notification Alert - Circuit Breaker notification (CB Rate Limit TX filter hit.).;iAMT0050-18:User Notification Alert - Circuit Breaker notification (CB Drop RX filter hit.).;\
1644+iAMT0050-19:User Notification Alert - Circuit Breaker notification (CB Rate Limit RX filter hit.).;iAMT0050-32:User Notification Alert - EAC notification.;\
1645+iAMT0050-48:User Notification Alert - Remote diagnostics - (Remote Redirection session started - SOL).;iAMT0050-49:User Notification Alert - Remote diagnostics - (Remote Redirection session stopped - SOL).;\
1646+iAMT0050-50:User Notification Alert - Remote diagnostics. (Remote Redirection session started - IDE-R).;iAMT0050-51:User Notification Alert - Remote diagnostics. (Remote Redirection session stopped - IDE-R).;\
1647+iAMT0050-66:User Notification Alert - WLAN notification (Host profile mismatch - Management Interface ignored).;\
1648+iAMT0050-67:User Notification Alert - WLAN notification (Management device overrides host radio).;iAMT0050-68:User Notification Alert - WLAN notification (Host profile security mismatch).;\
1649+iAMT0050-69:User Notification Alert - WLAN notification (Management device relinquishes control over host Radio).;iAMT0051-:User Notification Alert - SecIo event.;\
1650+iAMT0051-0:User Notification Alert - SecIo event semaphore at host.;iAMT0051-1:User Notification Alert - semaphore at ME.;iAMT0051-2:User Notification Alert - SecIo event - semaphore timeout.;\
1651+iAMT0052-:User Notification Alert - KVM session event.;iAMT0052-0:User Notification Alert - KVM session requested.;iAMT0052-1:User Notification Alert - KVM session started.;\
1652+iAMT0052-2:User Notification Alert - KVM session stopped.;iAMT0053-:User Notification Alert - RCS notification.;\
1653+iAMT0053-50:User Notification Alert - RCS notification (HW button pressed. Connection initiated automatically).;\
1654+iAMT0053-52:User Notification Alert - RCS notification (HW button pressed. Connection wasn't initiated automatically).;iAMT0053-53:User Notification Alert - RCS notification (Contracts updated).;\
1655+iAMT0054-:User Notification Alert - WLAN notification. Wireless Profile sync enablement state changed.;iAMT0055-:User Notification Alert - Provisioning state change notification.;\
1656+iAMT0055-0:User Notification Alert - Provisioning state change notification - Pre-configuration.;iAMT0055-1:User Notification Alert - Provisioning state change notification - In configuration.;\
1657+iAMT0055-2:User Notification Alert - Provisioning state change notification - Post-configuration.;\
1658+iAMT0055-3:User Notification Alert - Provisioning state change notification - unprovision process has started.;iAMT0056-:User Notification Alert - System Defense change notification.;\
1659+iAMT0057-:User Notification Alert - Network State change notification.;iAMT0058-:User Notification Alert - Remote Access change notification.;\
1660+iAMT0058-1:User Notification Alert - Remote Access change notification - tunnel is closed.;iAMT0058-1:User Notification Alert - Remote Access change notification - tunnel is open.;\
1661+iAMT0059-:User Notification Alert - KVM enabled event.;iAMT0059-0:User Notification Alert - KVM enabled event - KVM disabled.;\
1662+iAMT0059-1:User Notification Alert - KVM enabled event - KVM enabled (both from MEBx and PTNI).;iAMT0060-:User Notification Alert - SecIO configuration event.;iAMT0061-:ME FW reset occurred.;\
1663+iAMT0062-:User Notification Alert - IpSyncEnabled event.;iAMT0062-0:User Notification Alert - IpSyncEnabled event - IpSync disabled.;\
1664+iAMT0062-1:User Notification Alert - IpSyncEnabled event - IpSync enabled.;iAMT0063-:User Notification Alert - HTTP Proxy sync enabled event.;\
1665+iAMT0063-0:User Notification Alert - HTTP Proxy sync enabled event - HTTP Proxy Sync disabled.;iAMT0063-1:User Notification Alert - HTTP Proxy sync enabled event - HTTP Proxy Sync enabled.;\
1666+iAMT0064-:User Notification Alert - User Consent event.;iAMT0064-1:User Notification Alert - User Consent event - User Consent granted.;\
1667+iAMT0064-2:User Notification Alert - User Consent event - User Consent ended.;"
1668+#endif
1669diff --git a/src/notifyDesktop.sh b/src/notifyDesktop.sh
1670new file mode 100644
1671index 0000000..06bfd97
1672--- /dev/null
1673+++ b/src/notifyDesktop.sh
1674@@ -0,0 +1,10 @@
1675+#!/bin/sh
1676+# get list of current users
1677+for x in $(who | sort -u -k1,1 | awk '{print $1}'); do
1678+ # send message to anyone on display 0
1679+ dbus_session_file=$(eval echo "~$x")/.dbus/session-bus/$(cat /var/lib/dbus/machine-id)-0
1680+ if [ -e "$dbus_session_file" ]; then
1681+ su -l "$x" -c "source '$dbus_session_file'; export DISPLAY=:0; notify-send -u critical -t 2000 '$1' '$2'"
1682+ fi
1683+done
1684+
1685diff --git a/src/tools/httpParser.cpp b/src/tools/httpParser.cpp
1686new file mode 100644
1687index 0000000..38d2901
1688--- /dev/null
1689+++ b/src/tools/httpParser.cpp
1690@@ -0,0 +1,101 @@
1691+/*******************************************************************************
1692+ * Copyright (C) 2017 Intel Corporation. All rights reserved.
1693+ *
1694+ * Redistribution and use in source and binary forms, with or without
1695+ * modification, are permitted provided that the following conditions are met:
1696+ *
1697+ * - Redistributions of source code must retain the above copyright notice,
1698+ * this list of conditions and the following disclaimer.
1699+ *
1700+ * - Redistributions in binary form must reproduce the above copyright notice,
1701+ * this list of conditions and the following disclaimer in the documentation
1702+ * and/or other materials provided with the distribution.
1703+ *
1704+ * - Neither the name of Intel Corporation. nor the names of its
1705+ * contributors may be used to endorse or promote products derived from this
1706+ * software without specific prior written permission.
1707+ *
1708+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``AS IS''
1709+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
1710+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
1711+ * ARE DISCLAIMED. IN NO EVENT SHALL Intel Corporation. OR THE CONTRIBUTORS
1712+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
1713+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
1714+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
1715+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
1716+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
1717+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
1718+ * POSSIBILITY OF SUCH DAMAGE.
1719+ *******************************************************************************/
1720+#include "httpParser.h"
1721+#include "utils.h"
1722+#include "types.h"
1723+
1724+int HttpParser::parse(char *buffer) {
1725+
1726+ std::vector<std::string> headerBody;
1727+ std::vector<std::string> header;
1728+ int rc = 0;
1729+ do {
1730+ if (buffer == NULL) {
1731+ rc = -1;
1732+ break;
1733+ }
1734+
1735+ headerBody = Utils::split(buffer, "\r\n\r\n");
1736+ if (headerBody.size() < 2)
1737+ {
1738+ PRINT("Failed to process httpHeader\n");
1739+ rc = -1;
1740+ break;
1741+ }
1742+
1743+ /* Entries in Header are seperated by \r\n */
1744+ header = Utils::split((char*)headerBody[0].c_str(), "\r\n");
1745+
1746+ /* First line in header is the the header line
1747+ * e.g. POST <path> HTTP/1.1
1748+ * e.g GET <path> HTTP/1.1
1749+ */
1750+ headerLine = header[0];
1751+
1752+ /* After headerline are the Fields
1753+ * e.g Content-Length:2204
1754+ */
1755+ for (unsigned int i=1; i< header.size(); i++) {
1756+ std::vector<std::string> field = Utils::split((char*)header[i].c_str(), ":");
1757+ if (field.size() < 2) {
1758+ rc = -1;
1759+ break;
1760+ }
1761+ headerFields.insert(std::pair<std::string, std::string>(field[0], field[1]));
1762+ }
1763+
1764+ if (rc) break;
1765+
1766+ body = headerBody[1];
1767+ } while(0);
1768+
1769+ return rc;
1770+}
1771+
1772+std::string HttpParser::getHeaderLine() {
1773+ return headerLine;
1774+}
1775+
1776+std::string HttpParser::getHeaderField(std::string field) {
1777+ std::map<std::string,std::string>::iterator it;
1778+ std::string fieldValue = "";
1779+
1780+ it = headerFields.find(field);
1781+ if (it != headerFields.end())
1782+ {
1783+ fieldValue = it->second;
1784+ }
1785+
1786+ return fieldValue;
1787+}
1788+
1789+std::string HttpParser::getBody() {
1790+ return body;
1791+}
1792diff --git a/src/tools/httpParser.h b/src/tools/httpParser.h
1793new file mode 100644
1794index 0000000..a82d82a
1795--- /dev/null
1796+++ b/src/tools/httpParser.h
1797@@ -0,0 +1,49 @@
1798+/*******************************************************************************
1799+ * Copyright (C) 2017 Intel Corporation. All rights reserved.
1800+ *
1801+ * Redistribution and use in source and binary forms, with or without
1802+ * modification, are permitted provided that the following conditions are met:
1803+ *
1804+ * - Redistributions of source code must retain the above copyright notice,
1805+ * this list of conditions and the following disclaimer.
1806+ *
1807+ * - Redistributions in binary form must reproduce the above copyright notice,
1808+ * this list of conditions and the following disclaimer in the documentation
1809+ * and/or other materials provided with the distribution.
1810+ *
1811+ * - Neither the name of Intel Corporation. nor the names of its
1812+ * contributors may be used to endorse or promote products derived from this
1813+ * software without specific prior written permission.
1814+ *
1815+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``AS IS''
1816+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
1817+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
1818+ * ARE DISCLAIMED. IN NO EVENT SHALL Intel Corporation. OR THE CONTRIBUTORS
1819+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
1820+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
1821+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
1822+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
1823+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
1824+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
1825+ * POSSIBILITY OF SUCH DAMAGE.
1826+ *******************************************************************************/
1827+#ifndef _HTTPPARSER_H
1828+#define _HTTPPARSER_H
1829+#include <vector>
1830+#include <map>
1831+#include <string>
1832+
1833+class HttpParser {
1834+
1835+ public:
1836+ int parse(char *buffer);
1837+ std::string getHeaderLine();
1838+ std::string getHeaderField(std::string field);
1839+ std::string getBody();
1840+ private:
1841+ std::string headerLine;
1842+ std::map<std::string, std::string> headerFields;
1843+ std::string body;
1844+
1845+};
1846+#endif
1847diff --git a/src/tools/miniXmlParser.cpp b/src/tools/miniXmlParser.cpp
1848new file mode 100644
1849index 0000000..f1f0503
1850--- /dev/null
1851+++ b/src/tools/miniXmlParser.cpp
1852@@ -0,0 +1,375 @@
1853+/*******************************************************************************
1854+ * Copyright (C) 2017 Intel Corporation. All rights reserved.
1855+ *
1856+ * Redistribution and use in source and binary forms, with or without
1857+ * modification, are permitted provided that the following conditions are met:
1858+ *
1859+ * - Redistributions of source code must retain the above copyright notice,
1860+ * this list of conditions and the following disclaimer.
1861+ *
1862+ * - Redistributions in binary form must reproduce the above copyright notice,
1863+ * this list of conditions and the following disclaimer in the documentation
1864+ * and/or other materials provided with the distribution.
1865+ *
1866+ * - Neither the name of Intel Corporation. nor the names of its
1867+ * contributors may be used to endorse or promote products derived from this
1868+ * software without specific prior written permission.
1869+ *
1870+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``AS IS''
1871+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
1872+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
1873+ * ARE DISCLAIMED. IN NO EVENT SHALL Intel Corporation. OR THE CONTRIBUTORS
1874+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
1875+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
1876+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
1877+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
1878+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
1879+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
1880+ * POSSIBILITY OF SUCH DAMAGE.
1881+ *******************************************************************************/
1882+#include "miniXmlParser.h"
1883+#include "utils.h"
1884+#include <string.h>
1885+#include <list>
1886+#include <stack>
1887+#include "types.h"
1888+
1889+MiniXmlParser::MiniXmlParser() {
1890+ rootNode = NULL;
1891+}
1892+
1893+MiniXmlParser::~MiniXmlParser() {
1894+ if (rootNode) {
1895+ deleteXmlTree(rootNode);
1896+ rootNode = NULL;
1897+ }
1898+}
1899+
1900+void MiniXmlParser::deleteXmlTree(XMLNode* rootNode) {
1901+ XMLNode* node = rootNode;
1902+ XMLNode* tempNode = NULL;
1903+
1904+ while (node != NULL) {
1905+ tempNode = node->childNode;
1906+ delete node;
1907+ node = tempNode;
1908+ }
1909+}
1910+
1911+int MiniXmlParser::validateXML(XMLNode const* rootNode) {
1912+ int rc = 0;
1913+ XMLNode* current = (XMLNode *)rootNode;
1914+ XMLNode* temp = NULL;
1915+ std::stack<XMLNode*> tagStack;
1916+
1917+ while (current != NULL) {
1918+ if (current->tagName == NULL) {
1919+ PRINT("ValidateXML failed, foung a empty tag\n");
1920+ rc = -1;
1921+ break;
1922+ }
1923+
1924+ if (memcmp(current->tagName, "!", 1) == 0) {
1925+ temp = current;
1926+ current = tagStack.empty()?NULL:tagStack.top();
1927+ if (current != NULL) {
1928+ current->childNode = temp->childNode;
1929+ } else {
1930+ current = temp;
1931+ }
1932+ } else if (current->startTag) {
1933+ current->parentNode = tagStack.empty()?NULL:tagStack.top();
1934+ tagStack.push(current);
1935+ } else {
1936+ if (tagStack.empty() == false) {
1937+ temp = tagStack.top();
1938+ tagStack.pop();
1939+ } else {
1940+ temp = NULL;
1941+ }
1942+ if (temp != NULL) {
1943+ if (temp->tagLength == current->tagLength && memcmp(temp->tagName, current->tagName, current->tagLength) == 0) {
1944+ if (current->childNode != NULL) {
1945+ if (current->childNode->startTag != 0) {
1946+ temp->siblingNode = current->childNode;
1947+ }
1948+ }
1949+ temp->closingTag = current;
1950+ current->startingTag = temp;
1951+ } else {
1952+ PRINT("ValidateXML failed, Illegal tag\n");
1953+ rc = -1;
1954+ break;
1955+ }
1956+ } else {
1957+ PRINT("ValidateXML failed, Illegal closing tag\n");
1958+ rc = -1;
1959+ break;
1960+ }
1961+ }
1962+ current = current->childNode;
1963+ }
1964+
1965+ if (tagStack.empty() == false) {
1966+ PRINT("ValidateXML failed, Incomplete XML\n");
1967+ rc = -1;
1968+ }
1969+
1970+ return rc;
1971+}
1972+
1973+int MiniXmlParser::parse(char* buffer, unsigned int bufferLength) {
1974+ int validXml = -1;
1975+ XMLNode* node = NULL;
1976+
1977+ node = _parse(buffer, bufferLength);
1978+ if (node) {
1979+ validXml = validateXML(node);
1980+ }
1981+ rootNode = node;
1982+ return validXml;
1983+}
1984+
1985+XMLNode* MiniXmlParser::_parse(char const* buffer, unsigned int bufferLength) {
1986+
1987+ char* tagName = NULL;
1988+ char* nsTag = NULL;
1989+ char* CommentEnd = NULL;
1990+
1991+ int tagLength = 0;
1992+ int startTag = 0;
1993+ int emptyTag = 0;
1994+ int nsLength = 0;
1995+ int i = 0;
1996+ int CommentIndex = 0;
1997+
1998+ std::list<CDataLen> xmlFields;
1999+ std::list<CDataLen> temp2;
2000+ std::list<CDataLen> tagValue;
2001+
2002+ XMLNode *rootNode = NULL;;
2003+ XMLNode *current = NULL;
2004+ XMLNode *newNode = NULL;
2005+ std::list<CDataLen>::iterator it;
2006+
2007+ if (buffer == NULL || bufferLength == 0) {
2008+ return NULL;
2009+ }
2010+
2011+ xmlFields = Utils::split(buffer, bufferLength, "<", 1);
2012+ for (CDataLen xmlField: xmlFields) {
2013+ if (xmlField.dataLength != 0 && memcmp(xmlField.data, "?", 1) != 0 && (xmlField.data > CommentEnd)) {
2014+ /*Parse XML comments and ignore it.*/
2015+ if (xmlField.dataLength > 3 && memcmp(xmlField.data, "!--", 3)==0) {
2016+ CommentIndex = 3;
2017+ while (((xmlField.data + CommentIndex) < (buffer + bufferLength)) && memcmp(xmlField.data + CommentIndex, "-->", 3) != 0) {
2018+ CommentIndex++;
2019+ }
2020+ CommentEnd = xmlField.data + CommentIndex;
2021+ continue;
2022+ } else {
2023+ emptyTag = 0;
2024+ /*if the first char is / after < then its ending tag, otherwise starting tag. ("</....") */
2025+ if (memcmp(xmlField.data, "/", 1) == 0) {
2026+ startTag = 0;
2027+ xmlField.data = xmlField.data + 1;
2028+ xmlField.dataLength -= 1;
2029+ temp2 = Utils::split(xmlField.data, xmlField.dataLength, ">", 1);
2030+ } else {
2031+
2032+ startTag = 1;
2033+ temp2 = Utils::split(xmlField.data, xmlField.dataLength, ">", 1);
2034+ if (temp2.front().dataLength > 0 && *(char*)(temp2.front().data-1) == '/') {
2035+ //".../>" are empty tags
2036+ emptyTag = 1;
2037+ }
2038+ }
2039+ }
2040+ /*split on ":" to get namespace:tagName*/
2041+ tagValue = Utils::split(temp2.front().data, temp2.front().dataLength, ":", 1);
2042+ if (tagValue.size() == 1) {
2043+ nsTag = NULL;
2044+ nsLength = 0;
2045+ tagName = tagValue.front().data;
2046+ tagLength = tagValue.front().dataLength;
2047+ } else {
2048+ it = tagValue.begin();
2049+ nsTag = it->data;
2050+ nsLength = it->dataLength;
2051+ it++;
2052+ tagName = it->data;
2053+ tagLength = it->dataLength;
2054+ }
2055+ tagValue.clear();
2056+ temp2.clear();
2057+
2058+ /*Parse for multiple ns:tags and recompute the first tagLength*/
2059+ for(i=0; i<tagLength; i++) {
2060+ if ((tagName[i] == ' ')||(tagName[i] == '/')||(tagName[i] == '>')||(tagName[i] == '\t')||(tagName[i] == '\r')||(tagName[i] == '\n')) {
2061+ if (i != 0) {
2062+ if (tagName[i]=='/') {
2063+ emptyTag = 1;
2064+ }
2065+ tagLength = i;
2066+ break;
2067+ }
2068+ }
2069+ }
2070+
2071+ /*Create XML Node, populate properties and add it to the list*/
2072+ if (tagLength != 0) {
2073+ newNode = new XMLNode();
2074+ newNode->tagName = tagName;
2075+ newNode->tagLength = tagLength;
2076+ newNode->startTag = startTag;
2077+ newNode->nsTag = nsTag;
2078+ newNode->nsLength = nsLength;
2079+
2080+
2081+ if (rootNode == NULL) {
2082+ rootNode = newNode;
2083+ }
2084+ else {
2085+ current->childNode = newNode;
2086+ }
2087+ current = newNode;
2088+
2089+ if (emptyTag) {
2090+ newNode = new XMLNode();
2091+ newNode->tagName = tagName;
2092+ newNode->tagLength = tagLength;
2093+ newNode->nsTag = nsTag;
2094+ newNode->nsLength = nsLength;
2095+
2096+ current->emptyTag = 1;
2097+ current->childNode = newNode;
2098+ current = newNode;
2099+ }
2100+ }
2101+
2102+ }
2103+ }
2104+
2105+ xmlFields.clear();
2106+ return rootNode;
2107+}
2108+
2109+/*
2110+ * Parse the XML Tree from rootNode and retrive value of a given key.
2111+ * If rootNode is passed as NULL, parsing resumes from last key retrieved node.
2112+ * Return 0 on Success , -1 otherwise.
2113+ * Inputs : XMLNode *rootNode, char *tag, unsigned int tagLen, char *ns, unsigned int nsLen
2114+ * Outputs: char** value, unsigned int *valueLen
2115+ */
2116+int MiniXmlParser::getXmlTagValue(XMLNode const* rootNode, char const* tag, unsigned int tagLen, char const* ns, unsigned int nsLen, char** value, unsigned int *valueLen)
2117+{
2118+
2119+ static XMLNode *cur = (XMLNode*) rootNode;
2120+ static XMLNode *pcur = cur;
2121+ char *pValue = NULL;
2122+ bool found = false;
2123+
2124+ if (tag == NULL) {
2125+ return -1;
2126+ }
2127+
2128+ if (rootNode != NULL) {
2129+ cur = (XMLNode *) rootNode;
2130+ pcur = cur;
2131+ }
2132+
2133+ while (cur != NULL) {
2134+ while (pcur != NULL) {
2135+ if (pcur->closingTag && memcmp((pcur->tagName), tag, tagLen) == 0) {
2136+ if (ns) {
2137+ if (memcmp(pcur->nsTag, ns, pcur->nsLength) == 0) {
2138+ found = true;
2139+ }
2140+ } else {
2141+ found = true;
2142+ }
2143+
2144+ if (found) {
2145+ pValue = strstr(pcur->tagName, ">") + 1;
2146+ if (pcur->closingTag->nsLength) {
2147+ *valueLen = pcur->closingTag->nsTag - pValue - 2;
2148+ } else {
2149+ *valueLen = pcur->closingTag->tagName - pValue - 2;
2150+ }
2151+ *value = pValue;
2152+ pcur = pcur->childNode;
2153+ return 0;
2154+ }
2155+ }
2156+ pcur = pcur->childNode;
2157+ }
2158+ cur = cur->siblingNode;
2159+ pcur = cur;
2160+ }
2161+
2162+ return -1;
2163+}
2164+
2165+/* Returns Namespace prefix of given URI namespace
2166+ * Inputs : XMLNode *node, char *uri, unsigned int uriLen
2167+ * Outputs: char **nsPrefix, unsigned int *nsPrefixLen
2168+ */
2169+int MiniXmlParser::getNSPrefix(XMLNode const* node, char const* uri, unsigned int uriLen, char **nsPrefix, unsigned int *nsPrefixLen) {
2170+
2171+ bool foundNS = false;;
2172+ char *tagEnd = NULL;
2173+ int rc = 0;
2174+ CDataLen tempNS;
2175+ CDataLen tempURI;
2176+ std::list<CDataLen> tags;
2177+ std::list<CDataLen> temp;
2178+ std::list<CDataLen> temp2;
2179+ std::list<CDataLen>::iterator it;
2180+
2181+ if (node == NULL || uri == NULL) {
2182+ rc = -1;
2183+ return rc;
2184+ }
2185+
2186+ tagEnd = strstr(node->tagName, ">");
2187+ if (tagEnd && nsPrefix != NULL && nsPrefixLen != NULL) {
2188+ tags = Utils::split(node->tagName, tagEnd - node->tagName, " ", 1);
2189+ for (CDataLen tag: tags) {
2190+ temp = Utils::split(tag.data, tag.dataLength, ":", 1);
2191+ if (temp.size() >= 2) {
2192+ it = temp.begin();
2193+ tempNS.data = it->data;
2194+ tempNS.dataLength = it->dataLength;
2195+ it++;
2196+
2197+ if (memcmp(tempNS.data, "xmlns", 5) == 0) {
2198+ temp2 = Utils::split(it->data, it->dataLength, "=", 1);
2199+ if (temp2.size() >= 2) {
2200+ it = temp2.begin();
2201+ tempNS.data = it->data;
2202+ tempNS.dataLength = it->dataLength;
2203+ it++;
2204+ }
2205+ }
2206+ //Ignore if first character is " or '
2207+ if (it->data[0] == 34 || it->data[0] == 39) {
2208+ it->data = it->data + 1;
2209+ }
2210+
2211+ if (memcmp(it->data, uri, uriLen) == 0) {
2212+ foundNS = true;
2213+ break;
2214+ }
2215+ }
2216+ }
2217+ } else {
2218+ rc = -1;
2219+ }
2220+
2221+ if (rc == 0 && foundNS) {
2222+ *nsPrefix = tempNS.data;
2223+ *nsPrefixLen = tempNS.dataLength;
2224+ }
2225+
2226+ return rc;
2227+}
2228diff --git a/src/tools/miniXmlParser.h b/src/tools/miniXmlParser.h
2229new file mode 100644
2230index 0000000..ae0d234
2231--- /dev/null
2232+++ b/src/tools/miniXmlParser.h
2233@@ -0,0 +1,51 @@
2234+/*******************************************************************************
2235+ * Copyright (C) 2017 Intel Corporation. All rights reserved.
2236+ *
2237+ * Redistribution and use in source and binary forms, with or without
2238+ * modification, are permitted provided that the following conditions are met:
2239+ *
2240+ * - Redistributions of source code must retain the above copyright notice,
2241+ * this list of conditions and the following disclaimer.
2242+ *
2243+ * - Redistributions in binary form must reproduce the above copyright notice,
2244+ * this list of conditions and the following disclaimer in the documentation
2245+ * and/or other materials provided with the distribution.
2246+ *
2247+ * - Neither the name of Intel Corporation. nor the names of its
2248+ * contributors may be used to endorse or promote products derived from this
2249+ * software without specific prior written permission.
2250+ *
2251+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``AS IS''
2252+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
2253+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
2254+ * ARE DISCLAIMED. IN NO EVENT SHALL Intel Corporation. OR THE CONTRIBUTORS
2255+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
2256+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
2257+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
2258+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
2259+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
2260+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
2261+ * POSSIBILITY OF SUCH DAMAGE.
2262+ *******************************************************************************/
2263+#ifndef _MINIXMLPARSER_H
2264+#define _MINIXMLPARSER_H
2265+#include <iostream>
2266+#include "xmlNode.h"
2267+
2268+class MiniXmlParser {
2269+ public:
2270+ MiniXmlParser();
2271+ ~MiniXmlParser();
2272+ int parse(char* buffer, unsigned int bufferLength);
2273+ XMLNode* getRootNode() { return rootNode; };
2274+ int getXmlTagValue(XMLNode const* rootNode, char const *tag, unsigned int tagLen, char const* ns, unsigned int nsLen, char** value, unsigned int *valueLen);
2275+ int getNSPrefix(XMLNode const* nonde, char const* uri, unsigned int uriLen, char **nsPrefix, unsigned int *nsPrefixLen);
2276+
2277+ private:
2278+ XMLNode* rootNode;
2279+ XMLNode* _parse(char const* buffer, unsigned int bufferLength);
2280+ /* Validates if the XML is well formed and sets up parent sibling pointers */
2281+ int validateXML(XMLNode const* rootNode);
2282+ void deleteXmlTree(XMLNode *root);
2283+};
2284+#endif
2285diff --git a/src/tools/utils.cpp b/src/tools/utils.cpp
2286new file mode 100644
2287index 0000000..ec20b28
2288--- /dev/null
2289+++ b/src/tools/utils.cpp
2290@@ -0,0 +1,185 @@
2291+/*******************************************************************************
2292+ * Copyright (C) 2017 Intel Corporation. All rights reserved.
2293+ *
2294+ * Redistribution and use in source and binary forms, with or without
2295+ * modification, are permitted provided that the following conditions are met:
2296+ *
2297+ * - Redistributions of source code must retain the above copyright notice,
2298+ * this list of conditions and the following disclaimer.
2299+ *
2300+ * - Redistributions in binary form must reproduce the above copyright notice,
2301+ * this list of conditions and the following disclaimer in the documentation
2302+ * and/or other materials provided with the distribution.
2303+ *
2304+ * - Neither the name of Intel Corporation. nor the names of its
2305+ * contributors may be used to endorse or promote products derived from this
2306+ * software without specific prior written permission.
2307+ *
2308+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``AS IS''
2309+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
2310+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
2311+ * ARE DISCLAIMED. IN NO EVENT SHALL Intel Corporation. OR THE CONTRIBUTORS
2312+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
2313+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
2314+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
2315+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
2316+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
2317+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
2318+ * POSSIBILITY OF SUCH DAMAGE.
2319+ *******************************************************************************/
2320+#include <string.h>
2321+#include "utils.h"
2322+#include <syslog.h>
2323+#include <unistd.h>
2324+
2325+std::vector<std::string> Utils::split(char const * str, char const * delim) {
2326+ char* tok = (char*)str;
2327+ char* ptok = tok;
2328+ int delimLength = 0;
2329+ std::vector<std::string> splittedStrings;
2330+
2331+ do {
2332+ if (str == NULL) {
2333+ break;
2334+ }
2335+
2336+ if (delim == NULL) {
2337+ splittedStrings.push_back(std::string(str));
2338+ break;
2339+ }
2340+
2341+ delimLength = strlen(delim);
2342+ tok = strstr(ptok, delim);
2343+ while (tok) {
2344+ if (ptok != tok) {
2345+ splittedStrings.push_back(std::string(ptok, tok-ptok));
2346+ }
2347+ ptok = tok + delimLength;
2348+ tok = strstr(ptok, delim);
2349+ }
2350+
2351+ if (ptok != str+strlen(str)) {
2352+ splittedStrings.push_back(std::string(ptok, strlen(ptok)));
2353+ }
2354+ } while(0);
2355+ return splittedStrings;
2356+}
2357+
2358+
2359+char* Utils::strnstr(char const* haystack, unsigned int haystackLength, char const* needle, unsigned int needleLength) {
2360+
2361+ char* needleInHaystack = NULL;
2362+ unsigned int j;
2363+ do {
2364+ if (haystack == NULL || needle == NULL) {
2365+ break;
2366+ }
2367+
2368+ for (unsigned int i = 0; i < haystackLength; i++) {
2369+ if (haystack[i] == '\0' || ((haystackLength - i) < needleLength)) {
2370+ break;
2371+ }
2372+
2373+ for (j = 0; j < needleLength; j++) {
2374+ if (haystack[i + j] != needle[j]) {
2375+ break;
2376+ }
2377+ }
2378+
2379+ if (j == needleLength) {
2380+ //Found needle in haystack
2381+ needleInHaystack = (char*)&haystack[i];
2382+ break;
2383+ }
2384+ }
2385+ } while(0);
2386+ return needleInHaystack;
2387+}
2388+
2389+std::list<CDataLen> Utils::split(char const* str, unsigned int strLength, char const* delim, unsigned int delimLength) {
2390+ char* tok = (char*)str;
2391+ char* ptok = tok;
2392+ std::list<CDataLen> splittedStrings;
2393+ CDataLen dataLen;
2394+
2395+ do {
2396+ if (str == NULL) {
2397+ break;
2398+ }
2399+
2400+ if (delim == NULL) {
2401+ dataLen.data = (char*)str;
2402+ dataLen.dataLength = strLength;
2403+ splittedStrings.push_back(dataLen);
2404+ break;
2405+ }
2406+
2407+ tok = Utils::strnstr(str, strLength, delim, delimLength);
2408+ while (tok) {
2409+ dataLen.data = ptok;
2410+ dataLen.dataLength = tok-ptok;
2411+ if (ptok!=tok) {
2412+ splittedStrings.push_back(dataLen);
2413+ }
2414+ ptok = tok + delimLength;
2415+ tok = Utils::strnstr(ptok, (str + strLength - ptok), delim, delimLength);
2416+ }
2417+
2418+ if (ptok != (str + strLength)) {
2419+ dataLen.data = ptok;
2420+ dataLen.dataLength = str + strLength - ptok;
2421+ splittedStrings.push_back(dataLen);
2422+ }
2423+ } while (0);
2424+ return splittedStrings;
2425+}
2426+
2427+std::string Utils::DEFAULT_NOTIFY_CMD="export DISPLAY=:0; notify-send -u critical -t 2000 ";
2428+std::string Utils::NOTIFY_DESKTOP_SCRIPT="/usr/local/bin/notifyDesktop.sh";
2429+std::string Utils::NOTIFY_DESKTOP_SCRIPT1="/usr/bin/notifyDesktop.sh";
2430+
2431+void Utils::notifyDesktop(std::string header, std::string body, bool logInSyslog) {
2432+
2433+ std::string notifyCMD;
2434+
2435+ if (! access (NOTIFY_DESKTOP_SCRIPT.c_str(), X_OK)) {
2436+ notifyCMD = NOTIFY_DESKTOP_SCRIPT + " '" + header + "' '" + body + "'";
2437+ } else if (! access (NOTIFY_DESKTOP_SCRIPT1.c_str(), X_OK)) {
2438+ notifyCMD = NOTIFY_DESKTOP_SCRIPT1 + " '" + header + "' '" + body + "'";
2439+ } else {
2440+ notifyCMD = DEFAULT_NOTIFY_CMD + " '" + header + "' '" + body + "'";
2441+ }
2442+
2443+ if (logInSyslog) {
2444+ syslog(LOG_INFO, "%s %s\n", header.c_str(), body.c_str());
2445+ }
2446+
2447+ system(notifyCMD.c_str());
2448+}
2449+
2450+
2451+std::string Utils::format(const char *format , ...) {
2452+ char* buffer = NULL;
2453+ int bufferLength = 512;
2454+ int _bufferLength = 0;
2455+ va_list vl;
2456+ std::string formattedString("");
2457+
2458+ buffer = new char[bufferLength];
2459+ if (buffer) {
2460+ va_start(vl, format);
2461+
2462+ _bufferLength = vsnprintf(buffer, bufferLength, format, vl);
2463+ if (bufferLength <= _bufferLength) {
2464+ delete[] buffer;
2465+ buffer = new char[_bufferLength + 1];
2466+ _bufferLength = vsnprintf(buffer, _bufferLength, format, vl);
2467+ }
2468+
2469+ formattedString = std::string(buffer);
2470+ va_end(vl);
2471+ delete[] buffer;
2472+ }
2473+
2474+ return formattedString;
2475+}
2476diff --git a/src/tools/utils.h b/src/tools/utils.h
2477new file mode 100644
2478index 0000000..a7568fa
2479--- /dev/null
2480+++ b/src/tools/utils.h
2481@@ -0,0 +1,57 @@
2482+/*******************************************************************************
2483+ * Copyright (C) 2017 Intel Corporation. All rights reserved.
2484+ *
2485+ * Redistribution and use in source and binary forms, with or without
2486+ * modification, are permitted provided that the following conditions are met:
2487+ *
2488+ * - Redistributions of source code must retain the above copyright notice,
2489+ * this list of conditions and the following disclaimer.
2490+ *
2491+ * - Redistributions in binary form must reproduce the above copyright notice,
2492+ * this list of conditions and the following disclaimer in the documentation
2493+ * and/or other materials provided with the distribution.
2494+ *
2495+ * - Neither the name of Intel Corporation. nor the names of its
2496+ * contributors may be used to endorse or promote products derived from this
2497+ * software without specific prior written permission.
2498+ *
2499+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``AS IS''
2500+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
2501+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
2502+ * ARE DISCLAIMED. IN NO EVENT SHALL Intel Corporation. OR THE CONTRIBUTORS
2503+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
2504+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
2505+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
2506+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
2507+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
2508+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
2509+ * POSSIBILITY OF SUCH DAMAGE.
2510+ *******************************************************************************/
2511+
2512+#ifndef __UTILS_H
2513+#define __UTILS_H
2514+#include <iostream>
2515+#include <vector>
2516+#include <list>
2517+#include <string>
2518+#include <cstdarg>
2519+
2520+class CDataLen {
2521+ public:
2522+ char* data;
2523+ int dataLength;
2524+ CDataLen() { data = NULL; dataLength = 0; };
2525+};
2526+
2527+class Utils {
2528+ public:
2529+ static std::string NOTIFY_DESKTOP_SCRIPT;
2530+ static std::string NOTIFY_DESKTOP_SCRIPT1;
2531+ static std::string DEFAULT_NOTIFY_CMD;
2532+ static std::vector<std::string> split(char const* str, char const * delim);
2533+ static std::list<CDataLen> split(char const* str, unsigned int strLength, char const* delim, unsigned int delimLength);
2534+ static char* strnstr(char const* haystack, unsigned int haystackLength, char const* needle, unsigned int needleLength);
2535+ static void notifyDesktop(std::string header, std::string body, bool logInSyslog);
2536+ static std::string format(const char *format , ...);
2537+};
2538+#endif
2539diff --git a/src/tools/xmlNode.cpp b/src/tools/xmlNode.cpp
2540new file mode 100644
2541index 0000000..827cd3f
2542--- /dev/null
2543+++ b/src/tools/xmlNode.cpp
2544@@ -0,0 +1,45 @@
2545+/*******************************************************************************
2546+ * Copyright (C) 2017 Intel Corporation. All rights reserved.
2547+ *
2548+ * Redistribution and use in source and binary forms, with or without
2549+ * modification, are permitted provided that the following conditions are met:
2550+ *
2551+ * - Redistributions of source code must retain the above copyright notice,
2552+ * this list of conditions and the following disclaimer.
2553+ *
2554+ * - Redistributions in binary form must reproduce the above copyright notice,
2555+ * this list of conditions and the following disclaimer in the documentation
2556+ * and/or other materials provided with the distribution.
2557+ *
2558+ * - Neither the name of Intel Corporation. nor the names of its
2559+ * contributors may be used to endorse or promote products derived from this
2560+ * software without specific prior written permission.
2561+ *
2562+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``AS IS''
2563+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
2564+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
2565+ * ARE DISCLAIMED. IN NO EVENT SHALL Intel Corporation. OR THE CONTRIBUTORS
2566+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
2567+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
2568+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
2569+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
2570+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
2571+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
2572+ * POSSIBILITY OF SUCH DAMAGE.
2573+ *******************************************************************************/
2574+#include "xmlNode.h"
2575+#include <iostream>
2576+XMLNode::XMLNode() {
2577+ tagName = NULL;
2578+ nsTag = NULL;
2579+ tagLength = 0;
2580+ nsLength = 0;
2581+ startTag = 0;
2582+ emptyTag = 0;
2583+
2584+ closingTag = NULL;
2585+ startingTag = NULL;
2586+ parentNode = NULL;
2587+ childNode = NULL;
2588+ siblingNode = NULL;
2589+}
2590diff --git a/src/tools/xmlNode.h b/src/tools/xmlNode.h
2591new file mode 100644
2592index 0000000..4a6c91e
2593--- /dev/null
2594+++ b/src/tools/xmlNode.h
2595@@ -0,0 +1,49 @@
2596+/*******************************************************************************
2597+ * Copyright (C) 2017 Intel Corporation. All rights reserved.
2598+ *
2599+ * Redistribution and use in source and binary forms, with or without
2600+ * modification, are permitted provided that the following conditions are met:
2601+ *
2602+ * - Redistributions of source code must retain the above copyright notice,
2603+ * this list of conditions and the following disclaimer.
2604+ *
2605+ * - Redistributions in binary form must reproduce the above copyright notice,
2606+ * this list of conditions and the following disclaimer in the documentation
2607+ * and/or other materials provided with the distribution.
2608+ *
2609+ * - Neither the name of Intel Corporation. nor the names of its
2610+ * contributors may be used to endorse or promote products derived from this
2611+ * software without specific prior written permission.
2612+ *
2613+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``AS IS''
2614+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
2615+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
2616+ * ARE DISCLAIMED. IN NO EVENT SHALL Intel Corporation. OR THE CONTRIBUTORS
2617+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
2618+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
2619+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
2620+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
2621+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
2622+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
2623+ * POSSIBILITY OF SUCH DAMAGE.
2624+ *******************************************************************************/
2625+#ifndef __XMLNODE_H
2626+#define __XMLNODE_H
2627+class XMLNode {
2628+
2629+ public:
2630+ char* tagName;
2631+ char* nsTag;
2632+ int tagLength;
2633+ int nsLength;
2634+ int startTag;
2635+ int emptyTag;
2636+
2637+ XMLNode* closingTag;
2638+ XMLNode* startingTag;
2639+ XMLNode* parentNode;
2640+ XMLNode* childNode;
2641+ XMLNode* siblingNode;
2642+ XMLNode();
2643+};
2644+#endif
2645--
26462.9.3
2647
diff --git a/common/recipes-bsp/amt/lms7_7.1.20.bb b/common/recipes-bsp/amt/lms7_7.1.20.bb
new file mode 100644
index 0000000..eca3681
--- /dev/null
+++ b/common/recipes-bsp/amt/lms7_7.1.20.bb
@@ -0,0 +1,58 @@
1DESCRIPTION = "Intel Local Manageability Service allows applications \
2to access the Intel Active Management Technology (AMT) firmware via \
3the Intel Management Engine Interface (MEI)."
4HOMEPAGE = "http://software.intel.com/en-us/articles/download-the-latest-intel-amt-open-source-drivers"
5
6LICENSE = "BSD_LMS"
7
8PR = "r0"
9BPN="lms"
10PV_SUB = "25"
11SRC_URI = "http://software.intel.com/sites/default/files/m/4/e/a/9/b/37962-${BPN}_${PV}.${PV_SUB}.zip \
12 file://atnetworktool-printf-fix.patch \
13 file://readlink-declaration.patch \
14 file://0001-Protocol.cpp-Add-whitespace-for-gcc6-compile-error.patch \
15 file://0001-Include-sys-select.h-for-fd_set.patch \
16 file://0002-Use-proper-netinet-in.h-API.patch \
17 "
18
19LOCALSRC = "file://${WORKDIR}/outputdir/${BPN}-${PV}-${PV_SUB}.tar.gz"
20
21COMPATIBLE_HOST = '(i.86|x86_64).*-linux'
22
23LIC_FILES_CHKSUM = "file://COPYING;md5=7264184cf88d9f27b719a9656255b47b"
24
25SRC_URI[md5sum] = "687b76e78bfdbcf567c0e842c1fe240a"
26SRC_URI[sha256sum] = "cc0457f0044e924794bb1aeae9a72c28666a525cd8a963d0d92970222946e75b"
27
28inherit autotools update-rc.d
29
30INITSCRIPT_NAME = "lms7"
31INITSCRIPT_PARAMS = "defaults"
32
33python do_unpack() {
34 s = d.getVar('S', True)
35 d.setVar('S', '${WORKDIR}/outputdir')
36 bb.build.exec_func('base_do_unpack', d)
37 # temorarily change SRC_URI for unpack
38 src_uri = d.getVar('SRC_URI', True)
39 d.setVar('SRC_URI', '${LOCALSRC}')
40 d.setVar('S', s)
41 bb.build.exec_func('base_do_unpack', d)
42 d.setVar('SRC_URI', src_uri)
43}
44
45
46do_install_append () {
47 mv ${D}/${sbindir}/lms ${D}/${sbindir}/lms7
48 install -d ${D}${sysconfdir}/init.d
49 # The configure script looks at the host to decide where to put init
50 # scripts, so move it at the same time as renaming it.
51 if test -f ${D}${sysconfdir}/rc.d/init.d/lms ; then
52 mv ${D}${sysconfdir}/rc.d/init.d/lms ${D}${sysconfdir}/init.d/${INITSCRIPT_NAME}
53 else
54 mv ${D}${sysconfdir}/init.d/lms ${D}${sysconfdir}/init.d/${INITSCRIPT_NAME}
55 fi
56 sed -i 's/^NAME=lms/NAME=lms7/' ${D}${sysconfdir}/init.d/${INITSCRIPT_NAME}
57 rmdir ${D}${datadir} || :
58}
diff --git a/common/recipes-bsp/amt/lms8_8.0.0-7.bb b/common/recipes-bsp/amt/lms8_8.0.0-7.bb
new file mode 100644
index 0000000..9b37b9b
--- /dev/null
+++ b/common/recipes-bsp/amt/lms8_8.0.0-7.bb
@@ -0,0 +1,46 @@
1DESCRIPTION = "Intel Local Manageability Service allows applications \
2to access the Intel Active Management Technology (AMT) firmware via \
3the Intel Management Engine Interface (MEI)."
4HOMEPAGE = "http://software.intel.com/en-us/articles/download-the-latest-intel-amt-open-source-drivers"
5
6LICENSE = "BSD_LMS"
7
8PR = "r0"
9BPN="lms"
10SRC_URI = "http://software.intel.com/sites/default/files/${BPN}-${PV}.tar.gz \
11 file://readlink-declaration.patch \
12 file://0001-Protocol.cpp-Add-whitespace-for-gcc6-compile-error.patch \
13 file://0001-Include-sys-select.h-for-fd_set.patch \
14 file://0002-Use-proper-netinet-in.h-API.patch \
15 file://0003-Fix-device-file-referance-to-dev-mei0-remove-select.patch \
16 file://0004-Intel-AMT-ME-real-time-notification-infra.patch \
17 "
18
19FILES_${PN} += "${datadir}/xml/AMTAlerts.xml"
20
21COMPATIBLE_HOST = '(i.86|x86_64).*-linux'
22
23LIC_FILES_CHKSUM = "file://COPYING;md5=ec77c894e8a1a89fa07aed2c76680ab8"
24
25SRC_URI[md5sum] = "3cbd027a0e6e9ced8238478b24cde3c6"
26SRC_URI[sha256sum] = "7077db6f2f381e67cb37565b20c40ff0c7d3f98f014e65622a4b4b66c2b1d637"
27
28inherit autotools update-rc.d
29
30INITSCRIPT_NAME = "lms8"
31INITSCRIPT_PARAMS = "defaults"
32
33
34do_install_append () {
35 mv ${D}/${sbindir}/lms ${D}/${sbindir}/lms8
36 install -d ${D}${sysconfdir}/init.d
37 # The configure script looks at the host to decide where to put init
38 # scripts, so move it at the same time as renaming it.
39 if test -f ${D}${sysconfdir}/rc.d/init.d/lms ; then
40 mv ${D}${sysconfdir}/rc.d/init.d/lms ${D}${sysconfdir}/init.d/${INITSCRIPT_NAME}
41 else
42 mv ${D}${sysconfdir}/init.d/lms ${D}${sysconfdir}/init.d/${INITSCRIPT_NAME}
43 fi
44 sed -i 's/^NAME=lms/NAME=lms8/' ${D}${sysconfdir}/init.d/${INITSCRIPT_NAME}
45 rmdir ${D}${datadir} || :
46}
diff --git a/common/recipes-bsp/efilinux/efilinux/0001-Disable-address-of-packed-member-warning.patch b/common/recipes-bsp/efilinux/efilinux/0001-Disable-address-of-packed-member-warning.patch
new file mode 100644
index 0000000..afb9951
--- /dev/null
+++ b/common/recipes-bsp/efilinux/efilinux/0001-Disable-address-of-packed-member-warning.patch
@@ -0,0 +1,33 @@
1From 7c171c1813651a3a02ad2cda361b42ebc7ce324d Mon Sep 17 00:00:00 2001
2From: Khem Raj <raj.khem@gmail.com>
3Date: Sat, 12 Aug 2017 10:34:19 -0700
4Subject: [PATCH 1/2] Disable address-of-packed-member warning
5
6Clang complains so make it happy
7
8loaders/bzimage/bzimage.c:346:55: error: taking address of packed member 'base' of class or structure 'dt_addr_t' may result in an unaligned pointer value [-Werror,-Waddress-of-packed-member]
9 err = emalloc(gdt.limit, 8, (EFI_PHYSICAL_ADDRESS *)&gdt.base);
10
11Signed-off-by: Khem Raj <raj.khem@gmail.com>
12---
13Upstream-Status: Pending
14
15 Makefile | 2 +-
16 1 file changed, 1 insertion(+), 1 deletion(-)
17
18diff --git a/Makefile b/Makefile
19index a955e34..ff1b79b 100644
20--- a/Makefile
21+++ b/Makefile
22@@ -61,7 +61,7 @@ ifeq ($(ARCH),ia32)
23 endif
24 endif
25 ifeq ($(ARCH),x86_64)
26- CFLAGS += -mno-red-zone
27+ CFLAGS += -mno-red-zone -Wno-address-of-packed-member
28 endif
29
30 LDFLAGS=-T $(LDSCRIPT) -Bsymbolic -shared -nostdlib -znocombreloc \
31--
322.14.1
33
diff --git a/common/recipes-bsp/efilinux/efilinux/0002-initialize-char-pointers.patch b/common/recipes-bsp/efilinux/efilinux/0002-initialize-char-pointers.patch
new file mode 100644
index 0000000..127c187
--- /dev/null
+++ b/common/recipes-bsp/efilinux/efilinux/0002-initialize-char-pointers.patch
@@ -0,0 +1,33 @@
1From 49053e4ff0f3550d019cdad8a93677c18fc69791 Mon Sep 17 00:00:00 2001
2From: Khem Raj <raj.khem@gmail.com>
3Date: Sat, 12 Aug 2017 10:35:09 -0700
4Subject: [PATCH 2/2] initialize char pointers
5
6Clang complains about using them without initializing
7
8Signed-off-by: Khem Raj <raj.khem@gmail.com>
9---
10Upstream-Status: Pending
11
12 entry.c | 4 ++--
13 1 file changed, 2 insertions(+), 2 deletions(-)
14
15diff --git a/entry.c b/entry.c
16index 0aa6cdd..23ba51e 100644
17--- a/entry.c
18+++ b/entry.c
19@@ -402,9 +402,9 @@ efi_main(EFI_HANDLE image, EFI_SYSTEM_TABLE *_table)
20 WCHAR *error_buf;
21 EFI_STATUS err;
22 EFI_LOADED_IMAGE *info;
23- CHAR16 *name, *options;
24+ CHAR16 *name = NULL, *options;
25 UINT32 options_size;
26- char *cmdline;
27+ char *cmdline = NULL;
28
29 InitializeLib(image, _table);
30 sys_table = _table;
31--
322.14.1
33
diff --git a/common/recipes-bsp/efilinux/efilinux_1.1.bb b/common/recipes-bsp/efilinux/efilinux_1.1.bb
new file mode 100644
index 0000000..63e80f8
--- /dev/null
+++ b/common/recipes-bsp/efilinux/efilinux_1.1.bb
@@ -0,0 +1,38 @@
1DESCRIPTION = "A UEFI OS loader"
2LICENSE = "BSD-2-Clause"
3LIC_FILES_CHKSUM = "file://efilinux.h;beginline=5;endline=27;md5=f8d56e644672ac63fd81b55c205283ad"
4
5DEPENDS = "gnu-efi"
6
7inherit deploy
8
9SRCREV = "a995826f9e43f1134baea61610eafd8c173bb776"
10PV = "1.1+git${SRCPV}"
11
12SRC_URI = "git://git.kernel.org/pub/scm/boot/efilinux/efilinux.git \
13 file://0001-Disable-address-of-packed-member-warning.patch \
14 file://0002-initialize-char-pointers.patch \
15 "
16
17S = "${WORKDIR}/git"
18
19COMPATIBLE_HOST = '(x86_64|i.86).*-(linux|freebsd.*)'
20
21EXTRA_OEMAKE = "INCDIR=${STAGING_INCDIR} LIBDIR=${STAGING_LIBDIR}"
22
23# syslinux uses $LD for linking, strip `-Wl,' so it can work
24export LDFLAGS = "`echo $LDFLAGS | sed 's/-Wl,//g'`"
25
26do_deploy () {
27 install ${S}/efilinux.efi ${DEPLOYDIR}/efilinux.efi
28}
29addtask deploy before do_build after do_compile
30
31python () {
32 ccargs = d.getVar('TUNE_CCARGS').split()
33 if '-mx32' in ccargs:
34 # use x86_64 EFI ABI
35 ccargs.remove('-mx32')
36 ccargs.append('-m64')
37 d.setVar('TUNE_CCARGS', ' '.join(ccargs))
38}
diff --git a/common/recipes-bsp/formfactor/formfactor/machconfig b/common/recipes-bsp/formfactor/formfactor/machconfig
new file mode 100644
index 0000000..73695fa
--- /dev/null
+++ b/common/recipes-bsp/formfactor/formfactor/machconfig
@@ -0,0 +1,39 @@
1# Note: superuser permission is required to run usbhid-dump
2# successfully.
3
4# HEX keys are according to the USB HID spec and USB HID usage table
5# We can add more keys as needed in the future.
6
7# This test may not be very accurate, as we only look for the first
8# two lines of a descriptor section. Example:
9#
10# 001:003:000:DESCRIPTOR 1460501386.337809
11# 05 01 09 02 A1 01 09 01 A1 00 05 09 19 01 29 03
12# 15 00 25 01 95 03 75 01 81 02 .. .. .. .. .. ..
13# .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..
14#
15# By doing so we eliminate false matches when HEX keys are in the lines
16# in the middle of the whole descriptor section.
17
18if type usbhid-dump &>/dev/null; then
19 if USBHID_DUMP_OUTPUT=$(usbhid-dump -e descriptor 2>/dev/null|grep -A1 DESCRIPTOR); then
20 # checker for generic USB HID keyboard
21 USBHID_KBD_CMD="grep -E '^ 05 01 09 06'"
22
23 # checker for touch screen
24 USBHID_TS_CMD="grep -E '^ 05 0D 09 04'"
25
26 if echo "$USBHID_DUMP_OUTPUT"|eval $USBHID_TS_CMD &>/dev/null; then
27 HAVE_TOUCHSCREEN=1
28 fi
29
30 if echo "$USBHID_DUMP_OUTPUT"|eval $USBHID_KBD_CMD &>/dev/null; then
31 HAVE_KEYBOARD=1
32 else
33 # config script in OE will set HAVE_KEYBOARD=1
34 # if we don't set any value. We have to explicitly
35 # tell it when keyboard is not detected.
36 HAVE_KEYBOARD=0
37 fi
38 fi
39fi
diff --git a/common/recipes-bsp/formfactor/formfactor_0.0.bbappend b/common/recipes-bsp/formfactor/formfactor_0.0.bbappend
new file mode 100644
index 0000000..6dd422a
--- /dev/null
+++ b/common/recipes-bsp/formfactor/formfactor_0.0.bbappend
@@ -0,0 +1 @@
FILESEXTRAPATHS_prepend_intel-x86-common := "${THISDIR}/${PN}:"
diff --git a/common/recipes-bsp/gma500-gfx-check/gma500-gfx-check/gma500-gfx-check.conf b/common/recipes-bsp/gma500-gfx-check/gma500-gfx-check/gma500-gfx-check.conf
new file mode 100644
index 0000000..74d33c8
--- /dev/null
+++ b/common/recipes-bsp/gma500-gfx-check/gma500-gfx-check/gma500-gfx-check.conf
@@ -0,0 +1,2 @@
1# Mimic modprobe's install funcitonality with busybox's modprobe
2install gma500_gfx dmesg | grep gma500_gfx_checked || { /etc/modprobe.d/gma500-gfx-check.sh || modprobe gma500_gfx; }
diff --git a/common/recipes-bsp/gma500-gfx-check/gma500-gfx-check/gma500-gfx-check.sh b/common/recipes-bsp/gma500-gfx-check/gma500-gfx-check/gma500-gfx-check.sh
new file mode 100644
index 0000000..75cda99
--- /dev/null
+++ b/common/recipes-bsp/gma500-gfx-check/gma500-gfx-check/gma500-gfx-check.sh
@@ -0,0 +1,15 @@
1#!/bin/sh
2
3# Check for devices we wish to avoid gma500_gfx for
4DEVICES="0x8119 0x4108"
5
6# Checked flag to avoid infinite modprobe
7echo "gma500_gfx_checked" >> /dev/kmsg;
8
9for DEVICE in $DEVICES; do
10 if udevadm trigger --subsystem-match=pci --verbose --attr-match=device=$DEVICE | grep "pci" >> /dev/null ; then
11 echo "Found $DEVICE, avoiding gma500_gfx module" >> /dev/kmsg;
12 exit 0
13 fi
14done
15exit 1
diff --git a/common/recipes-bsp/gma500-gfx-check/gma500-gfx-check_1.0.bb b/common/recipes-bsp/gma500-gfx-check/gma500-gfx-check_1.0.bb
new file mode 100644
index 0000000..7b08064
--- /dev/null
+++ b/common/recipes-bsp/gma500-gfx-check/gma500-gfx-check_1.0.bb
@@ -0,0 +1,18 @@
1SUMMARY = "Intel gma500_gfx fix for certain hardware"
2DESCRIPTION = "Avoid inserting gma500_gfx module for certain hardware devices."
3LICENSE="GPLv2"
4LIC_FILES_CHKSUM = "file://${COREBASE}/meta/files/common-licenses/GPL-2.0;md5=801f80980d171dd6425610833a22dbe6"
5
6SRC_URI = "file://gma500-gfx-check.conf \
7 file://gma500-gfx-check.sh "
8
9do_install(){
10 install -d ${D}${sysconfdir}/modprobe.d/
11 install -m 755 ${WORKDIR}/gma500-gfx-check.sh ${D}${sysconfdir}/modprobe.d/gma500-gfx-check.sh
12 install -m 644 ${WORKDIR}/gma500-gfx-check.conf ${D}${sysconfdir}/modprobe.d/gma500-gfx-check.conf
13}
14
15FILES_${PN}="${sysconfdir}/modprobe.d/gma500-gfx-check.conf \
16 ${sysconfdir}/modprobe.d/gma500-gfx-check.sh"
17
18COMPATIBLE_MACHINE = "intel-core2-32"
diff --git a/common/recipes-bsp/rmc/boards/Galileo2/BOOTENTRY.CONFIG b/common/recipes-bsp/rmc/boards/Galileo2/BOOTENTRY.CONFIG
new file mode 100644
index 0000000..dd1b911
--- /dev/null
+++ b/common/recipes-bsp/rmc/boards/Galileo2/BOOTENTRY.CONFIG
@@ -0,0 +1,3 @@
1boot.conf
2install.conf
3
diff --git a/common/recipes-bsp/rmc/boards/Galileo2/boot.conf b/common/recipes-bsp/rmc/boards/Galileo2/boot.conf
new file mode 100644
index 0000000..580ea48
--- /dev/null
+++ b/common/recipes-bsp/rmc/boards/Galileo2/boot.conf
@@ -0,0 +1,4 @@
1title Galileo Gen 2 boot
2linux /vmlinuz
3initrd /initrd
4options LABEL=boot rootwait console=ttyS1,115200
diff --git a/common/recipes-bsp/rmc/boards/Galileo2/gallieo2.fp b/common/recipes-bsp/rmc/boards/Galileo2/gallieo2.fp
new file mode 100755
index 0000000..fe77d4d
--- /dev/null
+++ b/common/recipes-bsp/rmc/boards/Galileo2/gallieo2.fp
Binary files differ
diff --git a/common/recipes-bsp/rmc/boards/Galileo2/install.conf b/common/recipes-bsp/rmc/boards/Galileo2/install.conf
new file mode 100644
index 0000000..688c2a8
--- /dev/null
+++ b/common/recipes-bsp/rmc/boards/Galileo2/install.conf
@@ -0,0 +1,4 @@
1title Galileo Gen 2 install
2linux /vmlinuz
3initrd /initrd
4options LABEL=install-efi rootwait console=ttyS1,115200
diff --git a/common/recipes-bsp/rmc/boards/MinnowboardTurbot/KBOOTPARAM b/common/recipes-bsp/rmc/boards/MinnowboardTurbot/KBOOTPARAM
new file mode 100644
index 0000000..476b1fb
--- /dev/null
+++ b/common/recipes-bsp/rmc/boards/MinnowboardTurbot/KBOOTPARAM
@@ -0,0 +1 @@
console=ttyS0,115200
diff --git a/common/recipes-bsp/rmc/boards/MinnowboardTurbot/minnowboardturbot.fp b/common/recipes-bsp/rmc/boards/MinnowboardTurbot/minnowboardturbot.fp
new file mode 100644
index 0000000..9aa145f
--- /dev/null
+++ b/common/recipes-bsp/rmc/boards/MinnowboardTurbot/minnowboardturbot.fp
Binary files differ
diff --git a/common/recipes-bsp/rmc/boards/NUC5i5RYB/BOOTENTRY.CONFIG b/common/recipes-bsp/rmc/boards/NUC5i5RYB/BOOTENTRY.CONFIG
new file mode 100644
index 0000000..b2fabe8
--- /dev/null
+++ b/common/recipes-bsp/rmc/boards/NUC5i5RYB/BOOTENTRY.CONFIG
@@ -0,0 +1,2 @@
1boot.conf
2install.conf
diff --git a/common/recipes-bsp/rmc/boards/NUC5i5RYB/INSTALLER.CONFIG b/common/recipes-bsp/rmc/boards/NUC5i5RYB/INSTALLER.CONFIG
new file mode 100644
index 0000000..ca5f04b
--- /dev/null
+++ b/common/recipes-bsp/rmc/boards/NUC5i5RYB/INSTALLER.CONFIG
@@ -0,0 +1,2 @@
1efi_entry_dir:root:disk:770:/boot/loader/entries/
2boot.conf:root:disk:770:/boot/loader/entries/rmcboot.conf
diff --git a/common/recipes-bsp/rmc/boards/NUC5i5RYB/POSTINSTALL.sh b/common/recipes-bsp/rmc/boards/NUC5i5RYB/POSTINSTALL.sh
new file mode 100644
index 0000000..6694261
--- /dev/null
+++ b/common/recipes-bsp/rmc/boards/NUC5i5RYB/POSTINSTALL.sh
@@ -0,0 +1,2 @@
1# There is no tty device on this board.
2sed -i '/start_getty.\+ttyS.*/d' /tgt_root/etc/inittab
diff --git a/common/recipes-bsp/rmc/boards/NUC5i5RYB/boot.conf b/common/recipes-bsp/rmc/boards/NUC5i5RYB/boot.conf
new file mode 100644
index 0000000..b29fa45
--- /dev/null
+++ b/common/recipes-bsp/rmc/boards/NUC5i5RYB/boot.conf
@@ -0,0 +1,4 @@
1title NUC5i5RYB boot
2linux /vmlinuz
3initrd /initrd
4options LABEL=boot rootwait
diff --git a/common/recipes-bsp/rmc/boards/NUC5i5RYB/install.conf b/common/recipes-bsp/rmc/boards/NUC5i5RYB/install.conf
new file mode 100644
index 0000000..0dca3ca
--- /dev/null
+++ b/common/recipes-bsp/rmc/boards/NUC5i5RYB/install.conf
@@ -0,0 +1,4 @@
1title NUC5i5RYB install
2linux /vmlinuz
3initrd /initrd
4options LABEL=install-efi rootwait
diff --git a/common/recipes-bsp/rmc/boards/NUC5i5RYB/nuc5i5.fp b/common/recipes-bsp/rmc/boards/NUC5i5RYB/nuc5i5.fp
new file mode 100644
index 0000000..5737477
--- /dev/null
+++ b/common/recipes-bsp/rmc/boards/NUC5i5RYB/nuc5i5.fp
Binary files differ
diff --git a/common/recipes-bsp/rmc/boards/T100-32bit/BOOTENTRY.CONFIG b/common/recipes-bsp/rmc/boards/T100-32bit/BOOTENTRY.CONFIG
new file mode 100644
index 0000000..b2fabe8
--- /dev/null
+++ b/common/recipes-bsp/rmc/boards/T100-32bit/BOOTENTRY.CONFIG
@@ -0,0 +1,2 @@
1boot.conf
2install.conf
diff --git a/common/recipes-bsp/rmc/boards/T100-32bit/T100-32bit.fp b/common/recipes-bsp/rmc/boards/T100-32bit/T100-32bit.fp
new file mode 100644
index 0000000..86ecea7
--- /dev/null
+++ b/common/recipes-bsp/rmc/boards/T100-32bit/T100-32bit.fp
Binary files differ
diff --git a/common/recipes-bsp/rmc/boards/T100-32bit/boot.conf b/common/recipes-bsp/rmc/boards/T100-32bit/boot.conf
new file mode 100644
index 0000000..f1578e0
--- /dev/null
+++ b/common/recipes-bsp/rmc/boards/T100-32bit/boot.conf
@@ -0,0 +1,4 @@
1title T100T(32bit) boot
2linux /vmlinuz
3initrd /initrd
4options LABEL=boot loglevel=8
diff --git a/common/recipes-bsp/rmc/boards/T100-32bit/install.conf b/common/recipes-bsp/rmc/boards/T100-32bit/install.conf
new file mode 100644
index 0000000..67e7eb1
--- /dev/null
+++ b/common/recipes-bsp/rmc/boards/T100-32bit/install.conf
@@ -0,0 +1,4 @@
1title T100T(32bit) install
2linux /vmlinuz
3initrd /initrd
4options LABEL=install-efi
diff --git a/common/recipes-bsp/rmc/boards/broxton-m/BOOTENTRY.CONFIG b/common/recipes-bsp/rmc/boards/broxton-m/BOOTENTRY.CONFIG
new file mode 100644
index 0000000..b2fabe8
--- /dev/null
+++ b/common/recipes-bsp/rmc/boards/broxton-m/BOOTENTRY.CONFIG
@@ -0,0 +1,2 @@
1boot.conf
2install.conf
diff --git a/common/recipes-bsp/rmc/boards/broxton-m/INSTALLER.CONFIG b/common/recipes-bsp/rmc/boards/broxton-m/INSTALLER.CONFIG
new file mode 100644
index 0000000..ecd2060
--- /dev/null
+++ b/common/recipes-bsp/rmc/boards/broxton-m/INSTALLER.CONFIG
@@ -0,0 +1,3 @@
1# Keep rmc Joule boot.conf instead of meta-intel default
2efi_entry_dir:root:disk:770:/boot/loader/entries/
3boot.conf:root:disk:770:/boot/loader/entries/boot.conf
diff --git a/common/recipes-bsp/rmc/boards/broxton-m/KBOOTPARAM b/common/recipes-bsp/rmc/boards/broxton-m/KBOOTPARAM
new file mode 100644
index 0000000..08be5df
--- /dev/null
+++ b/common/recipes-bsp/rmc/boards/broxton-m/KBOOTPARAM
@@ -0,0 +1 @@
video=efifb maxcpus=4 reboot=efi kmemleak=off console=tty0 console=ttyS2,115200
diff --git a/common/recipes-bsp/rmc/boards/broxton-m/POSTINSTALL.sh b/common/recipes-bsp/rmc/boards/broxton-m/POSTINSTALL.sh
new file mode 100644
index 0000000..30bbd28
--- /dev/null
+++ b/common/recipes-bsp/rmc/boards/broxton-m/POSTINSTALL.sh
@@ -0,0 +1,2 @@
1# Joule uses only S2 for serial, so remove S0
2sed -i '/start_getty.\+ttyS0/d' /tgt_root/etc/inittab
diff --git a/common/recipes-bsp/rmc/boards/broxton-m/bm-1F1.fp b/common/recipes-bsp/rmc/boards/broxton-m/bm-1F1.fp
new file mode 100755
index 0000000..1a15028
--- /dev/null
+++ b/common/recipes-bsp/rmc/boards/broxton-m/bm-1F1.fp
Binary files differ
diff --git a/common/recipes-bsp/rmc/boards/broxton-m/bm.fp b/common/recipes-bsp/rmc/boards/broxton-m/bm.fp
new file mode 100755
index 0000000..135a7a5
--- /dev/null
+++ b/common/recipes-bsp/rmc/boards/broxton-m/bm.fp
Binary files differ
diff --git a/common/recipes-bsp/rmc/boards/broxton-m/boot.conf b/common/recipes-bsp/rmc/boards/broxton-m/boot.conf
new file mode 100644
index 0000000..caa00c5
--- /dev/null
+++ b/common/recipes-bsp/rmc/boards/broxton-m/boot.conf
@@ -0,0 +1,4 @@
1title Joule / Broxton-m
2linux /vmlinuz
3initrd /initrd
4options LABEL=boot
diff --git a/common/recipes-bsp/rmc/boards/broxton-m/install.conf b/common/recipes-bsp/rmc/boards/broxton-m/install.conf
new file mode 100644
index 0000000..9cdd86b
--- /dev/null
+++ b/common/recipes-bsp/rmc/boards/broxton-m/install.conf
@@ -0,0 +1,4 @@
1title Joule / Broxton-m Install
2linux /vmlinuz
3initrd /initrd
4options LABEL=install-efi rootwait
diff --git a/common/recipes-bsp/rmc/boards/broxton-m/joule-1F1.fp b/common/recipes-bsp/rmc/boards/broxton-m/joule-1F1.fp
new file mode 100644
index 0000000..d757614
--- /dev/null
+++ b/common/recipes-bsp/rmc/boards/broxton-m/joule-1F1.fp
Binary files differ
diff --git a/common/recipes-bsp/rmc/boards/minnowmax/BOOTENTRY.CONFIG b/common/recipes-bsp/rmc/boards/minnowmax/BOOTENTRY.CONFIG
new file mode 100644
index 0000000..b2fabe8
--- /dev/null
+++ b/common/recipes-bsp/rmc/boards/minnowmax/BOOTENTRY.CONFIG
@@ -0,0 +1,2 @@
1boot.conf
2install.conf
diff --git a/common/recipes-bsp/rmc/boards/minnowmax/boot.conf b/common/recipes-bsp/rmc/boards/minnowmax/boot.conf
new file mode 100644
index 0000000..6e789cd
--- /dev/null
+++ b/common/recipes-bsp/rmc/boards/minnowmax/boot.conf
@@ -0,0 +1,4 @@
1title Minnow Max boot
2linux /vmlinuz
3initrd /initrd
4options LABEL=boot console=ttyS0,115200n8
diff --git a/common/recipes-bsp/rmc/boards/minnowmax/install.conf b/common/recipes-bsp/rmc/boards/minnowmax/install.conf
new file mode 100644
index 0000000..1a493ae
--- /dev/null
+++ b/common/recipes-bsp/rmc/boards/minnowmax/install.conf
@@ -0,0 +1,4 @@
1title Minnow Max install
2linux /vmlinuz
3initrd /initrd
4options LABEL=install-efi console=ttyS0,115200n8
diff --git a/common/recipes-bsp/rmc/boards/minnowmax/minnowmax.fp b/common/recipes-bsp/rmc/boards/minnowmax/minnowmax.fp
new file mode 100644
index 0000000..3c5a286
--- /dev/null
+++ b/common/recipes-bsp/rmc/boards/minnowmax/minnowmax.fp
Binary files differ
diff --git a/common/recipes-bsp/rmc/boards/minnowmaxB3/BOOTENTRY.CONFIG b/common/recipes-bsp/rmc/boards/minnowmaxB3/BOOTENTRY.CONFIG
new file mode 100644
index 0000000..b2fabe8
--- /dev/null
+++ b/common/recipes-bsp/rmc/boards/minnowmaxB3/BOOTENTRY.CONFIG
@@ -0,0 +1,2 @@
1boot.conf
2install.conf
diff --git a/common/recipes-bsp/rmc/boards/minnowmaxB3/boot.conf b/common/recipes-bsp/rmc/boards/minnowmaxB3/boot.conf
new file mode 100644
index 0000000..577e5d6
--- /dev/null
+++ b/common/recipes-bsp/rmc/boards/minnowmaxB3/boot.conf
@@ -0,0 +1,4 @@
1title Minnow Max B3 boot
2linux /vmlinuz
3initrd /initrd
4options LABEL=boot console=ttyS0,115200n8
diff --git a/common/recipes-bsp/rmc/boards/minnowmaxB3/install.conf b/common/recipes-bsp/rmc/boards/minnowmaxB3/install.conf
new file mode 100644
index 0000000..cf500d6
--- /dev/null
+++ b/common/recipes-bsp/rmc/boards/minnowmaxB3/install.conf
@@ -0,0 +1,4 @@
1title Minnow Max B3 install
2linux /vmlinuz
3initrd /initrd
4options LABEL=install-efi console=ttyS0,115200n8
diff --git a/common/recipes-bsp/rmc/boards/minnowmaxB3/minnowmaxB3.fp b/common/recipes-bsp/rmc/boards/minnowmaxB3/minnowmaxB3.fp
new file mode 100644
index 0000000..ad3f0d6
--- /dev/null
+++ b/common/recipes-bsp/rmc/boards/minnowmaxB3/minnowmaxB3.fp
Binary files differ
diff --git a/common/recipes-bsp/rmc/boards/mohonpeak/BOOTENTRY.CONFIG b/common/recipes-bsp/rmc/boards/mohonpeak/BOOTENTRY.CONFIG
new file mode 100644
index 0000000..b2fabe8
--- /dev/null
+++ b/common/recipes-bsp/rmc/boards/mohonpeak/BOOTENTRY.CONFIG
@@ -0,0 +1,2 @@
1boot.conf
2install.conf
diff --git a/common/recipes-bsp/rmc/boards/mohonpeak/INSTALLER.CONFIG b/common/recipes-bsp/rmc/boards/mohonpeak/INSTALLER.CONFIG
new file mode 100644
index 0000000..8c5a767
--- /dev/null
+++ b/common/recipes-bsp/rmc/boards/mohonpeak/INSTALLER.CONFIG
@@ -0,0 +1,3 @@
1# Keep rmc Mohonpeak boot.conf instead of meta-intel default
2efi_entry_dir:root:disk:770:/boot/loader/entries/
3boot.conf:root:disk:770:/boot/loader/entries/boot.conf
diff --git a/common/recipes-bsp/rmc/boards/mohonpeak/KBOOTPARAM b/common/recipes-bsp/rmc/boards/mohonpeak/KBOOTPARAM
new file mode 100644
index 0000000..169056e
--- /dev/null
+++ b/common/recipes-bsp/rmc/boards/mohonpeak/KBOOTPARAM
@@ -0,0 +1 @@
console=ttyS1,115200 console=tty1
diff --git a/common/recipes-bsp/rmc/boards/mohonpeak/POSTINSTALL.sh b/common/recipes-bsp/rmc/boards/mohonpeak/POSTINSTALL.sh
new file mode 100644
index 0000000..5f440c3
--- /dev/null
+++ b/common/recipes-bsp/rmc/boards/mohonpeak/POSTINSTALL.sh
@@ -0,0 +1,3 @@
1# Mohonpeak uses only S1 for serial, so remove S0 and S2
2sed -i '/start_getty.\+ttyS0/d' /tgt_root/etc/inittab
3sed -i '/start_getty.\+ttyS2/d' /tgt_root/etc/inittab
diff --git a/common/recipes-bsp/rmc/boards/mohonpeak/boot.conf b/common/recipes-bsp/rmc/boards/mohonpeak/boot.conf
new file mode 100644
index 0000000..5b7a0f6
--- /dev/null
+++ b/common/recipes-bsp/rmc/boards/mohonpeak/boot.conf
@@ -0,0 +1,4 @@
1title Mohon Peak boot
2linux /vmlinuz
3initrd /initrd
4options LABEL=boot
diff --git a/common/recipes-bsp/rmc/boards/mohonpeak/install.conf b/common/recipes-bsp/rmc/boards/mohonpeak/install.conf
new file mode 100644
index 0000000..dde3497
--- /dev/null
+++ b/common/recipes-bsp/rmc/boards/mohonpeak/install.conf
@@ -0,0 +1,4 @@
1title Mohon Peak Install
2linux /vmlinuz
3initrd /initrd
4options LABEL=install-efi rootwait
diff --git a/common/recipes-bsp/rmc/boards/mohonpeak/mohonpeak.fp b/common/recipes-bsp/rmc/boards/mohonpeak/mohonpeak.fp
new file mode 100644
index 0000000..bc4bdae
--- /dev/null
+++ b/common/recipes-bsp/rmc/boards/mohonpeak/mohonpeak.fp
Binary files differ
diff --git a/common/recipes-bsp/rmc/boards/nucgen6/BOOTENTRY.CONFIG b/common/recipes-bsp/rmc/boards/nucgen6/BOOTENTRY.CONFIG
new file mode 100644
index 0000000..b2fabe8
--- /dev/null
+++ b/common/recipes-bsp/rmc/boards/nucgen6/BOOTENTRY.CONFIG
@@ -0,0 +1,2 @@
1boot.conf
2install.conf
diff --git a/common/recipes-bsp/rmc/boards/nucgen6/INSTALLER.CONFIG b/common/recipes-bsp/rmc/boards/nucgen6/INSTALLER.CONFIG
new file mode 100644
index 0000000..7d5378b
--- /dev/null
+++ b/common/recipes-bsp/rmc/boards/nucgen6/INSTALLER.CONFIG
@@ -0,0 +1,6 @@
1# This file specifies which file or dir RMC will install onto target.
2# Note the absolute path is referred from mount points in installation.
3efi_entry_dir:root:disk:770:/boot/loader/entries/
4boot.conf:root:disk:770:/boot/loader/entries/rmcboot.conf
5mylibdir:root:root:770:/tgt_root/etc/mylib/
6mylib.conf:root:root:660:/tgt_root/etc/mylib/mylib.conf
diff --git a/common/recipes-bsp/rmc/boards/nucgen6/KBOOTPARAM b/common/recipes-bsp/rmc/boards/nucgen6/KBOOTPARAM
new file mode 100644
index 0000000..27943b4
--- /dev/null
+++ b/common/recipes-bsp/rmc/boards/nucgen6/KBOOTPARAM
@@ -0,0 +1 @@
i915.preliminary_hw_support=1
diff --git a/common/recipes-bsp/rmc/boards/nucgen6/POSTINSTALL.sh b/common/recipes-bsp/rmc/boards/nucgen6/POSTINSTALL.sh
new file mode 100644
index 0000000..bec3be4
--- /dev/null
+++ b/common/recipes-bsp/rmc/boards/nucgen6/POSTINSTALL.sh
@@ -0,0 +1,7 @@
1# NUC Gen 6 specific retouch after RMC deployment
2
3# The generated inittab from OE build causes error messages:
4# "auth.err getty[615]: tcgetattr: Input/output error"
5# in /var/log/messages because NUC Gen 6 doesn't have any
6# serial tty. We delete line(s) here on target.
7sed -i '/start_getty.\+ttyS.*/d' /tgt_root/etc/inittab
diff --git a/common/recipes-bsp/rmc/boards/nucgen6/boot.conf b/common/recipes-bsp/rmc/boards/nucgen6/boot.conf
new file mode 100644
index 0000000..e6ecb02
--- /dev/null
+++ b/common/recipes-bsp/rmc/boards/nucgen6/boot.conf
@@ -0,0 +1,4 @@
1title NUC Gen6 boot
2linux /vmlinuz
3initrd /initrd
4options LABEL=boot
diff --git a/common/recipes-bsp/rmc/boards/nucgen6/install.conf b/common/recipes-bsp/rmc/boards/nucgen6/install.conf
new file mode 100644
index 0000000..916bb04
--- /dev/null
+++ b/common/recipes-bsp/rmc/boards/nucgen6/install.conf
@@ -0,0 +1,4 @@
1title NUC Gen6 install
2linux /vmlinuz
3initrd /initrd
4options LABEL=install-efi
diff --git a/common/recipes-bsp/rmc/boards/nucgen6/mylib.conf b/common/recipes-bsp/rmc/boards/nucgen6/mylib.conf
new file mode 100644
index 0000000..fd8357c
--- /dev/null
+++ b/common/recipes-bsp/rmc/boards/nucgen6/mylib.conf
@@ -0,0 +1,7 @@
1# This is a demo conf file read by an imagined program or library
2# which reads this file at runtime to customize its behavior.
3# rmc will deploy it to the location specified in INSTALLER.CONFIG.
4
5lib.info = "V1.0 for rmc demo"
6lib.board = "NUC gen 6"
7prog.ui.layout = "minimal"
diff --git a/common/recipes-bsp/rmc/boards/nucgen6/nuc6.fp b/common/recipes-bsp/rmc/boards/nucgen6/nuc6.fp
new file mode 100644
index 0000000..834f800
--- /dev/null
+++ b/common/recipes-bsp/rmc/boards/nucgen6/nuc6.fp
Binary files differ
diff --git a/common/recipes-bsp/rmc/boards/qemu-2.6/KBOOTPARAM b/common/recipes-bsp/rmc/boards/qemu-2.6/KBOOTPARAM
new file mode 100644
index 0000000..476b1fb
--- /dev/null
+++ b/common/recipes-bsp/rmc/boards/qemu-2.6/KBOOTPARAM
@@ -0,0 +1 @@
console=ttyS0,115200
diff --git a/common/recipes-bsp/rmc/boards/qemu-2.6/qemu-2.6.fp b/common/recipes-bsp/rmc/boards/qemu-2.6/qemu-2.6.fp
new file mode 100644
index 0000000..e4c4165
--- /dev/null
+++ b/common/recipes-bsp/rmc/boards/qemu-2.6/qemu-2.6.fp
Binary files differ
diff --git a/common/recipes-bsp/rmc/boards/qemu-2.8/KBOOTPARAM b/common/recipes-bsp/rmc/boards/qemu-2.8/KBOOTPARAM
new file mode 100644
index 0000000..476b1fb
--- /dev/null
+++ b/common/recipes-bsp/rmc/boards/qemu-2.8/KBOOTPARAM
@@ -0,0 +1 @@
console=ttyS0,115200
diff --git a/common/recipes-bsp/rmc/boards/qemu-2.8/qemu-2.8.fp b/common/recipes-bsp/rmc/boards/qemu-2.8/qemu-2.8.fp
new file mode 100644
index 0000000..7f28f37
--- /dev/null
+++ b/common/recipes-bsp/rmc/boards/qemu-2.8/qemu-2.8.fp
Binary files differ
diff --git a/common/recipes-bsp/rmc/rmc-db.bb b/common/recipes-bsp/rmc/rmc-db.bb
new file mode 100644
index 0000000..f24ed11
--- /dev/null
+++ b/common/recipes-bsp/rmc/rmc-db.bb
@@ -0,0 +1,49 @@
1SUMMARY = "Central RMC Database"
2DESCRIPTION = "Generate a centralized RMC database for RMC feature. \
3Fingerprints and data for all boards supported are specified by variable \
4RMC_BOARD_DATA_DIRS which is a list of top directories that contains \
5subdirectories for boards. Developers can add their top directories by appending \
6them to this variable in a rmc-db.bbappend.Refer to rmc-db bbclass for more \
7information."
8
9LICENSE = "MIT"
10
11LIC_FILES_CHKSUM = "file://${COREBASE}/meta/files/common-licenses/MIT;md5=0835ade698e0bcf8506ecda2f7b4f302"
12
13S = "${WORKDIR}"
14
15inherit rmc-db
16
17RMC_BOARD_DATA_DIRS ?= "${THISDIR}/boards/"
18RMC_DB_DIR = "${WORKDIR}/db"
19
20# Let sstate be aware of change in any added board directories
21do_generate_rmc_db[file-checksums] = "${@get_rmc_top_dirs_list(d)}"
22
23# derived from get_lic_checksum_file_list(d) in base.bbclass in OE
24def get_rmc_top_dirs_list(d):
25 dirlist = []
26 dirs = d.getVar("RMC_BOARD_DATA_DIRS", True) or ''
27 topdirs = dirs.split()
28 for each in topdirs:
29 dirlist.append(each + ":" + str(os.path.exists(each)))
30 return " ".join(dirlist)
31
32do_generate_rmc_db () {
33 rmc_generate_db "${RMC_BOARD_DATA_DIRS}" "${RMC_DB_DIR}"/rmc.db
34}
35
36addtask generate_rmc_db after do_compile
37
38inherit deploy
39
40do_deploy () {
41 if [ -f ${RMC_DB_DIR}/rmc.db ]; then
42 install -m 0400 ${RMC_DB_DIR}/rmc.db ${DEPLOYDIR}
43 else
44 rm -f ${DEPLOYDIR}/rmc.db
45 echo "Warning: no RMC central database found, skip deployment."
46 fi
47}
48
49addtask deploy after do_generate_rmc_db
diff --git a/common/recipes-bsp/rmc/rmc-efi.bb b/common/recipes-bsp/rmc/rmc-efi.bb
new file mode 100644
index 0000000..2a1c9a9
--- /dev/null
+++ b/common/recipes-bsp/rmc/rmc-efi.bb
@@ -0,0 +1,40 @@
1SUMMARY = "RMC (Runtime Machine Configuration) EFI library"
2
3DESCRIPTION = "The RMC EFI library adds RMC support to existing EFI bootloaders"
4
5LICENSE = "MIT"
6
7LIC_FILES_CHKSUM = "file://COPYING;md5=ade413c694d3aaefc9554b24a8814ee8"
8
9SRC_URI = "git://git.yoctoproject.org/rmc"
10
11SRCREV = "027ac76f642dcab1a9f237a00f03a3a714bd04b9"
12
13S = "${WORKDIR}/git"
14
15COMPATIBLE_HOST = "(x86_64.*|i.86.*)-linux*"
16
17TARGET_CFLAGS +="-Wl,--hash-style=both"
18
19EXTRA_OEMAKE = "RMC_INSTALL_PREFIX=${D}/${prefix} \
20 RMC_INSTALL_LIB_PATH=${D}${libdir} \
21 RMC_INSTALL_HEADER_PATH=${D}${includedir}/rmc"
22
23SECURITY_CFLAGS_remove_class-target = "-fstack-protector-strong"
24SECURITY_CFLAGS_append_class-target = " -fno-stack-protector"
25
26python () {
27 ccargs = d.getVar('TUNE_CCARGS').split()
28 if '-mx32' in ccargs:
29 ccargs.remove('-mx32')
30 ccargs.append('-m64')
31 d.setVar('TUNE_CCARGS', ' '.join(ccargs))
32}
33
34do_compile() {
35 oe_runmake -f Makefile.efi
36}
37
38do_install() {
39 oe_runmake -f Makefile.efi install
40}
diff --git a/common/recipes-bsp/rmc/rmc.bb b/common/recipes-bsp/rmc/rmc.bb
new file mode 100644
index 0000000..8797644
--- /dev/null
+++ b/common/recipes-bsp/rmc/rmc.bb
@@ -0,0 +1,46 @@
1SUMMARY = "RMC (Runtime Machine Configuration)"
2
3DESCRIPTION = "RMC project provides a tool and libraries to identify types \
4of hardware boards and access any file-based data specific to the board's \
5type at runtime in a centralized way. Software (clients) can have a generic \
6logic to query board-specific data from RMC without knowing the type of board. \
7This make it possible to have a generic software work running on boards which \
8require any quirks or customizations at a board or product level. \
9"
10
11LICENSE = "MIT"
12
13LIC_FILES_CHKSUM = "file://COPYING;md5=ade413c694d3aaefc9554b24a8814ee8"
14
15SRC_URI = "git://git.yoctoproject.org/rmc"
16
17SRCREV = "027ac76f642dcab1a9f237a00f03a3a714bd04b9"
18
19S = "${WORKDIR}/git"
20
21COMPATIBLE_HOST = "(x86_64.*|i.86.*)-linux*"
22
23TARGET_CFLAGS +="-Wl,--hash-style=both"
24
25EXTRA_OEMAKE = "RMC_INSTALL_PREFIX=${D}/${prefix} \
26 RMC_INSTALL_BIN_PATH=${D}${bindir} \
27 RMC_INSTALL_LIB_PATH=${D}${libdir} \
28 RMC_INSTALL_HEADER_PATH=${D}${includedir}/rmc"
29
30SECURITY_CFLAGS_remove_class-target = "-fstack-protector-strong"
31SECURITY_CFLAGS_append_class-target = " -fno-stack-protector"
32
33do_compile_class-target() {
34 oe_runmake
35}
36
37do_install() {
38 oe_runmake install
39}
40
41do_install_class-native() {
42 install -d ${D}${STAGING_BINDIR_NATIVE}
43 install -m 0755 ${S}/src/rmc ${D}${STAGING_BINDIR_NATIVE}
44}
45
46BBCLASSEXTEND = "native"
diff --git a/common/recipes-bsp/systemd-boot/systemd-boot/0001-efi-boot.c-workaround-for-Joule-BIOS-hang.patch b/common/recipes-bsp/systemd-boot/systemd-boot/0001-efi-boot.c-workaround-for-Joule-BIOS-hang.patch
new file mode 100644
index 0000000..8d0b614
--- /dev/null
+++ b/common/recipes-bsp/systemd-boot/systemd-boot/0001-efi-boot.c-workaround-for-Joule-BIOS-hang.patch
@@ -0,0 +1,31 @@
1From 58669ad764767afea4de53f8a97357773b1855ef Mon Sep 17 00:00:00 2001
2From: Saul Wold <sgw@linux.intel.com>
3Date: Tue, 25 Oct 2016 12:54:08 -0700
4Subject: [PATCH] efi/boot.c: workaround for Joule BIOS hang
5
6This patch should be removed when the BIOS is fixed
7
8Authored-by: Steve Sakoman <steve@sakoman.com>
9
10Upstream-Status: Inappropriate [machine specific workaround]
11Signed-off-by: Saul Wold <sgw@linux.intel.com>
12---
13 src/boot/efi/boot.c | 2 +-
14 1 file changed, 1 insertion(+), 1 deletion(-)
15
16diff --git a/src/boot/efi/boot.c b/src/boot/efi/boot.c
17index 3dcd9a5..3c6ed8c 100644
18--- a/src/boot/efi/boot.c
19+++ b/src/boot/efi/boot.c
20@@ -649,7 +649,7 @@ static BOOLEAN menu_run(Config *config, ConfigEntry **chosen_entry, CHAR16 *load
21 }
22
23 /* timeout disabled, wait for next key */
24- wait = TRUE;
25+ wait = FALSE;
26 continue;
27 }
28
29--
302.7.4
31
diff --git a/common/recipes-bsp/systemd-boot/systemd-boot/0001-sd-boot-Link-RMC-library-into-bootloader-and-stub.patch b/common/recipes-bsp/systemd-boot/systemd-boot/0001-sd-boot-Link-RMC-library-into-bootloader-and-stub.patch
new file mode 100644
index 0000000..2f248e2
--- /dev/null
+++ b/common/recipes-bsp/systemd-boot/systemd-boot/0001-sd-boot-Link-RMC-library-into-bootloader-and-stub.patch
@@ -0,0 +1,39 @@
1From fe1c2fdfe81f2ac2b41fe8543ba07f1911770d26 Mon Sep 17 00:00:00 2001
2From: Jianxun Zhang <jianxun.zhang@linux.intel.com>
3Date: Sat, 21 May 2016 18:52:07 -0700
4Subject: [PATCH] sd-boot: Link RMC library into bootloader and stub
5
6Add RMC library into bootloader binary and stub.
7
8Upstream-Status: Pending
9
10Signed-off-by: Jianxun Zhang <jianxun.zhang@linux.intel.com>
11---
12 Makefile.am | 4 ++--
13 1 file changed, 2 insertions(+), 2 deletions(-)
14
15diff --git a/Makefile.am b/Makefile.am
16index 305099ab6..9fb6f9b7b 100644
17--- a/Makefile.am
18+++ b/Makefile.am
19@@ -2802,7 +2802,7 @@ $(top_builddir)/src/boot/efi/%.o: $(top_srcdir)/src/boot/efi/%.c $(addprefix $(t
20
21 $(systemd_boot_solib): $(systemd_boot_objects)
22 $(AM_V_CCLD)$(LD) $(efi_ldflags) $(systemd_boot_objects) \
23- -o $@ -lefi -lgnuefi $(shell $(CC) -print-libgcc-file-name); \
24+ -o $@ -lefi -lgnuefi -lrmcefi $(shell $(CC) -print-libgcc-file-name); \
25 nm -D -u $@ | grep ' U ' && exit 1 || :
26
27 $(systemd_boot): $(systemd_boot_solib)
28@@ -2852,7 +2852,7 @@ $(top_builddir)/src/boot/efi/%.o: $(top_srcdir)/src/boot/efi/%.c $(addprefix $(t
29
30 $(stub_solib): $(stub_objects)
31 $(AM_V_CCLD)$(LD) $(efi_ldflags) $(stub_objects) \
32- -o $@ -lefi -lgnuefi $(shell $(CC) -print-libgcc-file-name); \
33+ -o $@ -lefi -lgnuefi -lrmcefi $(shell $(CC) -print-libgcc-file-name); \
34 nm -D -u $@ | grep ' U ' && exit 1 || :
35
36 $(stub): $(stub_solib)
37--
382.11.0
39
diff --git a/common/recipes-bsp/systemd-boot/systemd-boot/0001-sd-boot-stub-check-LoadOptions-contains-data.patch b/common/recipes-bsp/systemd-boot/systemd-boot/0001-sd-boot-stub-check-LoadOptions-contains-data.patch
new file mode 100644
index 0000000..69acc8f
--- /dev/null
+++ b/common/recipes-bsp/systemd-boot/systemd-boot/0001-sd-boot-stub-check-LoadOptions-contains-data.patch
@@ -0,0 +1,42 @@
1From 87cd5a5e0f06ceb7f9dbdcc4029e0c279a38e6ad Mon Sep 17 00:00:00 2001
2From: Mikko Ylinen <mikko.ylinen@linux.intel.com>
3Date: Mon, 27 Feb 2017 10:04:03 +0200
4Subject: [PATCH] sd-boot: stub: check LoadOptions contains data
5
6With some UEFI shells LoadOptionsSize is reported being > 0
7but the corresponding LoadOptions does not contain any data
8(the first element has value 0).
9
10When that happens, the stub feature that allows .cmdline to be
11replaced by what's in LoadOptions ends up copying nothing/random
12data to the kernel cmdline resulting in different kinds of boot
13problems.
14
15To fix this, add a check to see if LoadOptions contains data
16before replacing the .cmdline.
17
18Upstream-Status: Accepted [https://github.com/systemd/systemd/pull/5467]
19
20Fixes [YOCTO #11078].
21
22Signed-off-by: Mikko Ylinen <mikko.ylinen@linux.intel.com>
23---
24 src/boot/efi/stub.c | 2 +-
25 1 file changed, 1 insertion(+), 1 deletion(-)
26
27diff --git a/src/boot/efi/stub.c b/src/boot/efi/stub.c
28index 7c1ffb1bc..b7d5d3cda 100644
29--- a/src/boot/efi/stub.c
30+++ b/src/boot/efi/stub.c
31@@ -87,7 +87,7 @@ EFI_STATUS efi_main(EFI_HANDLE image, EFI_SYSTEM_TABLE *sys_table) {
32 cmdline_len = szs[0];
33
34 /* if we are not in secure boot mode, accept a custom command line and replace the built-in one */
35- if (!secure && loaded_image->LoadOptionsSize > 0) {
36+ if (!secure && loaded_image->LoadOptionsSize > 0 && *(CHAR16 *)loaded_image->LoadOptions != 0) {
37 CHAR16 *options;
38 CHAR8 *line;
39 UINTN i;
40--
412.11.0
42
diff --git a/common/recipes-bsp/systemd-boot/systemd-boot/0002-sd-boot-Load-board-specific-boot-entries-from-RMC-da.patch b/common/recipes-bsp/systemd-boot/systemd-boot/0002-sd-boot-Load-board-specific-boot-entries-from-RMC-da.patch
new file mode 100644
index 0000000..e88012c
--- /dev/null
+++ b/common/recipes-bsp/systemd-boot/systemd-boot/0002-sd-boot-Load-board-specific-boot-entries-from-RMC-da.patch
@@ -0,0 +1,250 @@
1From a3c4fc8c2847fe289a617bcba1d905f580f0e18d Mon Sep 17 00:00:00 2001
2From: Jianxun Zhang <jianxun.zhang@linux.intel.com>
3Date: Wed, 1 Jun 2016 16:32:22 -0700
4Subject: [PATCH 2/3] sd-boot: Load board-specific boot entries from RMC
5 database
6
7RMC provides a centralized database file on ESP. The DB contains
8fingerprints and any file blobs associated to physical boards.
9Callers can fetch board-specific data with fingerprint info
10collected from board at runtime if there is any record matched
11board's fingerprint.
12
13To let bootloader know which file blob in RMC should be queried,
14a special config file BOOTENTRY.CONFIG is defined as:
15
16boot.conf
17install.conf
18
19Bootloader calls RMC APIs and other functions to perform these
20tasks before it shows boot menu to user:
21
22(1) Load RMC database file from ESP
23(2) Collect fingerprint data from board
24(3) Query BOOTENTRY.CONFIG from RMC DB with fingerprint
25(4) Parse BOOTENTRY.CONFIG to know names of boot entry files
26(5) Query boot entry files one by one from RMC DB, and add
27 them into sd-boot config data.
28
29The final effect is that bootloader will show board-specific
30boot entries in boot menu to user. User then can choose one
31of them to boot system with the selected configuration.
32
33If any of these steps fails, bootloader simply skips loading
34RMC configs or any entry file not successfully fetched from
35RMC DB. Once any entry is loaded successfully from RMC DB,
36bootloader skips loading any boot entries from ESP.
37
38Upstream-Status: Pending
39
40Signed-off-by: Jianxun Zhang <jianxun.zhang@linux.intel.com>
41---
42 src/boot/efi/boot.c | 147 +++++++++++++++++++++++++++++++++++++++++++++++++++-
43 1 file changed, 145 insertions(+), 2 deletions(-)
44
45diff --git a/src/boot/efi/boot.c b/src/boot/efi/boot.c
46index 30c1ead..d1b029b 100644
47--- a/src/boot/efi/boot.c
48+++ b/src/boot/efi/boot.c
49@@ -15,6 +15,7 @@
50
51 #include <efi.h>
52 #include <efilib.h>
53+#include <rmc_api.h>
54
55 #include "console.h"
56 #include "disk.h"
57@@ -33,6 +34,9 @@ static const char __attribute__((used)) magic[] = "#### LoaderInfo: systemd-boot
58
59 static const EFI_GUID global_guid = EFI_GLOBAL_VARIABLE;
60
61+static CHAR8* rmc_db;
62+static rmc_fingerprint_t *rmc_fp;
63+
64 enum loader_type {
65 LOADER_UNDEFINED,
66 LOADER_EFI,
67@@ -1702,6 +1706,136 @@ static VOID config_free(Config *config) {
68 FreePool(config->entry_oneshot);
69 }
70
71+/* Derived from line_get_key_value(), we could consolidate two functions later */
72+static CHAR8 *get_line(CHAR8 *content, UINT64 *pos) {
73+ CHAR8 *line;
74+ UINT64 linelen;
75+
76+skip:
77+ line = content + *pos;
78+ if (*line == '\0')
79+ return NULL;
80+
81+ linelen = 0;
82+ while (line[linelen] && !strchra((CHAR8 *)"\n\r", line[linelen]))
83+ linelen++;
84+
85+ /* move pos to next line */
86+ *pos += linelen;
87+ if (content[*pos])
88+ (*pos)++;
89+
90+ /* empty line */
91+ if (linelen == 0)
92+ goto skip;
93+
94+ /* terminate line */
95+ line[linelen] = '\0';
96+
97+ /* remove leading whitespace */
98+ while (strchra((CHAR8 *)" \t", *line)) {
99+ line++;
100+ linelen--;
101+ }
102+
103+ /* remove trailing whitespace */
104+ while (linelen > 0 && strchra((CHAR8 *)" \t", line[linelen-1]))
105+ linelen--;
106+ line[linelen] = '\0';
107+
108+ if (*line == '#')
109+ goto skip;
110+
111+ return line;
112+}
113+
114+/* load rmc database file from ESP and try to get fingerprint. These
115+ * are essential information indicating we could query rmc data for
116+ * this board at least
117+ * return 0 if both database file and fingerprint can be obtained, otherwise
118+ * non-zero value is returned.
119+ *
120+ * Note: db and fp hold valid values only when this function returns 0.
121+ * Caller is responsible to free allocated memory pointed by *db and *fp when
122+ * this function returns 0.
123+ */
124+
125+static UINTN rmc_initialize(EFI_FILE *root_dir, EFI_SYSTEM_TABLE *sys_table, CHAR8 **db, rmc_fingerprint_t **fp) {
126+ UINTN len;
127+ UINTN ret = 1;
128+
129+ if (!db || !fp)
130+ return ret;
131+
132+ *db = NULL;
133+ *fp = NULL;
134+
135+ /* load rmc database */
136+ len = file_read(root_dir, L"\\rmc.db", 0, 0, db);
137+
138+ if (len <= 0)
139+ goto done;
140+
141+ *fp = AllocateZeroPool(sizeof(rmc_fingerprint_t));
142+ /* call rmc to get fingerprint. We will use single-action rmc APIs to query multiple files.
143+ * This should bring a better performance than calling double-action rmc API every time.
144+ */
145+ if (rmc_get_fingerprint(sys_table, *fp))
146+ goto done;
147+
148+ ret = 0;
149+done:
150+ if (ret) {
151+ FreePool(*db);
152+ FreePool(*fp);
153+ }
154+
155+ return ret;
156+}
157+
158+/* load RMC entries
159+ * return TRUE when at least one entry is loaded, otherwise, return FALSE
160+ */
161+static BOOLEAN config_load_rmc_entries(Config *config, EFI_HANDLE *device, CHAR16 *loaded_image_path, CHAR8 *db, rmc_fingerprint_t *fp) {
162+ CHAR8 *boot_entry = NULL;
163+ CHAR8 *boot_config = NULL;
164+ rmc_file_t rp;
165+ CHAR8 *line;
166+ UINT64 pos = 0;
167+ BOOLEAN ret = FALSE;
168+
169+ if (!db || !fp)
170+ return ret;
171+
172+ /* query boot entry config file */
173+ if (rmc_query_file_by_fp(fp, db, "BOOTENTRY.CONFIG", &rp))
174+ return ret;
175+
176+ /* file blob read from rmc db is not necessarily null-terminated, and we
177+ * should keep mem where rmc db lives from change during parsing
178+ */
179+ boot_config = AllocatePool(rp.blob_len * sizeof(CHAR8) + 1);
180+ CopyMem(boot_config, rp.blob, rp.blob_len);
181+ boot_config[rp.blob_len] = '\0';
182+ /* parse boot entry config */
183+ while ((line = get_line(boot_config, &pos))) {
184+ if (rmc_query_file_by_fp(fp, db, (char *)line, &rp))
185+ continue;
186+ if (rp.blob_len > 0) {
187+ boot_entry = AllocatePool(rp.blob_len * sizeof(CHAR8) + 1);
188+ CopyMem(boot_entry, rp.blob, rp.blob_len);
189+ boot_entry[rp.blob_len] = '\0';
190+ config_entry_add_from_file(config, device,
191+ stra_to_str(line), boot_entry,
192+ loaded_image_path);
193+ /* tell caller success when a RMC entry is loaded */
194+ ret = TRUE;
195+ }
196+ }
197+
198+ return ret;
199+}
200+
201 EFI_STATUS efi_main(EFI_HANDLE image, EFI_SYSTEM_TABLE *sys_table) {
202 CHAR16 *s;
203 CHAR8 *b;
204@@ -1714,6 +1848,7 @@ EFI_STATUS efi_main(EFI_HANDLE image, EFI_SYSTEM_TABLE *sys_table) {
205 UINT64 init_usec;
206 BOOLEAN menu = FALSE;
207 CHAR16 uuid[37];
208+ BOOLEAN rmc_entry = FALSE;
209
210 InitializeLib(image, sys_table);
211 init_usec = time_usec();
212@@ -1745,6 +1880,8 @@ EFI_STATUS efi_main(EFI_HANDLE image, EFI_SYSTEM_TABLE *sys_table) {
213 return EFI_LOAD_ERROR;
214 }
215
216+ /* Initialize rmc before loading any config */
217+ rmc_initialize(root_dir, sys_table, &rmc_db, &rmc_fp);
218
219 /* the filesystem path to this image, to prevent adding ourselves to the menu */
220 loaded_image_path = DevicePathToStr(loaded_image->FilePath);
221@@ -1753,11 +1890,15 @@ EFI_STATUS efi_main(EFI_HANDLE image, EFI_SYSTEM_TABLE *sys_table) {
222 ZeroMem(&config, sizeof(Config));
223 config_load_defaults(&config, root_dir);
224
225+ if (rmc_db && rmc_fp)
226+ rmc_entry = config_load_rmc_entries(&config, loaded_image->DeviceHandle, loaded_image_path, rmc_db, rmc_fp);
227+
228 /* scan /EFI/Linux/ directory */
229 config_entry_add_linux(&config, loaded_image, root_dir);
230
231- /* scan /loader/entries/\*.conf files */
232- config_load_entries(&config, loaded_image->DeviceHandle, root_dir, loaded_image_path);
233+ /* scan /loader/entries/\*.conf files only when no RMC entry is loaded */
234+ if (rmc_entry == FALSE)
235+ config_load_entries(&config, loaded_image->DeviceHandle, root_dir, loaded_image_path);
236
237 /* sort entries after version number */
238 config_sort_entries(&config);
239@@ -1851,6 +1992,8 @@ EFI_STATUS efi_main(EFI_HANDLE image, EFI_SYSTEM_TABLE *sys_table) {
240 out:
241 FreePool(loaded_image_path);
242 config_free(&config);
243+ FreePool(rmc_db);
244+ FreePool(rmc_fp);
245 uefi_call_wrapper(root_dir->Close, 1, root_dir);
246 uefi_call_wrapper(BS->CloseProtocol, 4, image, &LoadedImageProtocol, image, NULL);
247 return err;
248--
2492.7.4
250
diff --git a/common/recipes-bsp/systemd-boot/systemd-boot/0003-sd-boot-Support-global-kernel-command-line-fragment.patch b/common/recipes-bsp/systemd-boot/systemd-boot/0003-sd-boot-Support-global-kernel-command-line-fragment.patch
new file mode 100644
index 0000000..a4b6355
--- /dev/null
+++ b/common/recipes-bsp/systemd-boot/systemd-boot/0003-sd-boot-Support-global-kernel-command-line-fragment.patch
@@ -0,0 +1,66 @@
1From 1e33f99e13a70c19c1f63f6ef1c5522a09adece6 Mon Sep 17 00:00:00 2001
2From: Jianxun Zhang <jianxun.zhang@linux.intel.com>
3Date: Mon, 20 Jun 2016 13:08:20 -0700
4Subject: [PATCH 3/3] sd-boot: Support global kernel command line fragment
5
6Query file blob KBOOTPARAM from RMC. If it exists, we append
7it to the new linux boot entry's cmdline. A boot entry could
8be read from a .conf file on ESP, RMC database, or embedded
9linux image. content in KBOOTPARAM is effective in all of
10these cases.
11
12Upstream-Status: Pending
13
14Signed-off-by: Jianxun Zhang <jianxun.zhang@linux.intel.com>
15---
16 src/boot/efi/boot.c | 34 ++++++++++++++++++++++++++++++++++
17 1 file changed, 34 insertions(+)
18
19diff --git a/src/boot/efi/boot.c b/src/boot/efi/boot.c
20index d1b029b..8dffc48 100644
21--- a/src/boot/efi/boot.c
22+++ b/src/boot/efi/boot.c
23@@ -846,6 +846,40 @@ static VOID config_add_entry(Config *config, ConfigEntry *entry) {
24 config->entries = ReallocatePool(config->entries,
25 sizeof(VOID *) * config->entry_count, sizeof(VOID *) * i);
26 }
27+
28+ /* rmc: a linux entry could be added from .conf file or an embedded linux image
29+ * we put appending global command line here to cover both of two cases.
30+ */
31+ if (entry->type == LOADER_LINUX && rmc_db && rmc_fp) {
32+ rmc_file_t rmc_kp;
33+
34+ if (!rmc_query_file_by_fp(rmc_fp, rmc_db, "KBOOTPARAM", &rmc_kp)) {
35+ CHAR8 *cmdline;
36+ CHAR16 *s;
37+ CHAR16 *t;
38+ CHAR16 *p;
39+
40+ cmdline = AllocatePool(rmc_kp.blob_len * sizeof(CHAR8) + 1);
41+ CopyMem(cmdline, rmc_kp.blob, rmc_kp.blob_len);
42+ cmdline[rmc_kp.blob_len] = '\0';
43+ p = stra_to_str(cmdline);
44+ t = p;
45+
46+ while (*t) {
47+ if (*t == '\n')
48+ *t = '\0';
49+ t++;
50+ }
51+
52+ s = PoolPrint(L"%s %s", entry->options, p);
53+ FreePool(entry->options);
54+ FreePool(p);
55+ FreePool(cmdline);
56+
57+ entry->options = s;
58+ }
59+ }
60+
61 config->entries[config->entry_count++] = entry;
62 }
63
64--
652.7.4
66
diff --git a/common/recipes-bsp/systemd-boot/systemd-boot/0004-sd-boot-Support-global-kernel-command-line-fragment-in-EFI-stub.patch b/common/recipes-bsp/systemd-boot/systemd-boot/0004-sd-boot-Support-global-kernel-command-line-fragment-in-EFI-stub.patch
new file mode 100644
index 0000000..7508269
--- /dev/null
+++ b/common/recipes-bsp/systemd-boot/systemd-boot/0004-sd-boot-Support-global-kernel-command-line-fragment-in-EFI-stub.patch
@@ -0,0 +1,81 @@
1From 4cb9c65ea9c0eba3ba04d036dccd4a5ab3d2547b Mon Sep 17 00:00:00 2001
2From: Mikko Ylinen <mikko.ylinen@intel.com>
3Date: Fri, 27 Jan 2017 13:31:45 +0200
4Subject: [PATCH] sd-boot: support global kernel command line in EFI stub
5
6This change integrates rmc into EFI stub and supports a
7global fragment (RMC KBOOTPARAM) that is appended to the
8cmdline at boot.
9
10The fragment is board-specific and read from the database.
11
12Implements [YOCTO #10924].
13
14Upstream-status: Pending
15
16Signed-off-by: Mikko Ylinen <mikko.ylinen@intel.com>
17---
18 src/boot/efi/stub.c | 33 +++++++++++++++++++++++++++++++++
19 1 file changed, 33 insertions(+)
20
21diff --git a/src/boot/efi/stub.c b/src/boot/efi/stub.c
22index 1e250f34f..f3865199f 100644
23--- a/src/boot/efi/stub.c
24+++ b/src/boot/efi/stub.c
25@@ -13,6 +13,7 @@
26
27 #include <efi.h>
28 #include <efilib.h>
29+#include <rmc_api.h>
30
31 #include "disk.h"
32 #include "graphics.h"
33@@ -48,6 +49,9 @@ EFI_STATUS efi_main(EFI_HANDLE image, EFI_SYSTEM_TABLE *sys_table) {
34 UINTN cmdline_len;
35 CHAR16 uuid[37];
36 EFI_STATUS err;
37+ INTN len;
38+ CHAR8 *rmc_db = NULL;
39+ rmc_file_t rmc_file;
40
41 InitializeLib(image, sys_table);
42
43@@ -112,6 +116,35 @@ EFI_STATUS efi_main(EFI_HANDLE image, EFI_SYSTEM_TABLE *sys_table) {
44 #endif
45 }
46
47+ len = file_read(root_dir, L"\\rmc.db", 0, 0, &rmc_db);
48+ if (len <= 0)
49+ rmc_db = NULL;
50+
51+ /* If the board has a fragment in rmc database, append it to the cmdline */
52+ if (rmc_db && !rmc_gimme_file(sys_table, rmc_db, "KBOOTPARAM", &rmc_file)) {
53+ CHAR8 *line;
54+ UINTN i = 0;
55+ UINTN j;
56+
57+ line = AllocatePool(rmc_file.blob_len + cmdline_len + 2);
58+
59+ while (i < cmdline_len && cmdline[i] != '\0') {
60+ line[i] = cmdline[i];
61+ i++;
62+ }
63+
64+ line[i++] = ' ';
65+
66+ for (j=0; j < rmc_file.blob_len; j++)
67+ line[i+j] = rmc_file.blob[j];
68+ line[i+j] = '\0';
69+
70+ cmdline = line;
71+ cmdline_len = i + j;
72+
73+ FreePool(rmc_db);
74+ }
75+
76 /* export the device path this image is started from */
77 if (disk_get_part_uuid(loaded_image->DeviceHandle, uuid) == EFI_SUCCESS)
78 efivar_set(L"LoaderDevicePartUUID", uuid, FALSE);
79--
802.11.0
81
diff --git a/common/recipes-bsp/systemd-boot/systemd-boot/rmc-boot.inc b/common/recipes-bsp/systemd-boot/systemd-boot/rmc-boot.inc
new file mode 100644
index 0000000..1172d53
--- /dev/null
+++ b/common/recipes-bsp/systemd-boot/systemd-boot/rmc-boot.inc
@@ -0,0 +1,12 @@
1DEPENDS_append_intel-x86-common = " rmc rmc-efi"
2
3EXTRA_OEMAKE_append_intel-x86-common = ' EFI_LDFLAGS="-L${STAGING_DIR_HOST}/usr/lib" EFI_CFLAGS="-I${STAGING_INCDIR}/rmc -DRMC_EFI"'
4
5SRC_URI_append_intel-x86-common = " \
6 file://0001-sd-boot-Link-RMC-library-into-bootloader-and-stub.patch \
7 file://0002-sd-boot-Load-board-specific-boot-entries-from-RMC-da.patch \
8 file://0003-sd-boot-Support-global-kernel-command-line-fragment.patch \
9 file://0004-sd-boot-Support-global-kernel-command-line-fragment-in-EFI-stub.patch \
10 file://0001-efi-boot.c-workaround-for-Joule-BIOS-hang.patch \
11 file://0001-sd-boot-stub-check-LoadOptions-contains-data.patch \
12 "
diff --git a/common/recipes-bsp/systemd-boot/systemd-boot/systemd-boot.inc b/common/recipes-bsp/systemd-boot/systemd-boot/systemd-boot.inc
new file mode 100644
index 0000000..fcce6ce
--- /dev/null
+++ b/common/recipes-bsp/systemd-boot/systemd-boot/systemd-boot.inc
@@ -0,0 +1,7 @@
1EXTRA_OEMAKE_append_intel-x86-common = ' EFI_LDFLAGS="-L${STAGING_DIR_HOST}/usr/lib" '
2
3SRC_URI_append_intel-x86-common = " \
4 file://0001-efi-boot.c-workaround-for-Joule-BIOS-hang.patch \
5 file://0001-sd-boot-stub-check-LoadOptions-contains-data.patch \
6 "
7
diff --git a/common/recipes-bsp/systemd-boot/systemd-boot_%.bbappend b/common/recipes-bsp/systemd-boot/systemd-boot_%.bbappend
new file mode 100644
index 0000000..557c049
--- /dev/null
+++ b/common/recipes-bsp/systemd-boot/systemd-boot_%.bbappend
@@ -0,0 +1,23 @@
1FILESEXTRAPATHS_prepend_intel-x86-common := "${THISDIR}/systemd-boot:"
2
3# Pin systemd revision down for systemd-boot recipe.
4# Patches could not be applied cleanly when systemd in OE is updated,
5# though we don't expect a lot of changes could happen in bootloader.
6# RMC is designed to support a large number of types of boards, so we
7# should do explicit update with validation to prevent regression even
8# resolving conflicts for a new tip could be done in a short time.
9
10# Revision: systemd v232 in OE
11SRCREV_intel-x86-common = "a1e2ef7ec912902d8142e7cb5830cbfb47dba86c"
12
13include systemd-boot/${EFI_PROVIDER}.inc
14
15PACKAGE_ARCH_intel-x86-common = "${INTEL_COMMON_PACKAGE_ARCH}"
16
17do_compile_append_intel-x86-common() {
18 oe_runmake linux${SYSTEMD_BOOT_EFI_ARCH}.efi.stub
19}
20
21do_deploy_append_intel-x86-common() {
22 install ${B}/linux*.efi.stub ${DEPLOYDIR}
23}
diff --git a/common/recipes-bsp/thermald/thermald_1.6.bb b/common/recipes-bsp/thermald/thermald_1.6.bb
new file mode 100644
index 0000000..e6cbb62
--- /dev/null
+++ b/common/recipes-bsp/thermald/thermald_1.6.bb
@@ -0,0 +1,33 @@
1SUMMARY = "Linux thermal daemon"
2
3DESCRIPTION = "Thermal Daemon is a Linux daemon used to prevent the \
4overheating of platforms. This daemon monitors temperature and applies \
5compensation using available cooling methods."
6
7HOMEPAGE = "https://github.com/01org/thermal_daemon"
8
9DEPENDS = "dbus dbus-glib dbus-glib-native libxml2 glib-2.0 glib-2.0-native"
10DEPENDS += "${@bb.utils.contains('DISTRO_FEATURES','systemd','systemd','',d)}"
11DEPENDS_append_libc-musl = " argp-standalone"
12DEPENDS_append_toolchain-clang = " openmp"
13LICENSE = "GPL-2.0"
14LIC_FILES_CHKSUM = "file://COPYING;md5=ea8831610e926e2e469075b52bf08848"
15
16SRC_URI = "git://github.com/intel/thermal_daemon/"
17SRCREV = "5f1be4d9d6f3b27d2c9884f833ca05cdcb4428e0"
18S = "${WORKDIR}/git"
19
20inherit pkgconfig autotools systemd
21
22FILES_${PN} += "${datadir}/dbus-1/system-services/*.service"
23
24SYSTEMD_SERVICE_${PN} = "thermald.service"
25
26COMPATIBLE_HOST = '(i.86|x86_64).*-linux'
27
28CONFFILES_${PN} = " \
29 ${sysconfdir}/thermald/thermal-conf.xml \
30 ${sysconfdir}/thermald/thermal-cpu-cdev-order.xml \
31 "
32
33UPSTREAM_CHECK_URI = "https://github.com/01org/thermal_daemon/releases"
diff --git a/common/recipes-core/images/core-image-minimal-initramfs.bbappend b/common/recipes-core/images/core-image-minimal-initramfs.bbappend
new file mode 100644
index 0000000..4ddca37
--- /dev/null
+++ b/common/recipes-core/images/core-image-minimal-initramfs.bbappend
@@ -0,0 +1,6 @@
1# Use initramfs-framework instead of initramfs-live*
2PACKAGE_INSTALL_remove_intel-x86-common = "initramfs-live-boot initramfs-live-install initramfs-live-install-efi"
3PACKAGE_INSTALL_append_intel-x86-common = " initramfs-framework-base initramfs-module-udev initramfs-module-setup-live initramfs-module-install-efi"
4
5# Add i915 graphics firmware
6PACKAGE_INSTALL_append_intel-x86-common = " linux-firmware-i915"
diff --git a/common/recipes-core/images/core-image-tiny.bb b/common/recipes-core/images/core-image-tiny.bb
new file mode 100644
index 0000000..ed39fd7
--- /dev/null
+++ b/common/recipes-core/images/core-image-tiny.bb
@@ -0,0 +1,37 @@
1SUMMARY = "A tiny image just capable of allowing a device to boot from RAM, \
2this image recipe generates an image file which rather boots from initrd than \
3from storage, it achieves this by using wic to pick up the artifacts generated \
4by the core-image-tiny-initramfs image"
5
6# The actual rootfs/initrd will be the one from core-image-tiny-initramfs, so
7# we reset IMAGE_INSTALL to avoid building other things that will be pointless
8IMAGE_INSTALL = ""
9
10# Do not pollute the initrd image with rootfs features
11IMAGE_FEATURES = ""
12
13IMAGE_LINGUAS = " "
14
15LICENSE = "MIT"
16
17IMAGE_ROOTFS_SIZE ?= "8192"
18
19IMAGE_FSTYPES = "wic"
20inherit core-image
21
22# We get some parts from image-live that we need in order to boot from initrd
23INITRD_IMAGE_LIVE ?= "core-image-tiny-initramfs"
24
25python() {
26 image_b = d.getVar('IMAGE_BASENAME')
27 initrd_i = d.getVar('INITRD_IMAGE_LIVE')
28 if image_b == initrd_i:
29 bb.error('INITRD_IMAGE_LIVE %s cannot use the requested IMAGE_FSTYPE' % initrd_i)
30 bb.fatal('Check IMAGE_FSTYPES and INITRAMFS_FSTYPES settings.')
31 elif initrd_i:
32 d.appendVarFlag('do_image', 'depends', ' %s:do_image_complete' % initrd_i)
33}
34
35WKS_FILE_intel-corei7-64 = "core-image-tiny.wks.in"
36WKS_FILE_intel-core2-32 = "core-image-tiny.wks.in"
37WKS_FILE_intel-quark = "mktinygalileodisk.wks"
diff --git a/common/recipes-core/initrdscripts/files/intel-x86-common/init-install-efi.sh b/common/recipes-core/initrdscripts/files/intel-x86-common/init-install-efi.sh
new file mode 100644
index 0000000..a7a2ad4
--- /dev/null
+++ b/common/recipes-core/initrdscripts/files/intel-x86-common/init-install-efi.sh
@@ -0,0 +1,342 @@
1#!/bin/sh -e
2#
3# Copyright (c) 2016, Intel Corporation.
4# All rights reserved.
5#
6# install.sh [device_name] [rootfs_name]
7#
8# This file is a copy of file with same name in OE:
9# meta/recipes-core/initrdscripts/files/. We modify
10# it for RMC feature to deploy file blobs from RMC
11# database file to target.
12
13PATH=/sbin:/bin:/usr/sbin:/usr/bin
14
15# We need 20 Mb for the boot partition
16boot_size=20
17
18# 5% for swap
19swap_ratio=5
20
21# Get a list of hard drives
22hdnamelist=""
23live_dev_name=`cat /proc/mounts | grep ${1%/} | awk '{print $1}'`
24live_dev_name=${live_dev_name#\/dev/}
25# Only strip the digit identifier if the device is not an mmc
26case $live_dev_name in
27 mmcblk*)
28 ;;
29 nvme*)
30 ;;
31 *)
32 live_dev_name=${live_dev_name%%[0-9]*}
33 ;;
34esac
35
36echo "Searching for hard drives ..."
37
38for device in `ls /sys/block/`; do
39 case $device in
40 loop*)
41 # skip loop device
42 ;;
43 sr*)
44 # skip CDROM device
45 ;;
46 ram*)
47 # skip ram device
48 ;;
49 *)
50 # skip the device LiveOS is on
51 # Add valid hard drive name to the list
52 case $device in
53 $live_dev_name*)
54 # skip the device we are running from
55 ;;
56 *)
57 hdnamelist="$hdnamelist $device"
58 ;;
59 esac
60 ;;
61 esac
62done
63
64if [ -z "${hdnamelist}" ]; then
65 echo "You need another device (besides the live device /dev/${live_dev_name}) to install the image. Installation aborted."
66 exit 1
67fi
68
69TARGET_DEVICE_NAME=""
70for hdname in $hdnamelist; do
71 # Display found hard drives and their basic info
72 echo "-------------------------------"
73 echo /dev/$hdname
74 if [ -r /sys/block/$hdname/device/vendor ]; then
75 echo -n "VENDOR="
76 cat /sys/block/$hdname/device/vendor
77 fi
78 if [ -r /sys/block/$hdname/device/model ]; then
79 echo -n "MODEL="
80 cat /sys/block/$hdname/device/model
81 fi
82 if [ -r /sys/block/$hdname/device/uevent ]; then
83 echo -n "UEVENT="
84 cat /sys/block/$hdname/device/uevent
85 fi
86 echo
87done
88
89# Get user choice
90while true; do
91 echo "Please select an install target or press n to exit ($hdnamelist ): "
92 read answer
93 if [ "$answer" = "n" ]; then
94 echo "Installation manually aborted."
95 exit 1
96 fi
97 for hdname in $hdnamelist; do
98 if [ "$answer" = "$hdname" ]; then
99 TARGET_DEVICE_NAME=$answer
100 break
101 fi
102 done
103 if [ -n "$TARGET_DEVICE_NAME" ]; then
104 break
105 fi
106done
107
108if [ -n "$TARGET_DEVICE_NAME" ]; then
109 echo "Installing image on /dev/$TARGET_DEVICE_NAME ..."
110else
111 echo "No hard drive selected. Installation aborted."
112 exit 1
113fi
114
115device=/dev/$TARGET_DEVICE_NAME
116
117#
118# The udev automounter can cause pain here, kill it
119#
120rm -f /etc/udev/rules.d/automount.rules
121rm -f /etc/udev/scripts/mount*
122
123#
124# Unmount anything the automounter had mounted
125#
126umount ${device}* 2> /dev/null || /bin/true
127
128mkdir -p /tmp
129
130# Create /etc/mtab if not present
131if [ ! -e /etc/mtab ]; then
132 cat /proc/mounts > /etc/mtab
133fi
134
135disk_size=$(parted ${device} unit mb print | grep '^Disk .*: .*MB' | cut -d" " -f 3 | sed -e "s/MB//")
136
137swap_size=$((disk_size*swap_ratio/100))
138rootfs_size=$((disk_size-boot_size-swap_size))
139
140rootfs_start=$((boot_size))
141rootfs_end=$((rootfs_start+rootfs_size))
142swap_start=$((rootfs_end))
143
144# MMC devices are special in a couple of ways
145# 1) they use a partition prefix character 'p'
146# 2) they are detected asynchronously (need rootwait)
147rootwait=""
148part_prefix=""
149if [ ! "${device#/dev/mmcblk}" = "${device}" ] || \
150[ ! "${device#/dev/nvme}" = "${device}" ]; then
151 part_prefix="p"
152 rootwait="rootwait"
153fi
154bootfs=${device}${part_prefix}1
155rootfs=${device}${part_prefix}2
156swap=${device}${part_prefix}3
157
158echo "*****************"
159echo "Boot partition size: $boot_size MB ($bootfs)"
160echo "Rootfs partition size: $rootfs_size MB ($rootfs)"
161echo "Swap partition size: $swap_size MB ($swap)"
162echo "*****************"
163echo "Deleting partition table on ${device} ..."
164dd if=/dev/zero of=${device} bs=512 count=35
165
166echo "Creating new partition table on ${device} ..."
167parted ${device} mklabel gpt
168
169echo "Creating boot partition on $bootfs"
170parted ${device} mkpart boot fat32 0% $boot_size
171parted ${device} set 1 boot on
172
173echo "Creating rootfs partition on $rootfs"
174parted ${device} mkpart root ext3 $rootfs_start $rootfs_end
175
176echo "Creating swap partition on $swap"
177parted ${device} mkpart swap linux-swap $swap_start 100%
178
179parted ${device} print
180
181echo "Formatting $bootfs to vfat..."
182mkfs.vfat $bootfs
183
184echo "Formatting $rootfs to ext3..."
185mkfs.ext3 $rootfs
186
187echo "Formatting swap partition...($swap)"
188mkswap $swap
189
190mkdir /tgt_root
191mkdir /src_root
192mkdir -p /boot
193
194# Handling of the target root partition
195mount $rootfs /tgt_root
196mount -o rw,loop,noatime,nodiratime /run/media/$1/$2 /src_root
197echo "Copying rootfs files..."
198cp -a /src_root/* /tgt_root
199if [ -d /tgt_root/etc/ ] ; then
200 boot_uuid=$(blkid -o value -s UUID ${bootfs})
201 swap_part_uuid=$(blkid -o value -s PARTUUID ${swap})
202 echo "/dev/disk/by-partuuid/$swap_part_uuid swap swap defaults 0 0" >> /tgt_root/etc/fstab
203 echo "UUID=$boot_uuid /boot vfat defaults 1 2" >> /tgt_root/etc/fstab
204 # We dont want udev to mount our root device while we're booting...
205 if [ -d /tgt_root/etc/udev/ ] ; then
206 echo "${device}" >> /tgt_root/etc/udev/mount.blacklist
207 fi
208fi
209
210# Handling of the target boot partition
211mount $bootfs /boot
212echo "Preparing boot partition..."
213
214EFIDIR="/boot/EFI/BOOT"
215mkdir -p $EFIDIR
216# Copy the efi loader
217cp /run/media/$1/EFI/BOOT/*.efi $EFIDIR
218
219# RMC deployment
220RMC_CMD=/src_root/usr/bin/rmc
221RMC_DB=/run/media/$1/rmc.db
222
223# We don't want to quit when a step failed. For example,
224# a file system could not support some operations.
225set +e
226
227if [ -f "${RMC_DB}" ] && [ -f "${RMC_CMD}" ]; then
228 echo "Found RMC database and tool, start RMC deployment"
229 # query INSTALLER.CONFIG from RMC DB
230 if ${RMC_CMD} -B INSTALLER.CONFIG -d "${RMC_DB}" -o /tmp/installer.config; then
231 while IFS=':' read -r NAME TGT_UID TGT_GID TGT_MODE TGT_PATH; do
232 # skip comment
233 # The regexp in grep works with busybox grep which doesn't
234 # seem to have a -P to recognize '\t'. But this expression could not
235 # work with gnu grep...
236 if echo "$NAME"|grep -q $'^[ \t]*#'; then
237 continue
238 fi
239 # check if we should create a directory (last char in target path is '/')
240 # or deploy a file
241 LAST_CHAR=$(echo "${TGT_PATH:$((${#TGT_PATH}-1)):1}")
242
243 # Do not bail out for failures but user should get stderr message
244 if [ ${LAST_CHAR} = "/" ]; then
245 # name field is skipped for directory
246 echo "DIR: ${TGT_UID}:${TGT_GID}:${TGT_MODE} => ${TGT_PATH}"
247 mkdir -p "$TGT_PATH"
248 chown "${TGT_UID}:${TGT_GID}" "$TGT_PATH"
249 chmod "${TGT_MODE}" "$TGT_PATH"
250 else
251 ${RMC_CMD} -B "${NAME}" -d "${RMC_DB}" -o "${TGT_PATH}"
252 echo "FILE: ${NAME}:${TGT_UID}:${TGT_GID}:${TGT_MODE} => ${TGT_PATH}"
253 chown "${TGT_UID}:${TGT_GID}" "$TGT_PATH"
254 chmod "${TGT_MODE}" "$TGT_PATH"
255 fi
256 done < /tmp/installer.config
257 rm -rf /tmp/installer.config
258
259 # remove rmc from target since we don't think it is a valid
260 # case to run rmc after installation.
261 rm -rf /tgt_root/usr/bin/rmc
262 echo "RMC deployment finished"
263 else
264 echo "INSTALLER.CONFIG is not found, skip RMC deployment"
265 fi
266
267 # Final retouching by calling post-install hook
268 if ${RMC_CMD} -B POSTINSTALL.sh -d "${RMC_DB}" -o /tmp/POSTINSTALL.sh; then
269 echo "Found POSTINSTALL.sh execute it..."
270 chmod 500 /tmp/POSTINSTALL.sh
271 /tmp/POSTINSTALL.sh
272 rm -rf /tmp/POSTINSTALL.sh
273 fi
274fi
275set -e
276
277if [ -f /run/media/$1/EFI/BOOT/grub.cfg ]; then
278 root_part_uuid=$(blkid -o value -s PARTUUID ${rootfs})
279 GRUBCFG="$EFIDIR/grub.cfg"
280 cp /run/media/$1/EFI/BOOT/grub.cfg $GRUBCFG
281 # Update grub config for the installed image
282 # Delete the install entry
283 sed -i "/menuentry 'install'/,/^}/d" $GRUBCFG
284 # Delete the initrd lines
285 sed -i "/initrd /d" $GRUBCFG
286 # Delete any LABEL= strings
287 sed -i "s/ LABEL=[^ ]*/ /" $GRUBCFG
288 # Delete any root= strings
289 sed -i "s/ root=[^ ]*/ /g" $GRUBCFG
290 # Add the root= and other standard boot options
291 sed -i "s@linux /vmlinuz *@linux /vmlinuz root=PARTUUID=$root_part_uuid rw $rootwait quiet @" $GRUBCFG
292fi
293
294if [ -d /run/media/$1/loader ]; then
295 rootuuid=$(blkid -o value -s PARTUUID ${rootfs})
296 GUMMIBOOT_CFGS="/boot/loader/entries/*.conf"
297 if [ -d /boot/loader ]; then
298 # Don't override loader.conf RMC already deployed
299 if [ ! -f /boot/loader/loader.conf ]; then
300 cp /run/media/$1/loader/loader.conf /boot/loader/
301 fi
302 # only copy built OE entries when RMC entries don't exist.
303 if [ ! -d /boot/loader/entries ] || [ ! ls /boot/loader/entries/*.conf &>/dev/null ]; then
304 cp -dr /run/media/$1/loader/entries /boot/loader
305 fi
306 else
307 # copy config files for gummiboot
308 cp -dr /run/media/$1/loader /boot
309 # delete the install entry
310 rm -f /boot/loader/entries/install.conf
311 fi
312 # delete the initrd lines
313 sed -i "/initrd /d" $GUMMIBOOT_CFGS
314 # delete any LABEL= strings
315 sed -i "s/ LABEL=[^ ]*/ /" $GUMMIBOOT_CFGS
316 # delete any root= strings
317 sed -i "s/ root=[^ ]*/ /" $GUMMIBOOT_CFGS
318 # add the root= and other standard boot options
319 sed -i "s@options *@options root=PARTUUID=$rootuuid rw $rootwait quiet @" $GUMMIBOOT_CFGS
320 # if RMC feature presents, append global kernel command line fragment when it exists.
321 if [ -f "${RMC_DB}" ] && [ -f "${RMC_CMD}" ]; then
322 if ${RMC_CMD} -B KBOOTPARAM -d "${RMC_DB}" -o /tmp/kbootparam; then
323 sed -i "/^[ \t]*options/ s/$/ $(cat /tmp/kbootparam)/" $GUMMIBOOT_CFGS
324 rm /tmp/kbootparam
325 fi
326 fi
327fi
328
329cp /run/media/$1/vmlinuz /boot
330
331umount /src_root
332umount /tgt_root
333umount /boot
334
335sync
336
337echo "Remove your installation media, and press ENTER"
338
339read enter
340
341echo "Rebooting..."
342reboot -f
diff --git a/common/recipes-core/initrdscripts/initramfs-live-install-efi_%.bbappend b/common/recipes-core/initrdscripts/initramfs-live-install-efi_%.bbappend
new file mode 100644
index 0000000..0b3a1d3
--- /dev/null
+++ b/common/recipes-core/initrdscripts/initramfs-live-install-efi_%.bbappend
@@ -0,0 +1,2 @@
1FILESEXTRAPATHS_prepend_intel-x86-common := "${THISDIR}/files:"
2PACKAGE_ARCH_intel-x86-common = "${INTEL_COMMON_PACKAGE_ARCH}"
diff --git a/common/recipes-core/microcode/intel-microcode_20170707.bb b/common/recipes-core/microcode/intel-microcode_20170707.bb
new file mode 100644
index 0000000..2244088
--- /dev/null
+++ b/common/recipes-core/microcode/intel-microcode_20170707.bb
@@ -0,0 +1,66 @@
1SUMMARY = "Intel Processor Microcode Datafile for Linux"
2HOMEPAGE = "http://www.intel.com/"
3DESCRIPTION = "The microcode data file contains the latest microcode\
4 definitions for all Intel processors. Intel releases microcode updates\
5 to correct processor behavior as documented in the respective processor\
6 specification updates. While the regular approach to getting this microcode\
7 update is via a BIOS upgrade, Intel realizes that this can be an\
8 administrative hassle. The Linux operating system and VMware ESX\
9 products have a mechanism to update the microcode after booting.\
10 For example, this file will be used by the operating system mechanism\
11 if the file is placed in the /etc/firmware directory of the Linux system."
12
13LICENSE = "Intel-Microcode-License"
14LIC_FILES_CHKSUM = "file://microcode.dat;md5=e5b1dc41901d2de706d4bccee94bbadc"
15
16SRC_URI = "https://downloadmirror.intel.com/26925/eng/microcode-${PV}.tgz"
17SRC_URI[md5sum] = "fe4bcb12e4600629a81fb65208c34248"
18SRC_URI[sha256sum] = "4fd44769bf52a7ac11e90651a307aa6e56ca6e1a814e50d750ba8207973bee93"
19
20DEPENDS = "iucode-tool-native"
21S = "${WORKDIR}"
22
23COMPATIBLE_HOST = "(i.86|x86_64).*-linux"
24PACKAGE_ARCH = "${MACHINE_ARCH}"
25
26inherit deploy
27
28# Use any of the iucode_tool parameters to filter specific microcodes from the data file
29# For further information, check the iucode-tool's manpage : http://manned.org/iucode-tool
30UCODE_FILTER_PARAMETERS ?= ""
31
32do_compile() {
33 mkdir -p ${WORKDIR}/ucode/kernel/x86/microcode
34 ${STAGING_DIR_NATIVE}${sbindir_native}/iucode_tool \
35 ${UCODE_FILTER_PARAMETERS} \
36 --overwrite \
37 --write-to=${WORKDIR}/microcode_${PV}.bin \
38 ${WORKDIR}/microcode.dat
39
40 ${STAGING_DIR_NATIVE}${sbindir_native}/iucode_tool \
41 ${UCODE_FILTER_PARAMETERS} \
42 --overwrite \
43 --write-earlyfw=${WORKDIR}/microcode_${PV}.cpio \
44 ${WORKDIR}/microcode.dat
45}
46
47do_install() {
48 install -d ${D}${base_libdir}/firmware/intel-ucode/
49 install ${WORKDIR}/microcode_${PV}.bin ${D}${base_libdir}/firmware/intel-ucode/
50 cd ${D}${base_libdir}/firmware/intel-ucode/
51 ln -sf microcode_${PV}.bin microcode.bin
52}
53
54do_deploy() {
55 install -d ${DEPLOYDIR}
56 install ${S}/microcode_${PV}.cpio ${DEPLOYDIR}/
57 cd ${DEPLOYDIR}
58 rm -f microcode.cpio
59 ln -sf microcode_${PV}.cpio microcode.cpio
60}
61
62addtask deploy before do_build after do_compile
63
64PACKAGES = "${PN}"
65
66FILES_${PN} = "${base_libdir}"
diff --git a/common/recipes-core/microcode/iucode-tool/0001-Makefile.am-Add-arg-parse-library-for-MUSL-support.patch b/common/recipes-core/microcode/iucode-tool/0001-Makefile.am-Add-arg-parse-library-for-MUSL-support.patch
new file mode 100644
index 0000000..ca97d2a
--- /dev/null
+++ b/common/recipes-core/microcode/iucode-tool/0001-Makefile.am-Add-arg-parse-library-for-MUSL-support.patch
@@ -0,0 +1,29 @@
1From 5f6826b3a59dedf508d5a6122362d69a4813e8e6 Mon Sep 17 00:00:00 2001
2From: Saul Wold <sgw@linux.intel.com>
3Date: Fri, 3 Feb 2017 16:08:51 -0800
4Subject: [PATCH] Makefile.am: Add arg-parse library for MUSL support
5
6iucode-tool needs argp-standalone when used with MUSL, so add this
7patch to the Makefile to link with argp
8
9Upstream-Status: Pending
10Signed-off-by: Saul Wold <sgw@linux.intel.com>
11---
12 Makefile.am | 1 +
13 1 file changed, 1 insertion(+)
14
15diff --git a/Makefile.am b/Makefile.am
16index 415a241..764fb61 100644
17--- a/Makefile.am
18+++ b/Makefile.am
19@@ -5,6 +5,7 @@
20 sbin_PROGRAMS = iucode_tool
21 man_MANS = iucode_tool.8
22
23+iucode_tool_LDADD = -largp
24 iucode_tool_SOURCES = intel_microcode.h intel_microcode.c iucode_tool.c
25 EXTRA_DIST = autogen.sh CONTRIBUTING
26
27--
282.7.4
29
diff --git a/common/recipes-core/microcode/iucode-tool_2.1.2.bb b/common/recipes-core/microcode/iucode-tool_2.1.2.bb
new file mode 100644
index 0000000..e1fb56f
--- /dev/null
+++ b/common/recipes-core/microcode/iucode-tool_2.1.2.bb
@@ -0,0 +1,33 @@
1SUMMARY = "Update Intel CPU microcode"
2
3DESCRIPTION = "iucode_tool is a program to manipulate Intel i686 and X86-64\
4 processor microcode update collections, and to use the kernel facilities to\
5 update the microcode on Intel system processors. It can load microcode data\
6 files in text and binary format, sort, list and filter the microcode updates\
7 contained in these files, write selected microcode updates to a new file in\
8 binary format, or upload them to the kernel. \
9 It operates on microcode data downloaded directly from Intel:\
10 http://feeds.downloadcenter.intel.com/rss/?p=2371\
11"
12HOMEPAGE = "https://gitlab.com/iucode-tool/"
13BUGTRACKER = "https://bugs.debian.org/cgi-bin/pkgreport.cgi?ordering=normal;archive=0;src=iucode-tool;repeatmerged=0"
14
15LICENSE = "GPLv2+"
16LIC_FILES_CHKSUM = "file://COPYING;md5=751419260aa954499f7abaabaa882bbe \
17 file://iucode_tool.c;beginline=1;endline=15;md5=5d8e3639c3b6a80e7d5e0e073933da16"
18
19DEPENDS_append_libc-musl = " argp-standalone"
20
21SRC_URI = "https://gitlab.com/iucode-tool/releases/raw/master/iucode-tool_${PV}.tar.xz"
22SRC_URI_append_libc-musl = " file://0001-Makefile.am-Add-arg-parse-library-for-MUSL-support.patch"
23
24SRC_URI[md5sum] = "c6f131a0b69443f5498782a2335973fa"
25SRC_URI[sha256sum] = "01f1c02ba6935e0ac8440fb594c2ef57ce4437fcbce539e3ef329f55a6fd71ab"
26
27inherit autotools
28
29BBCLASSEXTEND = "native"
30
31COMPATIBLE_HOST = "(i.86|x86_64).*-linux"
32
33UPSTREAM_CHECK_URI = "https://gitlab.com/iucode-tool/releases"
diff --git a/common/recipes-core/ovmf/files/0001-ovmf-RefkitTestCA-TEST-UEFI-SecureBoot.patch b/common/recipes-core/ovmf/files/0001-ovmf-RefkitTestCA-TEST-UEFI-SecureBoot.patch
new file mode 100644
index 0000000..62db063
--- /dev/null
+++ b/common/recipes-core/ovmf/files/0001-ovmf-RefkitTestCA-TEST-UEFI-SecureBoot.patch
@@ -0,0 +1,105 @@
1From 48e511481d83c1614cd00a5a2edcf6b5d746b9c4 Mon Sep 17 00:00:00 2001
2From: Mikko Ylinen <mikko.ylinen@linux.intel.com>
3Date: Fri, 7 Apr 2017 12:06:14 +0300
4Subject: [PATCH] ovmf: RefkitTestCA: TEST UEFI SecureBoot
5
6This patch adds refkit-db.cer (via xxd -i) in OVMF's db
7signature database when used with EnrollDefaultKeys EFI
8application. It's used for testing purposes only.
9
10Images signed with refkit-db keys are allowed to boot.
11
12Signed-off-by: Mikko Ylinen <mikko.ylinen@linux.intel.com>
13---
14 OvmfPkg/EnrollDefaultKeys/EnrollDefaultKeys.c | 68 +++++++++++++++++++++++++++
15 1 file changed, 68 insertions(+)
16
17diff --git a/OvmfPkg/EnrollDefaultKeys/EnrollDefaultKeys.c b/OvmfPkg/EnrollDefaultKeys/EnrollDefaultKeys.c
18index 24ab977..a3c12ba 100644
19--- a/OvmfPkg/EnrollDefaultKeys/EnrollDefaultKeys.c
20+++ b/OvmfPkg/EnrollDefaultKeys/EnrollDefaultKeys.c
21@@ -516,6 +516,73 @@ STATIC CONST UINT8 MicrosoftUefiCA[] = {
22 0x07, 0x92, 0x9b, 0xf5, 0xa6, 0xbc, 0x59, 0x83, 0x58
23 };
24
25+STATIC CONST UINT8 RefkitTestCA[] = {
26+ 0x30, 0x82, 0x02, 0xfb, 0x30, 0x82, 0x01, 0xe3, 0xa0, 0x03, 0x02, 0x01,
27+ 0x02, 0x02, 0x09, 0x00, 0xd4, 0xf6, 0x48, 0xc2, 0x68, 0x19, 0x91, 0xac,
28+ 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01,
29+ 0x0b, 0x05, 0x00, 0x30, 0x14, 0x31, 0x12, 0x30, 0x10, 0x06, 0x03, 0x55,
30+ 0x04, 0x03, 0x0c, 0x09, 0x72, 0x65, 0x66, 0x6b, 0x69, 0x74, 0x2d, 0x64,
31+ 0x62, 0x30, 0x1e, 0x17, 0x0d, 0x31, 0x37, 0x30, 0x34, 0x32, 0x30, 0x31,
32+ 0x32, 0x30, 0x36, 0x33, 0x32, 0x5a, 0x17, 0x0d, 0x31, 0x38, 0x30, 0x34,
33+ 0x32, 0x30, 0x31, 0x32, 0x30, 0x36, 0x33, 0x32, 0x5a, 0x30, 0x14, 0x31,
34+ 0x12, 0x30, 0x10, 0x06, 0x03, 0x55, 0x04, 0x03, 0x0c, 0x09, 0x72, 0x65,
35+ 0x66, 0x6b, 0x69, 0x74, 0x2d, 0x64, 0x62, 0x30, 0x82, 0x01, 0x22, 0x30,
36+ 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x01,
37+ 0x05, 0x00, 0x03, 0x82, 0x01, 0x0f, 0x00, 0x30, 0x82, 0x01, 0x0a, 0x02,
38+ 0x82, 0x01, 0x01, 0x00, 0xb4, 0x1c, 0x22, 0xa6, 0x22, 0x01, 0x57, 0xcd,
39+ 0xf1, 0x4f, 0xaf, 0x72, 0xe3, 0xd9, 0x01, 0x80, 0x50, 0x55, 0xef, 0x02,
40+ 0x5e, 0xeb, 0x99, 0x35, 0xcb, 0x7f, 0x2a, 0x79, 0xff, 0xb5, 0x3e, 0xec,
41+ 0x5d, 0x92, 0x06, 0x30, 0x20, 0xe7, 0x95, 0xad, 0xa4, 0x84, 0x2e, 0x3f,
42+ 0xfa, 0xd7, 0x46, 0xdd, 0x49, 0xa8, 0xe8, 0xe3, 0x79, 0x49, 0xf6, 0x8f,
43+ 0x0b, 0x1d, 0xfe, 0x63, 0xa8, 0xd1, 0x63, 0xa3, 0xd6, 0x0d, 0x4e, 0x6c,
44+ 0x66, 0x5c, 0xd6, 0x66, 0x26, 0xd1, 0x26, 0x98, 0xd4, 0x4f, 0x76, 0xc9,
45+ 0x65, 0x48, 0x58, 0x13, 0x08, 0x31, 0xbc, 0xe5, 0x47, 0x25, 0x65, 0x95,
46+ 0x39, 0x89, 0x5f, 0x02, 0xf1, 0xc5, 0x06, 0x17, 0x58, 0xca, 0x09, 0xfd,
47+ 0xf6, 0x1e, 0xc5, 0x97, 0xda, 0xa3, 0x4e, 0x1a, 0x48, 0xbe, 0xcf, 0x96,
48+ 0x27, 0x04, 0x4b, 0xb7, 0x6d, 0x67, 0xb6, 0x50, 0x18, 0x04, 0x73, 0x51,
49+ 0xd2, 0x6a, 0x2d, 0xdf, 0x3b, 0xab, 0xf2, 0x2d, 0x95, 0xd7, 0xa8, 0xb8,
50+ 0xa8, 0x30, 0xa1, 0xab, 0x8b, 0x92, 0x2b, 0x60, 0x3e, 0x3a, 0xe5, 0x86,
51+ 0x40, 0x71, 0xc1, 0x3f, 0x2d, 0x2e, 0x90, 0xe7, 0xd6, 0xec, 0xcc, 0xc2,
52+ 0x0b, 0x79, 0x83, 0x71, 0x6d, 0xf6, 0xa3, 0xa9, 0x4c, 0xcd, 0x46, 0x81,
53+ 0xdc, 0xef, 0xec, 0x51, 0xbe, 0x81, 0x2a, 0xf1, 0x78, 0x73, 0x41, 0xdb,
54+ 0x54, 0xce, 0x7c, 0xce, 0xa2, 0xe3, 0x90, 0x4f, 0x45, 0x1a, 0xf9, 0x3d,
55+ 0x88, 0xfc, 0x0e, 0xed, 0xd3, 0x69, 0x22, 0x4c, 0xfa, 0x0a, 0x69, 0xd1,
56+ 0x48, 0xc0, 0xaa, 0xa9, 0x3a, 0xb3, 0x8f, 0x10, 0x3a, 0x76, 0xa8, 0x0c,
57+ 0x7a, 0x3d, 0xd8, 0x79, 0xce, 0x1c, 0x96, 0x62, 0xf4, 0x06, 0xee, 0x47,
58+ 0xe8, 0xe0, 0x69, 0x91, 0xae, 0xea, 0x34, 0xcf, 0xda, 0xa8, 0xb4, 0x39,
59+ 0x5e, 0xf3, 0x7a, 0xd0, 0x88, 0x48, 0x47, 0x69, 0x02, 0x03, 0x01, 0x00,
60+ 0x01, 0xa3, 0x50, 0x30, 0x4e, 0x30, 0x1d, 0x06, 0x03, 0x55, 0x1d, 0x0e,
61+ 0x04, 0x16, 0x04, 0x14, 0x68, 0x60, 0x11, 0x25, 0x85, 0x14, 0x78, 0x1b,
62+ 0x1a, 0x9f, 0x46, 0x12, 0xe6, 0x21, 0xe4, 0xef, 0xfb, 0x3b, 0xaa, 0xdd,
63+ 0x30, 0x1f, 0x06, 0x03, 0x55, 0x1d, 0x23, 0x04, 0x18, 0x30, 0x16, 0x80,
64+ 0x14, 0x68, 0x60, 0x11, 0x25, 0x85, 0x14, 0x78, 0x1b, 0x1a, 0x9f, 0x46,
65+ 0x12, 0xe6, 0x21, 0xe4, 0xef, 0xfb, 0x3b, 0xaa, 0xdd, 0x30, 0x0c, 0x06,
66+ 0x03, 0x55, 0x1d, 0x13, 0x04, 0x05, 0x30, 0x03, 0x01, 0x01, 0xff, 0x30,
67+ 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x0b,
68+ 0x05, 0x00, 0x03, 0x82, 0x01, 0x01, 0x00, 0x8f, 0xd2, 0x84, 0x7c, 0x43,
69+ 0x47, 0xca, 0x6b, 0xfd, 0x87, 0x83, 0xd0, 0xef, 0x75, 0xd3, 0x20, 0x52,
70+ 0x73, 0x18, 0xaa, 0x32, 0x71, 0xfb, 0xa5, 0xf4, 0xc9, 0x11, 0xa3, 0x68,
71+ 0x4d, 0xb7, 0x9d, 0xe6, 0xd9, 0x46, 0x24, 0xdc, 0xc7, 0xc2, 0x3b, 0xf9,
72+ 0xb0, 0x98, 0xfc, 0xee, 0x34, 0x6e, 0x10, 0x9b, 0x3d, 0x44, 0x6e, 0x33,
73+ 0x09, 0x11, 0xb8, 0x29, 0xd6, 0x2d, 0x06, 0xcf, 0x67, 0x8f, 0x96, 0x85,
74+ 0x9d, 0x63, 0x72, 0xbf, 0x64, 0x5f, 0x0d, 0xe3, 0xc9, 0x63, 0x19, 0x71,
75+ 0xd4, 0x7d, 0x4c, 0x9c, 0x77, 0x46, 0xda, 0x20, 0x97, 0x6d, 0xbc, 0xdd,
76+ 0xc2, 0x1f, 0xf3, 0x40, 0x38, 0x1e, 0xe7, 0xcc, 0x55, 0x05, 0x72, 0xba,
77+ 0x24, 0x4f, 0xb3, 0x8a, 0x93, 0x0c, 0x30, 0x60, 0xda, 0x9f, 0x6f, 0x35,
78+ 0xf6, 0xfb, 0xb0, 0x1f, 0xb3, 0x00, 0xdd, 0xc4, 0xa6, 0xbc, 0xe2, 0x37,
79+ 0xc1, 0xa3, 0xef, 0xd9, 0xa1, 0x86, 0xf9, 0xeb, 0xa4, 0xa5, 0x45, 0x38,
80+ 0xff, 0x4e, 0x87, 0x4a, 0x41, 0xcf, 0x6e, 0x69, 0x7e, 0x97, 0xbe, 0x2d,
81+ 0x22, 0xbc, 0x8d, 0xa0, 0x1a, 0x21, 0x8f, 0x4b, 0x72, 0x90, 0x01, 0x5c,
82+ 0xba, 0xa5, 0x9c, 0x2d, 0xd7, 0x25, 0x24, 0xfc, 0xff, 0x5c, 0x58, 0x14,
83+ 0x46, 0x30, 0x09, 0x7c, 0x55, 0x64, 0x83, 0x0b, 0xb9, 0xdf, 0xcf, 0x25,
84+ 0xee, 0xec, 0xf7, 0xcb, 0xdb, 0xd1, 0x5b, 0x93, 0x93, 0xc8, 0x8a, 0x10,
85+ 0x46, 0xb8, 0xb0, 0x35, 0x1c, 0x6c, 0x0d, 0x8f, 0x03, 0x6a, 0x8f, 0x1b,
86+ 0x36, 0x68, 0xf3, 0x53, 0x89, 0x36, 0x5b, 0x21, 0x80, 0xde, 0xe3, 0x92,
87+ 0x52, 0x94, 0x97, 0x9d, 0x49, 0x89, 0x7d, 0x3e, 0xde, 0x29, 0x51, 0xba,
88+ 0x11, 0xf7, 0xba, 0x01, 0xf7, 0xab, 0xea, 0xc1, 0xa7, 0x2e, 0xa3, 0x4d,
89+ 0x65, 0xfd, 0x40, 0x71, 0xf1, 0xe2, 0x3f, 0x6c, 0x28, 0xcb, 0xd3
90+};
91+
92 //
93 // The most important thing about the variable payload is that it is a list of
94 // lists, where the element size of any given *inner* list is constant.
95@@ -908,6 +975,7 @@ ShellAppMain (
96 &gEfiImageSecurityDatabaseGuid,
97 MicrosoftPCA, sizeof MicrosoftPCA, &gEfiCallerIdGuid,
98 MicrosoftUefiCA, sizeof MicrosoftUefiCA, &gEfiCallerIdGuid,
99+ RefkitTestCA, sizeof RefkitTestCA, &gEfiCallerIdGuid,
100 NULL);
101 if (EFI_ERROR (Status)) {
102 return 1;
103--
1042.1.4
105
diff --git a/common/recipes-core/ovmf/ovmf-shell-image-enrollkeys.bb b/common/recipes-core/ovmf/ovmf-shell-image-enrollkeys.bb
new file mode 100644
index 0000000..b20f6e5
--- /dev/null
+++ b/common/recipes-core/ovmf/ovmf-shell-image-enrollkeys.bb
@@ -0,0 +1,13 @@
1require recipes-core/ovmf/ovmf-shell-image.bb
2
3WKS_SEARCH_PATH_append = ":${COREBASE}/meta/recipes-core/ovmf"
4
5QB_DRIVE_TYPE = "/dev/vd"
6
7do_image_append() {
8 cat > ${IMAGE_ROOTFS}/startup.nsh << EOF
9EnrollDefaultKeys
10reset
11EOF
12
13}
diff --git a/common/recipes-core/ovmf/ovmf_%.bbappend b/common/recipes-core/ovmf/ovmf_%.bbappend
new file mode 100644
index 0000000..bbf5fa3
--- /dev/null
+++ b/common/recipes-core/ovmf/ovmf_%.bbappend
@@ -0,0 +1,6 @@
1FILESEXTRAPATHS_prepend_intel-x86-common := "${THISDIR}/files:"
2
3SRC_URI_append_intel-x86-common = " \
4 file://0001-ovmf-RefkitTestCA-TEST-UEFI-SecureBoot.patch \
5"
6PACKAGECONFIG_append_intel-x86-common = " secureboot"
diff --git a/common/recipes-graphics/intel-gpu-tools/intel-gpu-tools_1.19.bb b/common/recipes-graphics/intel-gpu-tools/intel-gpu-tools_1.19.bb
new file mode 100644
index 0000000..de9ed60
--- /dev/null
+++ b/common/recipes-graphics/intel-gpu-tools/intel-gpu-tools_1.19.bb
@@ -0,0 +1,40 @@
1require ${COREBASE}/meta/recipes-graphics/xorg-app/xorg-app-common.inc
2
3SUMMARY = "Intel GPU tools"
4DESCRIPTION = "Variety of small tools for testing intel graphics."
5
6LIC_FILES_CHKSUM = "file://COPYING;md5=e4b3dd344780e0400593b21b115a6947"
7
8LICENSE_append = " & ISC"
9
10inherit autotools gtk-doc
11
12DEPENDS += "libdrm libpciaccess cairo udev glib-2.0 libxv libx11 libxext libxrandr procps"
13RDEPENDS_${PN} += "bash"
14RDEPENDS_${PN}-tests += "bash"
15
16PACKAGE_BEFORE_PN = "${PN}-benchmarks ${PN}-tests"
17
18SRC_URI[md5sum] = "4fdfa56acca3b046fc61fb12686656f3"
19SRC_URI[sha256sum] = "a49c8ae7c0431c1f33cd9492f83ec4e06e98a48429178e4bd22d9a1a87e3b0f1"
20
21PACKAGECONFIG ??= ""
22PACKAGECONFIG[libunwind] = "--with-libunwind,--without-libunwind,libunwind,libunwind"
23
24EXTRA_OECONF = "--disable-nouveau --disable-shader-debugger"
25COMPATIBLE_HOST = "(x86_64.*|i.86.*)-linux"
26COMPATIBLE_HOST_libc-musl_class-target = "null"
27
28gputools_sysroot_preprocess() {
29 rm -f ${SYSROOT_DESTDIR}${libdir}/pkgconfig/intel-gen4asm.pc
30}
31SYSROOT_PREPROCESS_FUNCS += "gputools_sysroot_preprocess"
32
33FILES_${PN} += "${libdir}/intel_aubdump.so"
34FILES_${PN}-benchmarks += "${libexecdir}/intel-gpu-tools/benchmarks"
35FILES_${PN}-tests += "\
36 ${libexecdir}/intel-gpu-tools/*\
37 ${datadir}/intel-gpu-tools/1080p-right.png\
38 ${datadir}/intel-gpu-tools/1080p-left.png\
39 ${datadir}/intel-gpu-tools/pass.png\
40 ${datadir}/intel-gpu-tools/test-list.txt"
diff --git a/common/recipes-graphics/xorg-driver/xf86-video-ast_1.1.5.bb b/common/recipes-graphics/xorg-driver/xf86-video-ast_1.1.5.bb
new file mode 100644
index 0000000..090efd6
--- /dev/null
+++ b/common/recipes-graphics/xorg-driver/xf86-video-ast_1.1.5.bb
@@ -0,0 +1,12 @@
1require recipes-graphics/xorg-driver/xorg-driver-video.inc
2
3SUMMARY = "X.Org X server -- ASpeed Technologies graphics driver"
4
5DESCRIPTION = "ast is an Xorg driver for ASpeed Technologies video cards"
6
7LIC_FILES_CHKSUM = "file://COPYING;md5=0b8c242f0218eea5caa949b7910a774b"
8
9DEPENDS += "libpciaccess"
10
11SRC_URI[md5sum] = "4f85febe48d51e53624550a96fc9e9ee"
12SRC_URI[sha256sum] = "1edbbc55d47d3fd71dec99b15c2483e22738c642623a0fb86ef4a81a9067a2de"
diff --git a/common/recipes-graphics/xorg-driver/xf86-video-mga/checkfile.patch b/common/recipes-graphics/xorg-driver/xf86-video-mga/checkfile.patch
new file mode 100644
index 0000000..ceae6df
--- /dev/null
+++ b/common/recipes-graphics/xorg-driver/xf86-video-mga/checkfile.patch
@@ -0,0 +1,68 @@
1Upstream-Status: Submitted [https://bugs.freedesktop.org/show_bug.cgi?id=57606]
2Signed-off-by: Ross Burton <ross.burton@intel.com>
3
4From c9014a8f3c9b691b5aa7b1f3ec66cf7c84b8211b Mon Sep 17 00:00:00 2001
5From: Ross Burton <ross.burton@intel.com>
6Date: Thu, 29 Nov 2012 11:00:43 +0000
7Subject: [PATCH] build: dont use AC_CHECK_FILE when enabling DRI
8
9Automatically enabling or disabling a feature based on installed files isn't
10deterministic, and AC_CHECK_FILE returns an error when cross-compiling.
11
12Fix this by enabling DRI by default, and removing the explicit file checks as
13pkg-config is good enough.
14
15(#57606)
16
17Signed-off-by: Ross Burton <ross.burton@intel.com>
18---
19 configure.ac | 25 ++-----------------------
20 1 file changed, 2 insertions(+), 23 deletions(-)
21
22diff --git a/configure.ac b/configure.ac
23index fca1a9c..d2aa2ed 100644
24--- a/configure.ac
25+++ b/configure.ac
26@@ -55,9 +55,9 @@ AC_ARG_WITH(xorg-module-dir,
27 [moduledir="$libdir/xorg/modules"])
28
29 AC_ARG_ENABLE(dri, AS_HELP_STRING([--disable-dri],
30- [Disable DRI support [[default=auto]]]),
31+ [Disable DRI support [[default=enabled]]]),
32 [DRI="$enableval"],
33- [DRI=auto])
34+ [DRI=yes])
35 AC_ARG_ENABLE(exa,
36 AS_HELP_STRING([--disable-exa],
37 [Disable EXA support [[default=enabled]]]),
38@@ -76,27 +76,6 @@ sdkdir=`$PKG_CONFIG --variable=sdkdir xorg-server`
39
40 # Checks for libraries.
41
42-if test "x$DRI" != xno; then
43- AC_CHECK_FILE([${sdkdir}/dri.h],
44- [have_dri_h="yes"], [have_dri_h="no"])
45- AC_CHECK_FILE([${sdkdir}/sarea.h],
46- [have_sarea_h="yes"], [have_sarea_h="no"])
47- AC_CHECK_FILE([${sdkdir}/dristruct.h],
48- [have_dristruct_h="yes"], [have_dristruct_h="no"])
49-fi
50-
51-AC_MSG_CHECKING([whether to include DRI support])
52-if test "x$DRI" = xauto; then
53- if test "x$have_dri_h" = xyes && \
54- test "x$have_sarea_h" = xyes && \
55- test "x$have_dristruct_h" = xyes; then
56- DRI="yes"
57- else
58- DRI="no"
59- fi
60-fi
61-AC_MSG_RESULT([$DRI])
62-
63 AM_CONDITIONAL(DRI, test "x$DRI" = xyes)
64 if test "x$DRI" = xyes; then
65 PKG_CHECK_MODULES(DRI, [libdrm >= 2.0 xf86driproto])
66--
671.7.10.4
68
diff --git a/common/recipes-graphics/xorg-driver/xf86-video-mga_1.6.5.bb b/common/recipes-graphics/xorg-driver/xf86-video-mga_1.6.5.bb
new file mode 100644
index 0000000..d30936b
--- /dev/null
+++ b/common/recipes-graphics/xorg-driver/xf86-video-mga_1.6.5.bb
@@ -0,0 +1,23 @@
1require recipes-graphics/xorg-driver/xorg-driver-video.inc
2
3SUMMARY = "X.Org X server -- Matrox MGA display driver"
4
5DESCRIPTION = "mga is an Xorg driver for Matrox video cards"
6
7LIC_FILES_CHKSUM = "file://COPYING;md5=bc1395d2cd32dfc5d6c57d2d8f83d3fc"
8
9SRC_URI += "file://checkfile.patch"
10
11DEPENDS += "virtual/libx11 libpciaccess"
12
13PR = "r1"
14
15COMPATIBLE_HOST = '(i.86.*-linux|x86_64.*-linux)'
16
17SRC_URI[md5sum] = "3ee2549247e01de3e7bce52c27483118"
18SRC_URI[sha256sum] = "b663cd8e6364f7c4e2637b9fcab9861d0e3971518c73b00d213f6545a1289422"
19
20PACKAGECONFIG ?= "${@bb.utils.contains('DISTRO_FEATURES', 'opengl', 'dri', '', d)}"
21PACKAGECONFIG[dri] = "--enable-dri,--disable-dri,drm xf86driproto,xserver-xorg-extension-dri"
22
23RDEPENDS_${PN} = "xserver-xorg-module-exa"
diff --git a/common/recipes-kernel/cryptodev/cryptodev-module/0001-zc-Force-4.10-get_user_pages_remote-API.patch b/common/recipes-kernel/cryptodev/cryptodev-module/0001-zc-Force-4.10-get_user_pages_remote-API.patch
new file mode 100644
index 0000000..353126f
--- /dev/null
+++ b/common/recipes-kernel/cryptodev/cryptodev-module/0001-zc-Force-4.10-get_user_pages_remote-API.patch
@@ -0,0 +1,26 @@
1From 3fcc81ad127c267018aed96a359bbf01db1bd8ee Mon Sep 17 00:00:00 2001
2From: Saul Wold <sgw@linux.intel.com>
3Date: Sat, 1 Apr 2017 11:43:31 -0700
4Subject: [PATCH] zc: Force 4.10 get_user_pages_remote API
5
6This change forces the newer API, as the linux-intel 4.9-LTS kernel
7backported the 4.10 API change in the page handling code.
8
9Signed-off-by: Saul Wold <sgw@linux.intel.com>
10---
11 zc.c | 2 +-
12 1 file changed, 1 insertion(+), 1 deletion(-)
13
14diff --git a/zc.c b/zc.c
15index ae464ff..b2759ce 100644
16--- a/zc.c
17+++ b/zc.c
18@@ -65,7 +65,7 @@ int __get_userbuf(uint8_t __user *addr, uint32_t len, int write,
19 #elif (LINUX_VERSION_CODE < KERNEL_VERSION(4, 9, 0))
20 ret = get_user_pages_remote(task, mm,
21 (unsigned long)addr, pgcount, write, 0, pg, NULL);
22-#elif (LINUX_VERSION_CODE < KERNEL_VERSION(4, 10, 0))
23+#elif (LINUX_VERSION_CODE < KERNEL_VERSION(4, 10, 0) & 0)
24 ret = get_user_pages_remote(task, mm,
25 (unsigned long)addr, pgcount, write ? FOLL_WRITE : 0,
26 pg, NULL);
diff --git a/common/recipes-kernel/cryptodev/cryptodev-module_%.bbappend b/common/recipes-kernel/cryptodev/cryptodev-module_%.bbappend
new file mode 100644
index 0000000..c59ddb2
--- /dev/null
+++ b/common/recipes-kernel/cryptodev/cryptodev-module_%.bbappend
@@ -0,0 +1,9 @@
1FILESEXTRAPATHS_prepend_intel-x86-common := "${THISDIR}/${PN}:"
2
3python() {
4 # When we add more kernels for linux-intel, we may have to add a Version check
5 if (d.getVar("PREFERRED_PROVIDER_virtual/kernel") == "linux-intel"):
6 src_uri = d.getVar("SRC_URI")
7 d.setVar("SRC_URI", src_uri +
8 " file://0001-zc-Force-4.10-get_user_pages_remote-API.patch")
9}
diff --git a/common/recipes-kernel/intel-ethernet/ixgbe.bb b/common/recipes-kernel/intel-ethernet/ixgbe.bb
new file mode 100644
index 0000000..5b6f031
--- /dev/null
+++ b/common/recipes-kernel/intel-ethernet/ixgbe.bb
@@ -0,0 +1,43 @@
1SUMMARY="ixgbe kernel driver for Intel Magnolia Park 10GbE"
2DESCRIPTION="Intel 10-Gbps Ethernet driver for Magnolia Park"
3AUTHOR = "Ong Boon Leong"
4HOMEPAGE = "http://www.intel.com/network/connectivity/products/server_adapters.htm"
5SECTION = "kernel/network"
6LICENSE = "GPLv2"
7LIC_FILES_CHKSUM = "file://${WORKDIR}/${PN}-${PV}/COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263"
8
9PV = "5.1.3"
10PR = "r0"
11
12SRC_URI = "https://sourceforge.net/projects/e1000/files/ixgbe%20stable/${PV}/ixgbe-${PV}.tar.gz"
13SRC_URI += "file://0001-ixgbe-src-Makefile-change-make-install-to-make.patch"
14
15SRC_URI[md5sum] = "ae35ed547aa6a5087672c3f70ce1e676"
16SRC_URI[sha256sum] = "9f537d79bddf0a087a17af632d57812d26d26bcfebbd4bdcf10df656ff055bb4"
17
18S = "${WORKDIR}/${PN}-${PV}/src"
19SCRIPT_DIR = "${WORKDIR}/${PN}-${PV}/scripts"
20
21EXTRA_OEMAKE='KSRC="${STAGING_KERNEL_BUILDDIR}" KVER="${KERNEL_VERSION}" \
22 BUILD_ARCH="${TARGET_ARCH}" PREFIX="${D}" \
23 SYSTEM_MAP_FILE="${STAGING_KERNEL_BUILDDIR}/System.map-${KERNEL_VERSION}" INSTALL_MOD_PATH="${D}"'
24
25KERNEL_MODULE_AUTOLOAD_append_intel-core2-32 = " ixgbe"
26KERNEL_MODULE_AUTOLOAD_append_intel-corei7-64 = " ixgbe"
27
28inherit module
29
30do_install_append () {
31 # Install scripts/set_irq_affinity
32 install -d ${D}/etc/network
33 install -m 0755 ${SCRIPT_DIR}/set_irq_affinity ${D}/etc/network
34}
35
36#SSTATE_DUPWHITELIST += "${STAGING_DIR_HOST}/lib/modules/${KERNEL_VERSION}/"
37
38PACKAGES += "${PN}-script"
39
40FILES_${PN}-script += "/etc/network/set_irq_affinity"
41
42#Ignore "ERROR: QA Issue: ixgbe: Files/directories were installed but not shipped"
43INSANE_SKIP_${PN} = "installed-vs-shipped"
diff --git a/common/recipes-kernel/intel-ethernet/ixgbe/0001-ixgbe-src-Makefile-change-make-install-to-make.patch b/common/recipes-kernel/intel-ethernet/ixgbe/0001-ixgbe-src-Makefile-change-make-install-to-make.patch
new file mode 100644
index 0000000..88f5335
--- /dev/null
+++ b/common/recipes-kernel/intel-ethernet/ixgbe/0001-ixgbe-src-Makefile-change-make-install-to-make.patch
@@ -0,0 +1,40 @@
1From 09c7a5afa76530a3720d97726f2b372f72b0af08 Mon Sep 17 00:00:00 2001
2From: "Goh, Wen Sen" <wen.sen.goh@intel.com>
3Date: Wed, 22 Jun 2016 11:18:37 +0800
4Subject: [PATCH] ixgbe: src/Makefile: change make install to make
5 modules_install
6
7Per guideline from Linux Documentation at
8Documentation/kbuild/modules.txt
9the correct target is "modules_install" not "install".
10
11Upstream-Status: Inappropriate [It is tarball released by Intel Network
12driver group]
13
14---
15 src/Makefile | 4 ++--
16 1 file changed, 2 insertions(+), 2 deletions(-)
17
18diff --git a/Makefile b/Makefile
19index 852becb..480ecee 100644
20--- a/Makefile
21+++ b/Makefile
22@@ -136,7 +136,7 @@ clean:
23 @-rm -rf *.${MANSECTION}.gz *.ko
24
25 # Install the modules and manpage
26-install: default manfile
27+modules_install: default manfile
28 @echo "Copying manpages..."
29 @install -D -m 644 ${DRIVER}.${MANSECTION}.gz ${INSTALL_MOD_PATH}${MANDIR}/man${MANSECTION}/${DRIVER}.${MANSECTION}.gz
30 @echo "Installing modules..."
31@@ -191,6 +191,6 @@ help:
32 @echo ' Other variables may be available for tuning make process, see'
33 @echo ' Kernel Kbuild documentation for more information'
34
35-.PHONY: default noisy clean manfile silent sparse ccc install uninstall help
36+.PHONY: default noisy clean manfile silent sparse ccc modules_install uninstall help
37
38 endif # ifneq($(KERNELRELEASE),)
39--
402.8.3
diff --git a/common/recipes-kernel/intel-ethernet/ixgbevf.bb b/common/recipes-kernel/intel-ethernet/ixgbevf.bb
new file mode 100644
index 0000000..bee601b
--- /dev/null
+++ b/common/recipes-kernel/intel-ethernet/ixgbevf.bb
@@ -0,0 +1,44 @@
1SUMMARY="ixgbevf kernel driver for Intel Magnolia Park 10GbE"
2DESCRIPTION="Intel 10-Gbps Ethernet driver for Magnolia Park"
3AUTHOR = "Ong Boon Leong"
4HOMEPAGE = "http://www.intel.com/network/connectivity/products/server_adapters.htm"
5SECTION = "kernel/network"
6LICENSE = "GPLv2"
7LIC_FILES_CHKSUM = "file://${WORKDIR}/${PN}-${PV}/COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263"
8
9PV = "4.1.2"
10PR = "r0"
11
12SRC_URI = "https://sourceforge.net/projects/e1000/files/ixgbevf%20stable/${PV}/ixgbevf-${PV}.tar.gz"
13SRC_URI += "file://0001-ixgbevf-src-Makefile-change-make-install-to-make.patch"
14SRC_URI += "file://0002-ixgbevf_common.patch"
15
16SRC_URI[md5sum] = "f02ec46369d1ca949a1e9d2e0eb74d5f"
17SRC_URI[sha256sum] = "ab2824541f8a2d8f7b7d26ccbb46359ef551c5d4625fb333014e2b8023ac3ab6"
18
19S = "${WORKDIR}/${PN}-${PV}/src"
20SCRIPT_DIR = "${WORKDIR}/${PN}-${PV}/scripts"
21
22EXTRA_OEMAKE='KSRC="${STAGING_KERNEL_BUILDDIR}" KVER="${KERNEL_VERSION}" \
23 BUILD_ARCH="${TARGET_ARCH}" PREFIX="${D}" \
24 SYSTEM_MAP_FILE="${STAGING_KERNEL_BUILDDIR}/System.map-${KERNEL_VERSION}" INSTALL_MOD_PATH="${D}"'
25
26KERNEL_MODULE_AUTOLOAD_append_intel-core2-32 = " ixgbevf"
27KERNEL_MODULE_AUTOLOAD_append_intel-corei7-64 = " ixgbevf"
28
29inherit module
30
31do_install_append () {
32 # Install scripts/set_irq_affinity
33 install -d ${D}/etc/network
34 install -m 0755 ${SCRIPT_DIR}/set_irq_affinity ${D}/etc/network
35}
36
37#SSTATE_DUPWHITELIST += "${STAGING_DIR_HOST}/lib/modules/${KERNEL_VERSION}/"
38
39PACKAGES += "${PN}-script"
40
41FILES_${PN}-script += "/etc/network/set_irq_affinity"
42
43#Ignore "ERROR: QA Issue: ixgbe: Files/directories were installed but not shipped"
44INSANE_SKIP_${PN} = "installed-vs-shipped"
diff --git a/common/recipes-kernel/intel-ethernet/ixgbevf/0001-ixgbevf-src-Makefile-change-make-install-to-make.patch b/common/recipes-kernel/intel-ethernet/ixgbevf/0001-ixgbevf-src-Makefile-change-make-install-to-make.patch
new file mode 100644
index 0000000..8234f58
--- /dev/null
+++ b/common/recipes-kernel/intel-ethernet/ixgbevf/0001-ixgbevf-src-Makefile-change-make-install-to-make.patch
@@ -0,0 +1,32 @@
1From 511ee0d8d40a3e76b3e9875a96228ff370dbdfc6 Mon Sep 17 00:00:00 2001
2From: "Goh, Wen Sen" <wen.sen.goh@intel.com>
3Date: Wed, 22 Jun 2016 11:25:41 +0800
4Subject: [PATCH] ixgbevf_patch
5
6---
7 Makefile | 4 ++--
8 1 file changed, 2 insertions(+), 2 deletions(-)
9
10diff --git a/Makefile b/Makefile
11index 8df134a..8d5660e 100644
12--- a/Makefile
13+++ b/Makefile
14@@ -100,7 +100,7 @@ clean:
15 @-rm -rf *.${MANSECTION}.gz *.ko
16
17 # Install the modules and manpage
18-install: default manfile
19+modules_install: default manfile
20 @echo "Copying manpages..."
21 @install -D -m 644 ${DRIVER}.${MANSECTION}.gz ${INSTALL_MOD_PATH}${MANDIR}/man${MANSECTION}/${DRIVER}.${MANSECTION}.gz
22 @echo "Installing modules..."
23@@ -145,6 +145,6 @@ help:
24 @echo ' Other variables may be available for tuning make process, see'
25 @echo ' Kernel Kbuild documentation for more information'
26
27-.PHONY: default noisy clean manfile silent sparse ccc install uninstall help
28+.PHONY: default noisy clean manfile silent sparse ccc modules_install uninstall help
29
30 endif # ifneq($(KERNELRELEASE),)
31--
322.8.3
diff --git a/common/recipes-kernel/intel-ethernet/ixgbevf/0002-ixgbevf_common.patch b/common/recipes-kernel/intel-ethernet/ixgbevf/0002-ixgbevf_common.patch
new file mode 100644
index 0000000..d442e24
--- /dev/null
+++ b/common/recipes-kernel/intel-ethernet/ixgbevf/0002-ixgbevf_common.patch
@@ -0,0 +1,23 @@
1From f74fbcd821a394dec58263fd2c2ea62eae298b2f Mon Sep 17 00:00:00 2001
2From: "Goh, Wen Sen" <wen.sen.goh@intel.com>
3Date: Sun, 26 Jun 2016 12:01:36 +0800
4Subject: [PATCH] ixgbevf patch
5
6---
7 common.mk | 1 +
8 1 file changed, 1 insertion(+)
9
10diff --git a/common.mk b/common.mk
11index b9b01c7..228a926 100644
12--- a/common.mk
13+++ b/common.mk
14@@ -289,6 +289,7 @@ export INSTALL_MOD_DIR ?= updates/drivers/net/ethernet/intel/${DRIVER}
15 kernelbuild = ${MAKE} $(if ${GCC_I_SYS},CC="${GCC_I_SYS}") \
16 ${CCFLAGS_VAR}="${EXTRA_CFLAGS}" \
17 -C "${KSRC}" \
18+ CONFIG_IXGBE=m \
19 CONFIG_${DRIVER_UPPERCASE}=m \
20 M="${CURDIR}" \
21 ${2} ${1};
22--
232.8.3
diff --git a/common/recipes-kernel/iwlwifi/backport-iwlwifi/0001-Makefile.real-skip-host-install-scripts.patch b/common/recipes-kernel/iwlwifi/backport-iwlwifi/0001-Makefile.real-skip-host-install-scripts.patch
new file mode 100644
index 0000000..1d4137b
--- /dev/null
+++ b/common/recipes-kernel/iwlwifi/backport-iwlwifi/0001-Makefile.real-skip-host-install-scripts.patch
@@ -0,0 +1,36 @@
1From f69ff2fd27903ee052309179271f708d720a2f94 Mon Sep 17 00:00:00 2001
2From: Mikko Ylinen <mikko.ylinen@linux.intel.com>
3Date: Thu, 10 Aug 2017 21:12:51 +0300
4Subject: [PATCH] Makefile.real: skip host install scripts
5
6The scripts run in install target are relevant (and working)
7only if the driver installation is run on the build host.
8
9Skip the scripts when cross-compiling.
10
11Upstream-Status: Inappropriate [Cross-Compile]
12
13Signed-off-by: Mikko Ylinen <mikko.ylinen@linux.intel.com>
14---
15 Makefile.real | 5 -----
16 1 file changed, 5 deletions(-)
17
18diff --git a/Makefile.real b/Makefile.real
19index ba09f99..f5075de 100644
20--- a/Makefile.real
21+++ b/Makefile.real
22@@ -104,11 +104,6 @@ install: modules
23 @$(MAKE) -C $(KLIB_BUILD) M=$(BACKPORT_DIR) \
24 INSTALL_MOD_DIR=$(KMODDIR) $(KMODPATH_ARG) \
25 modules_install
26- @./scripts/blacklist.sh $(KLIB)/ $(KLIB)/$(KMODDIR)
27- @./scripts/compress_modules.sh $(KLIB)/$(KMODDIR)
28- @./scripts/check_depmod.sh
29- @/sbin/depmod -a
30- @./scripts/update-initramfs.sh $(KLIB)
31 @echo
32 @echo Your backported driver modules should be installed now.
33 @echo Reboot.
34--
352.1.4
36
diff --git a/common/recipes-kernel/iwlwifi/backport-iwlwifi/iwlwifi.conf b/common/recipes-kernel/iwlwifi/backport-iwlwifi/iwlwifi.conf
new file mode 100644
index 0000000..a0e5f6f
--- /dev/null
+++ b/common/recipes-kernel/iwlwifi/backport-iwlwifi/iwlwifi.conf
@@ -0,0 +1,12 @@
1# /etc/modprobe.d/iwlwifi.conf
2# iwlwifi will dynamically load either iwldvm or iwlmvm depending on the
3# microcode file installed on the system. When removing iwlwifi, first
4# remove the iwl?vm module and then iwlwifi.
5remove iwlwifi (/sbin/lsmod | grep -o -e ^iwlmvm -e ^iwldvm16 -e ^iwldvm -e ^iwlwifi | xargs /sbin/rmmod) && /sbin/modprobe -r mac80211
6
7#options iwlwifi lar_disable=1
8#options iwlwifi nvm_file="nvm-sfp-b2-open.bin"
9options iwlmvm power_scheme=1
10
11# PCI BUS
12
diff --git a/common/recipes-kernel/iwlwifi/backport-iwlwifi_git.bb b/common/recipes-kernel/iwlwifi/backport-iwlwifi_git.bb
new file mode 100644
index 0000000..f793a10
--- /dev/null
+++ b/common/recipes-kernel/iwlwifi/backport-iwlwifi_git.bb
@@ -0,0 +1,42 @@
1SUMMARY = "Intel Wireless LinuxCore kernel driver"
2DESCRIPTION = "Intel Wireless LinuxCore kernel driver"
3SECTION = "kernel"
4LICENSE = "GPLv2"
5
6REQUIRED_DISTRO_FEATURES = "wifi"
7
8LIC_FILES_CHKSUM = "file://${S}/COPYING;md5=d7810fab7487fb0aad327b76f1be7cd7"
9
10inherit module
11
12PV = "30"
13SRC_URI = "git://git.kernel.org/pub/scm/linux/kernel/git/iwlwifi/backport-iwlwifi;branch=release/LinuxCore${PV}"
14SRC_URI += "file://0001-Makefile.real-skip-host-install-scripts.patch"
15SRC_URI += "file://iwlwifi.conf"
16
17SRCREV = "${AUTOREV}"
18
19S = "${WORKDIR}/git"
20
21EXTRA_OEMAKE = "INSTALL_MOD_PATH=${D} KLIB_BUILD=${KBUILD_OUTPUT}"
22
23do_configure() {
24 CC=gcc CFLAGS= LDFLAGS= make defconfig-iwlwifi-public KLIB_BUILD=${KBUILD_OUTPUT}
25}
26
27MODULES_INSTALL_TARGET="install"
28
29do_install_append() {
30 ## install configs and service scripts
31 install -d ${D}${sysconfdir}/modprobe.d
32 install -m 0644 ${WORKDIR}/iwlwifi.conf ${D}${sysconfdir}/modprobe.d
33}
34
35SYSTEMD_AUTO_ENABLE_${PN} = "enable"
36
37RDEPENDS_${PN} = "linux-firmware-iwlwifi"
38
39KERNEL_MODULE_AUTOLOAD_append_core2-32-intel-common = " iwlwifi"
40KERNEL_MODULE_AUTOLOAD_append_corei7-64-intel-common = " iwlwifi"
41
42KERNEL_MODULE_PACKAGE_PREFIX = "backport-iwlwifi"
diff --git a/common/recipes-kernel/linux-firmware/linux-firmware_%.bbappend b/common/recipes-kernel/linux-firmware/linux-firmware_%.bbappend
new file mode 100644
index 0000000..f6968af
--- /dev/null
+++ b/common/recipes-kernel/linux-firmware/linux-firmware_%.bbappend
@@ -0,0 +1,23 @@
1# meta-intel maintains a recipe that installs iwlwifi's LinuxCore wifi
2# driver releases. For some iwfwifi LinuxCore supported wireless chips, the
3# best/latest firmware blobs are found in the iwlwifi's linux-firmware.git fork.
4#
5# See: https://wireless.wiki.kernel.org/en/users/drivers/iwlwifi/core_release
6#
7# This bbappend fetches the -31.ucode (currently, for Intel Wireless 8260
8# only!) that is the best match for the iwlwifi LinuxCore release built.
9#
10# Note: keep these in sync when updating the iwlwifi_git.bb LinuxCore
11# versions.
12
13SRC_URI_append_intel-x86-common = " https://git.kernel.org/pub/scm/linux/kernel/git/iwlwifi/linux-firmware.git/plain/iwlwifi-8000C-31.ucode?id=${IWLWIFI_SRCREV};name=iwlwifi-8000C-31"
14
15IWLWIFI_SRCREV = "942f14f65363f33c3fd8a06db58c8ccca0559335"
16
17SRC_URI[iwlwifi-8000C-31.md5sum] = "428a84a780bbe864a7af6a6734c4b529"
18SRC_URI[iwlwifi-8000C-31.sha256sum] = "5a337c52f9d7a7cb5cb0a13c93232f4de742ed0debef757d68231bdb55455406"
19
20do_install_append_intel-x86-common() {
21 # Copy the iwlwifi/LinuxCore required ucode for Intel Wireless 8260
22 cp ${WORKDIR}/iwlwifi-8000C-31.ucode\?id\=${IWLWIFI_SRCREV} ${D}/${nonarch_base_libdir}/firmware/iwlwifi-8000C-31.ucode
23}
diff --git a/common/recipes-kernel/linux/linux-intel-rt_4.9.bb b/common/recipes-kernel/linux/linux-intel-rt_4.9.bb
new file mode 100644
index 0000000..3fbe8fd
--- /dev/null
+++ b/common/recipes-kernel/linux/linux-intel-rt_4.9.bb
@@ -0,0 +1,17 @@
1
2require linux-intel.inc
3
4# Skip processing of this recipe if it is not explicitly specified as the
5# PREFERRED_PROVIDER for virtual/kernel. This avoids errors when trying
6# to build multiple virtual/kernel providers, e.g. as dependency of
7# core-image-rt-sdk, core-image-rt.
8python () {
9 if d.getVar("PREFERRED_PROVIDER_virtual/kernel") != "linux-intel-rt":
10 raise bb.parse.SkipPackage("Set PREFERRED_PROVIDER_virtual/kernel to linux-intel-rt to enable it")
11}
12
13KBRANCH = "base-rt"
14SRCREV_machine ?= "fc08e0615edccfb4d297c07531451cb7905fb4f4"
15SRCREV_meta ?= "3ddaed3671efc2936efbebf4c5216e11b9dfd55d"
16
17LINUX_KERNEL_TYPE = "preempt-rt"
diff --git a/common/recipes-kernel/linux/linux-intel.inc b/common/recipes-kernel/linux/linux-intel.inc
new file mode 100644
index 0000000..46f28ef
--- /dev/null
+++ b/common/recipes-kernel/linux/linux-intel.inc
@@ -0,0 +1,43 @@
1require recipes-kernel/linux/linux-yocto.inc
2
3FILESEXTRAPATHS_prepend := "${THISDIR}/linux-intel:"
4
5KERNEL_CONFIG_URI ?= " \
6 git://git.yoctoproject.org/yocto-kernel-cache;type=kmeta;name=meta;branch=yocto-4.9;destsuffix=${KMETA} \
7 "
8SRC_URI = " \
9 git://github.com/01org/linux-intel-4.9.git;protocol=https;name=machine;branch=${KBRANCH}; \
10 ${KERNEL_CONFIG_URI} \
11 "
12
13SRC_URI_append_core2-32-intel-common = " file://disable_skylake_sound.cfg"
14
15
16LINUX_VERSION ?= "4.9.47"
17LINUX_VERSION_EXTENSION ?= "-intel-pk-${LINUX_KERNEL_TYPE}"
18
19PV = "${LINUX_VERSION}+git${SRCPV}"
20
21KMETA = "kernel-meta"
22KCONF_BSP_AUDIT_LEVEL = "2"
23
24KERNEL_FEATURES_INTEL_COMMON ?= ""
25
26COMPATIBLE_MACHINE_core2-32-intel-common = "${MACHINE}"
27KMACHINE_core2-32-intel-common = "intel-core2-32"
28KERNEL_FEATURES_append_core2-32-intel-common = "${KERNEL_FEATURES_INTEL_COMMON}"
29
30COMPATIBLE_MACHINE_corei7-64-intel-common = "${MACHINE}"
31KMACHINE_corei7-64-intel-common = "intel-corei7-64"
32KERNEL_FEATURES_append_corei7-64-intel-common = "${KERNEL_FEATURES_INTEL_COMMON}"
33
34COMPATIBLE_MACHINE_i586-nlp-32-intel-common = "${MACHINE}"
35KMACHINE_i586-nlp-32-intel-common = "intel-quark"
36KERNEL_FEATURES_append_i586-nlp-32-intel-common = "features/qat/qat.scc"
37
38# Functionality flags
39KERNEL_FEATURES_append = " ${KERNEL_EXTRA_FEATURES}"
40KERNEL_FEATURES_append = " ${@bb.utils.contains("TUNE_FEATURES", "mx32", " cfg/x32.scc", "" ,d)}"
41
42KERNEL_MODULE_PROBECONF_corei7-64-intel-common += "snd-soc-skl"
43module_conf_snd-soc-skl_corei7-64-intel-common = "blacklist snd-soc-skl"
diff --git a/common/recipes-kernel/linux/linux-intel/disable_skylake_sound.cfg b/common/recipes-kernel/linux/linux-intel/disable_skylake_sound.cfg
new file mode 100644
index 0000000..f7d7322
--- /dev/null
+++ b/common/recipes-kernel/linux/linux-intel/disable_skylake_sound.cfg
@@ -0,0 +1,14 @@
1# CONFIG_SND_SOC_INTEL_SKYLAKE is not set
2# CONFIG_SND_SOC_INTEL_BXT_DA7219_MAX98357A_MACH is not set
3# CONFIG_SND_SOC_INTEL_BXT_FLORIDA_MACH is not set
4# CONFIG_SND_SOC_INTEL_BXT_RT298_MACH is not set
5# CONFIG_SND_SOC_INTEL_BXT_TDF8532_MACH is not set
6# CONFIG_SND_SOC_INTEL_KBL_RT5663_MAX98927_MACH is not set
7# CONFIG_SND_SOC_INTEL_SKL_RT286_MACH is not set
8# CONFIG_SND_SOC_INTEL_CNL_WM8281_MACH is not set
9# CONFIG_SND_SOC_INTEL_CNL_RT274_MACH is not set
10# CONFIG_SND_SOC_INTEL_SKL_NAU88L25_SSM4567_MACH is not set
11# CONFIG_SND_SOC_INTEL_SKL_NAU88L25_MAX98357A_MACH is not set
12# CONFIG_SND_SOC_INTEL_CNL_CS42L42_MACH is not set
13# CONFIG_SND_SOC_INTEL_CNL_RT700_MACH is not set
14# CONFIG_SND_SOC_INTEL_CNL_SVFPGA_MACH is not set
diff --git a/common/recipes-kernel/linux/linux-intel_4.9.bb b/common/recipes-kernel/linux/linux-intel_4.9.bb
new file mode 100644
index 0000000..4823c98
--- /dev/null
+++ b/common/recipes-kernel/linux/linux-intel_4.9.bb
@@ -0,0 +1,13 @@
1
2require linux-intel.inc
3
4KBRANCH = "base"
5SRCREV_machine ?= "2d533948da0a7c53a0a662d3764be166ba996d93"
6SRCREV_meta ?= "3ddaed3671efc2936efbebf4c5216e11b9dfd55d"
7
8# For Crystalforest and Romley
9KERNEL_MODULE_AUTOLOAD_append_core2-32-intel-common = " uio"
10KERNEL_MODULE_AUTOLOAD_append_corei7-64-intel-common = " uio"
11
12# Functionality flags
13KERNEL_EXTRA_FEATURES ?= "features/netfilter/netfilter.scc"
diff --git a/common/recipes-kernel/linux/linux-yocto-dev.bbappend b/common/recipes-kernel/linux/linux-yocto-dev.bbappend
new file mode 100644
index 0000000..ee33ecc
--- /dev/null
+++ b/common/recipes-kernel/linux/linux-yocto-dev.bbappend
@@ -0,0 +1,26 @@
1FILESEXTRAPATHS_prepend_intel-x86-common := "${THISDIR}/${PN}:"
2
3COMPATIBLE_MACHINE_core2-32-intel-common = "${MACHINE}"
4KMACHINE_core2-32-intel-common = "intel-core2-32"
5KERNEL_FEATURES_append_core2-32-intel-common = "${KERNEL_FEATURES_INTEL_COMMON}"
6
7COMPATIBLE_MACHINE_corei7-64-intel-common = "${MACHINE}"
8KMACHINE_corei7-64-intel-common = "intel-corei7-64"
9KERNEL_FEATURES_append_corei7-64-intel-common = "${KERNEL_FEATURES_INTEL_COMMON}"
10
11# Quark / X1000 BSP Info
12COMPATIBLE_MACHINE_i586-nlp-32-intel-common = "${MACHINE}"
13KMACHINE_i586-nlp-32-intel-common = "intel-quark"
14KERNEL_FEATURES_append_i586-nlp-32-intel-common = ""
15
16# NOTE: We do not set SRCREVs here as -dev is intended to be built with AUTOREV
17# and setting them here breaks the default mechanism to use AUTOREV if the
18# default SRCREV is set and linux-yocto-dev is the preferred provider.
19
20# For Crystalforest and Romley
21KERNEL_MODULE_AUTOLOAD_append_core2-32-intel-common = " uio"
22KERNEL_MODULE_AUTOLOAD_append_corei7-64-intel-common = " uio"
23
24# For FRI2, NUC
25KERNEL_MODULE_AUTOLOAD_append_core2-32-intel-common = " iwlwifi"
26KERNEL_MODULE_AUTOLOAD_append_corei7-64-intel-common = " iwlwifi"
diff --git a/common/recipes-kernel/linux/linux-yocto-rt_4.10.bbappend b/common/recipes-kernel/linux/linux-yocto-rt_4.10.bbappend
new file mode 100644
index 0000000..17569a1
--- /dev/null
+++ b/common/recipes-kernel/linux/linux-yocto-rt_4.10.bbappend
@@ -0,0 +1,13 @@
1KERNEL_FEATURES_INTEL_COMMON ?= ""
2
3COMPATIBLE_MACHINE_core2-32-intel-common = "${MACHINE}"
4KMACHINE_core2-32-intel-common = "intel-core2-32"
5KERNEL_FEATURES_append_core2-32-intel-common = "${KERNEL_FEATURES_INTEL_COMMON}"
6
7COMPATIBLE_MACHINE_corei7-64-intel-common = "${MACHINE}"
8KMACHINE_corei7-64-intel-common = "intel-corei7-64"
9KERNEL_FEATURES_append_corei7-64-intel-common = "${KERNEL_FEATURES_INTEL_COMMON}"
10
11COMPATIBLE_MACHINE_i586-nlp-32-intel-common = "${MACHINE}"
12KMACHINE_i586-nlp-32-intel-common = "intel-quark"
13KERNEL_FEATURES_append_i586-nlp-32-intel-common = ""
diff --git a/common/recipes-kernel/linux/linux-yocto-rt_4.12.bbappend b/common/recipes-kernel/linux/linux-yocto-rt_4.12.bbappend
new file mode 100644
index 0000000..17569a1
--- /dev/null
+++ b/common/recipes-kernel/linux/linux-yocto-rt_4.12.bbappend
@@ -0,0 +1,13 @@
1KERNEL_FEATURES_INTEL_COMMON ?= ""
2
3COMPATIBLE_MACHINE_core2-32-intel-common = "${MACHINE}"
4KMACHINE_core2-32-intel-common = "intel-core2-32"
5KERNEL_FEATURES_append_core2-32-intel-common = "${KERNEL_FEATURES_INTEL_COMMON}"
6
7COMPATIBLE_MACHINE_corei7-64-intel-common = "${MACHINE}"
8KMACHINE_corei7-64-intel-common = "intel-corei7-64"
9KERNEL_FEATURES_append_corei7-64-intel-common = "${KERNEL_FEATURES_INTEL_COMMON}"
10
11COMPATIBLE_MACHINE_i586-nlp-32-intel-common = "${MACHINE}"
12KMACHINE_i586-nlp-32-intel-common = "intel-quark"
13KERNEL_FEATURES_append_i586-nlp-32-intel-common = ""
diff --git a/common/recipes-kernel/linux/linux-yocto-rt_4.4.bbappend b/common/recipes-kernel/linux/linux-yocto-rt_4.4.bbappend
new file mode 100644
index 0000000..c18f4a1
--- /dev/null
+++ b/common/recipes-kernel/linux/linux-yocto-rt_4.4.bbappend
@@ -0,0 +1,33 @@
1FILESEXTRAPATHS_prepend_intel-x86-common := "${THISDIR}/${PN}:"
2
3LINUX_VERSION_INTEL_COMMON = "4.4.87"
4SRCREV_META_INTEL_COMMON ?= "804d2b3164ec25ed519fd695de9aa0908460c92e"
5SRCREV_MACHINE_INTEL_COMMON ?= "d1ce34c9e66fe55382cc196fe7facbe7865c4eed"
6
7KBRANCH_INTEL_COMMON = "standard/preempt-rt/intel/base"
8
9KERNEL_FEATURES_INTEL_COMMON ?= ""
10
11LINUX_VERSION_core2-32-intel-common = "${LINUX_VERSION_INTEL_COMMON}"
12COMPATIBLE_MACHINE_core2-32-intel-common = "${MACHINE}"
13KMACHINE_core2-32-intel-common = "intel-core2-32"
14KBRANCH_core2-32-intel-common = "${KBRANCH_INTEL_COMMON}"
15SRCREV_meta_core2-32-intel-common ?= "${SRCREV_META_INTEL_COMMON}"
16SRCREV_machine_core2-32-intel-common ?= "${SRCREV_MACHINE_INTEL_COMMON}"
17KERNEL_FEATURES_append_core2-32-intel-common = "${KERNEL_FEATURES_INTEL_COMMON}"
18
19LINUX_VERSION_corei7-64-intel-common = "${LINUX_VERSION_INTEL_COMMON}"
20COMPATIBLE_MACHINE_corei7-64-intel-common = "${MACHINE}"
21KMACHINE_corei7-64-intel-common = "intel-corei7-64"
22KBRANCH_corei7-64-intel-common = "${KBRANCH_INTEL_COMMON}"
23SRCREV_meta_corei7-64-intel-common ?= "${SRCREV_META_INTEL_COMMON}"
24SRCREV_machine_corei7-64-intel-common ?= "${SRCREV_MACHINE_INTEL_COMMON}"
25KERNEL_FEATURES_append_corei7-64-intel-common = "${KERNEL_FEATURES_INTEL_COMMON}"
26
27LINUX_VERSION_i586-nlp-32-intel-common = "${LINUX_VERSION_INTEL_COMMON}"
28COMPATIBLE_MACHINE_i586-nlp-32-intel-common = "${MACHINE}"
29KMACHINE_i586-nlp-32-intel-common = "intel-quark"
30KBRANCH_i586-nlp-32-intel-common = "${KBRANCH_INTEL_COMMON}"
31SRCREV_meta_i586-nlp-32-intel-common ?= "${SRCREV_META_INTEL_COMMON}"
32SRCREV_machine_i586-nlp-32-intel-common ?= "${SRCREV_MACHINE_INTEL_COMMON}"
33KERNEL_FEATURES_append_i586-nlp-32-intel-common = ""
diff --git a/common/recipes-kernel/linux/linux-yocto-rt_4.9.bbappend b/common/recipes-kernel/linux/linux-yocto-rt_4.9.bbappend
new file mode 100644
index 0000000..9d2e3c0
--- /dev/null
+++ b/common/recipes-kernel/linux/linux-yocto-rt_4.9.bbappend
@@ -0,0 +1,13 @@
1KERNEL_FEATURES_INTEL_COMMON = ""
2
3COMPATIBLE_MACHINE_core2-32-intel-common = "${MACHINE}"
4KMACHINE_core2-32-intel-common = "intel-core2-32"
5KERNEL_FEATURES_append_core2-32-intel-common = "${KERNEL_FEATURES_INTEL_COMMON}"
6
7COMPATIBLE_MACHINE_corei7-64-intel-common = "${MACHINE}"
8KMACHINE_corei7-64-intel-common = "intel-corei7-64"
9KERNEL_FEATURES_append_corei7-64-intel-common = "${KERNEL_FEATURES_INTEL_COMMON}"
10
11COMPATIBLE_MACHINE_i586-nlp-32-intel-common = "${MACHINE}"
12KMACHINE_i586-nlp-32-intel-common = "intel-quark"
13KERNEL_FEATURES_append_i586-nlp-32-intel-common = ""
diff --git a/common/recipes-kernel/linux/linux-yocto-tiny_4.10.bbappend b/common/recipes-kernel/linux/linux-yocto-tiny_4.10.bbappend
new file mode 100644
index 0000000..b8d3d81
--- /dev/null
+++ b/common/recipes-kernel/linux/linux-yocto-tiny_4.10.bbappend
@@ -0,0 +1,19 @@
1FILESEXTRAPATHS_prepend_intel-x86-common := "${THISDIR}/${PN}:"
2
3KERNEL_FEATURES_INTEL_COMMON ?= ""
4
5COMPATIBLE_MACHINE_i586-nlp-32-intel-common = "${MACHINE}"
6COMPATIBLE_MACHINE_core2-32-intel-common = "${MACHINE}"
7COMPATIBLE_MACHINE_corei7-64-intel-common = "${MACHINE}"
8
9KBRANCH_i586-nlp-32-intel-common = "standard/tiny/base"
10KBRANCH_core2-32-intel-common = "standard/tiny/base"
11KBRANCH_corei7-64-intel-common = "standard/tiny/base"
12
13KMACHINE_i586-nlp-32-intel-common = "intel-quark"
14KMACHINE_core2-32-intel-common = "intel-core2-32"
15KMACHINE_corei7-64-intel-common = "intel-corei7-64"
16
17KERNEL_FEATURES_append_i586-nlp-32-intel-common = "${KERNEL_FEATURES_INTEL_COMMON} cfg/fs/ext4.scc"
18KERNEL_FEATURES_append_core2-32-intel-common = "${KERNEL_FEATURES_INTEL_COMMON} cfg/fs/ext4.scc"
19KERNEL_FEATURES_append_corei7-64-intel-common = "${KERNEL_FEATURES_INTEL_COMMON} cfg/fs/ext4.scc"
diff --git a/common/recipes-kernel/linux/linux-yocto-tiny_4.12.bbappend b/common/recipes-kernel/linux/linux-yocto-tiny_4.12.bbappend
new file mode 100644
index 0000000..b8d3d81
--- /dev/null
+++ b/common/recipes-kernel/linux/linux-yocto-tiny_4.12.bbappend
@@ -0,0 +1,19 @@
1FILESEXTRAPATHS_prepend_intel-x86-common := "${THISDIR}/${PN}:"
2
3KERNEL_FEATURES_INTEL_COMMON ?= ""
4
5COMPATIBLE_MACHINE_i586-nlp-32-intel-common = "${MACHINE}"
6COMPATIBLE_MACHINE_core2-32-intel-common = "${MACHINE}"
7COMPATIBLE_MACHINE_corei7-64-intel-common = "${MACHINE}"
8
9KBRANCH_i586-nlp-32-intel-common = "standard/tiny/base"
10KBRANCH_core2-32-intel-common = "standard/tiny/base"
11KBRANCH_corei7-64-intel-common = "standard/tiny/base"
12
13KMACHINE_i586-nlp-32-intel-common = "intel-quark"
14KMACHINE_core2-32-intel-common = "intel-core2-32"
15KMACHINE_corei7-64-intel-common = "intel-corei7-64"
16
17KERNEL_FEATURES_append_i586-nlp-32-intel-common = "${KERNEL_FEATURES_INTEL_COMMON} cfg/fs/ext4.scc"
18KERNEL_FEATURES_append_core2-32-intel-common = "${KERNEL_FEATURES_INTEL_COMMON} cfg/fs/ext4.scc"
19KERNEL_FEATURES_append_corei7-64-intel-common = "${KERNEL_FEATURES_INTEL_COMMON} cfg/fs/ext4.scc"
diff --git a/common/recipes-kernel/linux/linux-yocto-tiny_4.4.bbappend b/common/recipes-kernel/linux/linux-yocto-tiny_4.4.bbappend
new file mode 100644
index 0000000..54430e2
--- /dev/null
+++ b/common/recipes-kernel/linux/linux-yocto-tiny_4.4.bbappend
@@ -0,0 +1,33 @@
1FILESEXTRAPATHS_prepend_intel-x86-common := "${THISDIR}/${PN}:"
2
3EXTRA_OEMAKE = "LD=${STAGING_BINDIR_NATIVE}/${HOST_SYS}/${TARGET_PREFIX}ld AR=${STAGING_BINDIR_NATIVE}/${HOST_SYS}/${TARGET_PREFIX}gcc-ar"
4
5KERNEL_FEATURES_INTEL_COMMON ?= ""
6
7LINUX_VERSION_i586-nlp-32-intel-common = "4.4.87"
8LINUX_VERSION_core2-32-intel-common = "4.4.87"
9LINUX_VERSION_corei7-64-intel-common = "4.4.87"
10
11SRCREV_meta_i586-nlp-32-intel-common = "804d2b3164ec25ed519fd695de9aa0908460c92e"
12SRCREV_meta_core2-32-intel-common = "804d2b3164ec25ed519fd695de9aa0908460c92e"
13SRCREV_meta_corei7-64-intel-common = "804d2b3164ec25ed519fd695de9aa0908460c92e"
14
15SRCREV_machine_i586-nlp-32-intel-common = "85b913cc9d5e13602d69e50bd9cf1a6ef242f9ee"
16SRCREV_machine_core2-32-intel-common = "85b913cc9d5e13602d69e50bd9cf1a6ef242f9ee"
17SRCREV_machine_corei7-64-intel-common = "85b913cc9d5e13602d69e50bd9cf1a6ef242f9ee"
18
19COMPATIBLE_MACHINE_i586-nlp-32-intel-common = "${MACHINE}"
20COMPATIBLE_MACHINE_core2-32-intel-common = "${MACHINE}"
21COMPATIBLE_MACHINE_corei7-64-intel-common = "${MACHINE}"
22
23KBRANCH_i586-nlp-32-intel-common = "standard/tiny/intel/base"
24KBRANCH_core2-32-intel-common = "standard/tiny/intel/base"
25KBRANCH_corei7-64-intel-common = "standard/tiny/intel/base"
26
27KMACHINE_i586-nlp-32-intel-common = "intel-quark"
28KMACHINE_core2-32-intel-common = "intel-core2-32"
29KMACHINE_corei7-64-intel-common = "intel-corei7-64"
30
31KERNEL_FEATURES_append_i586-nlp-32-intel-common = "${KERNEL_FEATURES_INTEL_COMMON} cfg/fs/ext4.scc"
32KERNEL_FEATURES_append_core2-32-intel-common = "${KERNEL_FEATURES_INTEL_COMMON} cfg/fs/ext4.scc"
33KERNEL_FEATURES_append_corei7-64-intel-common = "${KERNEL_FEATURES_INTEL_COMMON} cfg/fs/ext4.scc"
diff --git a/common/recipes-kernel/linux/linux-yocto-tiny_4.9.bbappend b/common/recipes-kernel/linux/linux-yocto-tiny_4.9.bbappend
new file mode 100644
index 0000000..9ecdb95
--- /dev/null
+++ b/common/recipes-kernel/linux/linux-yocto-tiny_4.9.bbappend
@@ -0,0 +1,31 @@
1FILESEXTRAPATHS_prepend_intel-x86-common := "${THISDIR}/${PN}:"
2
3EXTRA_OEMAKE = "LD=${STAGING_BINDIR_NATIVE}/${HOST_SYS}/${TARGET_PREFIX}ld AR=${STAGING_BINDIR_NATIVE}/${HOST_SYS}/${TARGET_PREFIX}gcc-ar"
4
5LINUX_VERSION_i586-nlp-32-intel-common = "4.9.13"
6LINUX_VERSION_core2-32-intel-common = "4.9.13"
7LINUX_VERSION_corei7-64-intel-common = "4.9.13"
8
9SRCREV_meta_i586-nlp-32-intel-common = "8f3bc608ae61c5333043167fa31bac33be93c3de"
10SRCREV_meta_core2-32-intel-common = "8f3bc608ae61c5333043167fa31bac33be93c3de"
11SRCREV_meta_corei7-64-intel-common = "8f3bc608ae61c5333043167fa31bac33be93c3de"
12
13SRCREV_machine_i586-nlp-32-intel-common = "95c0a80ee83f1cf8e59d733f36e8a9dfd50a0098"
14SRCREV_machine_core2-32-intel-common = "95c0a80ee83f1cf8e59d733f36e8a9dfd50a0098"
15SRCREV_machine_corei7-64-intel-common = "95c0a80ee83f1cf8e59d733f36e8a9dfd50a0098"
16
17COMPATIBLE_MACHINE_i586-nlp-32-intel-common = "${MACHINE}"
18COMPATIBLE_MACHINE_core2-32-intel-common = "${MACHINE}"
19COMPATIBLE_MACHINE_corei7-64-intel-common = "${MACHINE}"
20
21KBRANCH_i586-nlp-32-intel-common = "standard/tiny/base"
22KBRANCH_core2-32-intel-common = "standard/tiny/base"
23KBRANCH_corei7-64-intel-common = "standard/tiny/base"
24
25KMACHINE_i586-nlp-32-intel-common = "intel-quark"
26KMACHINE_core2-32-intel-common = "intel-core2-32"
27KMACHINE_corei7-64-intel-common = "intel-corei7-64"
28
29KERNEL_FEATURES_append_i586-nlp-32-intel-common = "${KERNEL_FEATURES_INTEL_COMMON} cfg/fs/ext4.scc"
30KERNEL_FEATURES_append_core2-32-intel-common = "${KERNEL_FEATURES_INTEL_COMMON} cfg/fs/ext4.scc"
31KERNEL_FEATURES_append_corei7-64-intel-common = "${KERNEL_FEATURES_INTEL_COMMON} cfg/fs/ext4.scc"
diff --git a/common/recipes-kernel/linux/linux-yocto_%.bbappend b/common/recipes-kernel/linux/linux-yocto_%.bbappend
new file mode 100644
index 0000000..7c29be1
--- /dev/null
+++ b/common/recipes-kernel/linux/linux-yocto_%.bbappend
@@ -0,0 +1,4 @@
1# The kernel build is 64-bit regardless, so include both common overrides.
2# Without this, the kernel will be missing vars that make it buildable for the
3# intel-corei7-64 machine.
4MACHINEOVERRIDES_prepend_corei7-64-x32-intel-common = "corei7-64-intel-common:"
diff --git a/common/recipes-kernel/linux/linux-yocto_4.10.bbappend b/common/recipes-kernel/linux/linux-yocto_4.10.bbappend
new file mode 100644
index 0000000..2050463
--- /dev/null
+++ b/common/recipes-kernel/linux/linux-yocto_4.10.bbappend
@@ -0,0 +1,21 @@
1KERNEL_FEATURES_INTEL_COMMON ?= ""
2
3COMPATIBLE_MACHINE_core2-32-intel-common = "${MACHINE}"
4KMACHINE_core2-32-intel-common = "intel-core2-32"
5KERNEL_FEATURES_append_core2-32-intel-common = "${KERNEL_FEATURES_INTEL_COMMON}"
6
7COMPATIBLE_MACHINE_corei7-64-intel-common = "${MACHINE}"
8KMACHINE_corei7-64-intel-common = "intel-corei7-64"
9KERNEL_FEATURES_append_corei7-64-intel-common = "${KERNEL_FEATURES_INTEL_COMMON}"
10
11COMPATIBLE_MACHINE_i586-nlp-32-intel-common = "${MACHINE}"
12KMACHINE_i586-nlp-32-intel-common = "intel-quark"
13KERNEL_FEATURES_append_i586-nlp-32-intel-common = ""
14
15# For Crystalforest and Romley
16KERNEL_MODULE_AUTOLOAD_append_core2-32-intel-common = " uio"
17KERNEL_MODULE_AUTOLOAD_append_corei7-64-intel-common = " uio"
18
19# For FRI2, NUC
20KERNEL_MODULE_AUTOLOAD_append_core2-32-intel-common = " iwlwifi"
21KERNEL_MODULE_AUTOLOAD_append_corei7-64-intel-common = " iwlwifi"
diff --git a/common/recipes-kernel/linux/linux-yocto_4.12.bbappend b/common/recipes-kernel/linux/linux-yocto_4.12.bbappend
new file mode 100644
index 0000000..2050463
--- /dev/null
+++ b/common/recipes-kernel/linux/linux-yocto_4.12.bbappend
@@ -0,0 +1,21 @@
1KERNEL_FEATURES_INTEL_COMMON ?= ""
2
3COMPATIBLE_MACHINE_core2-32-intel-common = "${MACHINE}"
4KMACHINE_core2-32-intel-common = "intel-core2-32"
5KERNEL_FEATURES_append_core2-32-intel-common = "${KERNEL_FEATURES_INTEL_COMMON}"
6
7COMPATIBLE_MACHINE_corei7-64-intel-common = "${MACHINE}"
8KMACHINE_corei7-64-intel-common = "intel-corei7-64"
9KERNEL_FEATURES_append_corei7-64-intel-common = "${KERNEL_FEATURES_INTEL_COMMON}"
10
11COMPATIBLE_MACHINE_i586-nlp-32-intel-common = "${MACHINE}"
12KMACHINE_i586-nlp-32-intel-common = "intel-quark"
13KERNEL_FEATURES_append_i586-nlp-32-intel-common = ""
14
15# For Crystalforest and Romley
16KERNEL_MODULE_AUTOLOAD_append_core2-32-intel-common = " uio"
17KERNEL_MODULE_AUTOLOAD_append_corei7-64-intel-common = " uio"
18
19# For FRI2, NUC
20KERNEL_MODULE_AUTOLOAD_append_core2-32-intel-common = " iwlwifi"
21KERNEL_MODULE_AUTOLOAD_append_corei7-64-intel-common = " iwlwifi"
diff --git a/common/recipes-kernel/linux/linux-yocto_4.4.bbappend b/common/recipes-kernel/linux/linux-yocto_4.4.bbappend
new file mode 100644
index 0000000..3b02a93
--- /dev/null
+++ b/common/recipes-kernel/linux/linux-yocto_4.4.bbappend
@@ -0,0 +1,43 @@
1FILESEXTRAPATHS_prepend_intel-x86-common := "${THISDIR}/${PN}:"
2
3LINUX_VERSION_INTEL_COMMON = "4.4.87"
4SRCREV_META_INTEL_COMMON = "804d2b3164ec25ed519fd695de9aa0908460c92e"
5SRCREV_MACHINE_INTEL_COMMON = "57746baa7ae35660fe807c65b6809e6b16d4a448"
6
7KBRANCH_INTEL_COMMON = "standard/intel/base"
8
9KERNEL_FEATURES_INTEL_COMMON ?= ""
10
11LINUX_VERSION_core2-32-intel-common = "${LINUX_VERSION_INTEL_COMMON}"
12COMPATIBLE_MACHINE_core2-32-intel-common = "${MACHINE}"
13KMACHINE_core2-32-intel-common = "intel-core2-32"
14KBRANCH_core2-32-intel-common = "${KBRANCH_INTEL_COMMON}"
15SRCREV_meta_core2-32-intel-common ?= "${SRCREV_META_INTEL_COMMON}"
16SRCREV_machine_core2-32-intel-common ?= "${SRCREV_MACHINE_INTEL_COMMON}"
17KERNEL_FEATURES_append_core2-32-intel-common = "${KERNEL_FEATURES_INTEL_COMMON}"
18
19LINUX_VERSION_corei7-64-intel-common = "${LINUX_VERSION_INTEL_COMMON}"
20COMPATIBLE_MACHINE_corei7-64-intel-common = "${MACHINE}"
21KMACHINE_corei7-64-intel-common = "intel-corei7-64"
22SRCREV_meta_corei7-64-intel-common ?= "${SRCREV_META_INTEL_COMMON}"
23SRCREV_machine_corei7-64-intel-common ?= "${@bb.utils.contains('INTEL_MACHINE_SUBTYPE', 'broxton-m', 'a249f6388ace2a4035220c2333649b42c300faa9', '${SRCREV_MACHINE_INTEL_COMMON}', d)}"
24KBRANCH_corei7-64-intel-common = "${@bb.utils.contains('INTEL_MACHINE_SUBTYPE', 'broxton-m', 'standard/intel/bxt-rebase;rebaseable=1', '${KBRANCH_INTEL_COMMON}', d)}"
25KERNEL_FEATURES_append_corei7-64-intel-common = "${KERNEL_FEATURES_INTEL_COMMON}"
26
27# Quark / X1000 BSP Info
28LINUX_VERSION_i586-nlp-32-intel-common = "${LINUX_VERSION_INTEL_COMMON}"
29COMPATIBLE_MACHINE_i586-nlp-32-intel-common = "${MACHINE}"
30KMACHINE_i586-nlp-32-intel-common = "intel-quark"
31KBRANCH_i586-nlp-32-intel-common = "${KBRANCH_INTEL_COMMON}"
32SRCREV_meta_i586-nlp-32-intel-common ?= "${SRCREV_META_INTEL_COMMON}"
33SRCREV_machine_i586-nlp-32-intel-common ?= "${SRCREV_MACHINE_INTEL_COMMON}"
34KERNEL_FEATURES_append_i586-nlp-32-intel-common = ""
35
36
37# For Crystalforest and Romley
38KERNEL_MODULE_AUTOLOAD_append_core2-32-intel-common = " uio"
39KERNEL_MODULE_AUTOLOAD_append_corei7-64-intel-common = " uio"
40
41# For FRI2, NUC
42KERNEL_MODULE_AUTOLOAD_append_core2-32-intel-common = " iwlwifi"
43KERNEL_MODULE_AUTOLOAD_append_corei7-64-intel-common = " iwlwifi"
diff --git a/common/recipes-kernel/linux/linux-yocto_4.9.bbappend b/common/recipes-kernel/linux/linux-yocto_4.9.bbappend
new file mode 100644
index 0000000..a09fe1a
--- /dev/null
+++ b/common/recipes-kernel/linux/linux-yocto_4.9.bbappend
@@ -0,0 +1,21 @@
1KERNEL_FEATURES_INTEL_COMMON = ""
2
3COMPATIBLE_MACHINE_core2-32-intel-common = "${MACHINE}"
4KMACHINE_core2-32-intel-common = "intel-core2-32"
5KERNEL_FEATURES_append_core2-32-intel-common = "${KERNEL_FEATURES_INTEL_COMMON}"
6
7COMPATIBLE_MACHINE_corei7-64-intel-common = "${MACHINE}"
8KMACHINE_corei7-64-intel-common = "intel-corei7-64"
9KERNEL_FEATURES_append_corei7-64-intel-common = "${KERNEL_FEATURES_INTEL_COMMON}"
10
11COMPATIBLE_MACHINE_i586-nlp-32-intel-common = "${MACHINE}"
12KMACHINE_i586-nlp-32-intel-common = "intel-quark"
13KERNEL_FEATURES_append_i586-nlp-32-intel-common = ""
14
15# For Crystalforest and Romley
16KERNEL_MODULE_AUTOLOAD_append_core2-32-intel-common = " uio"
17KERNEL_MODULE_AUTOLOAD_append_corei7-64-intel-common = " uio"
18
19# For FRI2, NUC
20KERNEL_MODULE_AUTOLOAD_append_core2-32-intel-common = " iwlwifi"
21KERNEL_MODULE_AUTOLOAD_append_corei7-64-intel-common = " iwlwifi"
diff --git a/common/recipes-kernel/lttng/lttng-modules/0002-lttng-modules-PKT-4.9-yocto-build-failed.patch b/common/recipes-kernel/lttng/lttng-modules/0002-lttng-modules-PKT-4.9-yocto-build-failed.patch
new file mode 100644
index 0000000..32b49b8
--- /dev/null
+++ b/common/recipes-kernel/lttng/lttng-modules/0002-lttng-modules-PKT-4.9-yocto-build-failed.patch
@@ -0,0 +1,38 @@
1From ebfdc8b8af17f9cf23c6878eb52476fde7b48e5c Mon Sep 17 00:00:00 2001
2From: Priyalee Kushwaha <priyalee.kushwaha@intel.com>
3Date: Fri, 22 Sep 2017 14:40:57 -0700
4Subject: [PATCH] lttng-modules: PKT 4.9 yocto build failed
5
6PKT 4.9 yocto kernel backports a patch from upstream and that
7changes header include/linux/ktimer.h. Since this backported
8patch is only relevant for PKT kernel, we need to carry this
9patch.
10
11Upstream-Status: Backport
12Signed-off-by: Kushwaha, Priyalee <priyalee.kushwaha@intel.com>
13---
14 instrumentation/events/lttng-module/timer.h | 6 +++---
15 1 file changed, 3 insertions(+), 3 deletions(-)
16
17diff --git a/instrumentation/events/lttng-module/timer.h b/instrumentation/events/lttng-module/timer.h
18index d62fd25..59da988 100644
19--- a/instrumentation/events/lttng-module/timer.h
20+++ b/instrumentation/events/lttng-module/timer.h
21@@ -16,11 +16,11 @@ struct timer_list;
22
23 #endif /* _TRACE_TIMER_DEF_ */
24
25-#if (LINUX_VERSION_CODE >= KERNEL_VERSION(4,10,0))
26+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(4,9,0))
27 #define lttng_ktime_get_tv64(kt) (kt)
28-#else /* #if (LINUX_VERSION_CODE >= KERNEL_VERSION(4,10,0)) */
29+#else /* #if (LINUX_VERSION_CODE >= KERNEL_VERSION(4,9,0)) */
30 #define lttng_ktime_get_tv64(kt) ((kt).tv64)
31-#endif /* #else #if (LINUX_VERSION_CODE >= KERNEL_VERSION(4,10,0)) */
32+#endif /* #else #if (LINUX_VERSION_CODE >= KERNEL_VERSION(4,9,0)) */
33
34 LTTNG_TRACEPOINT_EVENT_CLASS(timer_class,
35
36--
372.7.4
38
diff --git a/common/recipes-kernel/lttng/lttng-modules_%.bbappend b/common/recipes-kernel/lttng/lttng-modules_%.bbappend
new file mode 100644
index 0000000..ee8b8c1
--- /dev/null
+++ b/common/recipes-kernel/lttng/lttng-modules_%.bbappend
@@ -0,0 +1,7 @@
1FILESEXTRAPATHS_prepend_intel-x86-common := "${THISDIR}/${PN}:"
2
3
4LTTNG_PATCH = "${@bb.utils.contains('PREFERRED_PROVIDER_virtual/kernel','linux-intel','file://0002-lttng-modules-PKT-4.9-yocto-build-failed.patch','',d)}"
5
6SRC_URI += "${LTTNG_PATCH}"
7
diff --git a/common/recipes-multimedia/libva/libva-intel-driver_1.8.3.bb b/common/recipes-multimedia/libva/libva-intel-driver_1.8.3.bb
new file mode 100644
index 0000000..72451c0
--- /dev/null
+++ b/common/recipes-multimedia/libva/libva-intel-driver_1.8.3.bb
@@ -0,0 +1,35 @@
1SUMMARY = "VA driver for Intel G45 & HD Graphics family"
2DESCRIPTION = "libva-driver-intel is the VA-API implementation \
3for Intel G45 chipsets and Intel HD Graphics for Intel Core \
4processor family."
5
6HOMEPAGE = "http://www.freedesktop.org/wiki/Software/vaapi"
7BUGTRACKER = "https://bugs.freedesktop.org"
8
9LICENSE = "MIT"
10LIC_FILES_CHKSUM = "file://COPYING;md5=2e48940f94acb0af582e5ef03537800f"
11
12COMPATIBLE_HOST = '(i.86|x86_64).*-linux'
13
14DEPENDS = "libva libdrm"
15
16SRC_URI = "git://github.com/01org/intel-vaapi-driver.git;branch=v1.8-branch"
17# 1.8.3 release tag
18SRCREV = "f1d9ceddc0e84ed8d44dd59017b0e19b75dd5dcd"
19
20S = "${WORKDIR}/git"
21
22inherit autotools pkgconfig distro_features_check
23
24REQUIRED_DISTRO_FEATURES = "opengl"
25
26PACKAGECONFIG ??= "${@bb.utils.contains("DISTRO_FEATURES", "x11", "x11", "", d)} \
27 ${@bb.utils.contains("DISTRO_FEATURES", "opengl wayland", "wayland", "", d)}"
28PACKAGECONFIG[x11] = "--enable-x11,--disable-x11"
29PACKAGECONFIG[wayland] = "--enable-wayland,--disable-wayland,wayland wayland-native virtual/egl"
30
31FILES_${PN} += "${libdir}/dri/*.so"
32FILES_${PN}-dev += "${libdir}/dri/*.la"
33FILES_${PN}-dbg += "${libdir}/dri/.debug"
34
35UPSTREAM_CHECK_GITTAGREGEX = "(?P<pver>\d+\.\d+(\.\d+)*)"
diff --git a/common/recipes-multimedia/libva/va-intel.bb b/common/recipes-multimedia/libva/va-intel.bb
new file mode 100644
index 0000000..88539e2
--- /dev/null
+++ b/common/recipes-multimedia/libva/va-intel.bb
@@ -0,0 +1,32 @@
1DESCRIPTION = "Video Acceleration Add-ons for Intel BSPs"
2LICENSE = "MIT"
3LIC_FILES_CHKSUM = "file://${COREBASE}/meta/COPYING.MIT;md5=3da9cfbcb788c80a0384361b4de20420"
4
5S = "${WORKDIR}"
6
7PR = "r1"
8
9def map_valibs(d):
10 # The intel implementation requires the libva-intel-driver package
11 if bb.utils.contains('MACHINE_FEATURES', 'va-impl-intel', "1", "0", d) == "1":
12 return "libva libva-intel-driver"
13 # All meta-intel video acceleration requires libva
14 return "libva"
15
16VA_IMPL = "${@map_valibs(d)}"
17
18PACKAGES = "\
19 va-intel \
20 "
21
22ALLOW_EMPTY_va-intel = "1"
23
24RDEPENDS_va-intel = " \
25 ${VA_IMPL} \
26 "
27
28COMPATIBLE_HOST = '(i.86|x86_64).*-linux*'
29
30inherit distro_features_check
31
32REQUIRED_DISTRO_FEATURES = "opengl"
diff --git a/common/recipes-multimedia/libyami/libyami-utils/0001-Fix-build-with-clang.patch b/common/recipes-multimedia/libyami/libyami-utils/0001-Fix-build-with-clang.patch
new file mode 100644
index 0000000..a4a4029
--- /dev/null
+++ b/common/recipes-multimedia/libyami/libyami-utils/0001-Fix-build-with-clang.patch
@@ -0,0 +1,99 @@
1From b7e66182788cd925570bb4c310e21fbcd3185040 Mon Sep 17 00:00:00 2001
2From: Khem Raj <raj.khem@gmail.com>
3Date: Sat, 12 Aug 2017 08:49:20 -0700
4Subject: [PATCH] Fix build with clang
5
6Fix errors e.g.
7error: comparison of constant -1 with expression of type 'char' is always true [-Werror,-Wtautological-constant-out-of-range-compare]error: comparison of constant -1 with expression of type 'char' is always true [-Werror,-Wtautological-constant-out-of-range-compare]
8
9and
10
11psnr.cpp:225:17: error: bool literal returned from 'main' [-Werror,-Wmain]
12
13Signed-off-by: Khem Raj <raj.khem@gmail.com>
14---
15Upstream-Status: Pending
16
17 tests/decodehelp.cpp | 2 +-
18 tests/encodehelp.h | 2 +-
19 tests/vpp.cpp | 2 +-
20 tests/yamitranscode.cpp | 2 +-
21 testscripts/psnr.cpp | 4 ++--
22 5 files changed, 6 insertions(+), 6 deletions(-)
23
24diff --git a/tests/decodehelp.cpp b/tests/decodehelp.cpp
25index a69eab6..2d96598 100644
26--- a/tests/decodehelp.cpp
27+++ b/tests/decodehelp.cpp
28@@ -70,7 +70,7 @@ bool processCmdLine(int argc, char** argv, DecodeParameter* parameters)
29 {"capi", no_argument, NULL, 0},
30 {NULL, no_argument, NULL, 0}};
31
32- char opt;
33+ int opt;
34 while ((opt = getopt_long_only(argc, argv, "h:m:n:i:f:o:w:?", long_opts,&option_index)) != -1){
35 switch (opt) {
36 case 'h':
37diff --git a/tests/encodehelp.h b/tests/encodehelp.h
38index 57ccd77..76df801 100644
39--- a/tests/encodehelp.h
40+++ b/tests/encodehelp.h
41@@ -107,7 +107,7 @@ static VideoRateControl string_to_rc_mode(char *str)
42
43 static bool process_cmdline(int argc, char *argv[])
44 {
45- char opt;
46+ int opt;
47 const struct option long_opts[] = {
48 { "help", no_argument, NULL, 'h' },
49 { "qp", required_argument, NULL, 0 },
50diff --git a/tests/vpp.cpp b/tests/vpp.cpp
51index 5a60c0a..52da43b 100644
52--- a/tests/vpp.cpp
53+++ b/tests/vpp.cpp
54@@ -151,7 +151,7 @@ public:
55 private:
56 bool processCmdLine(int argc, char* argv[])
57 {
58- char opt;
59+ int opt;
60 const struct option long_opts[] = {
61 { "help", no_argument, NULL, 'h' },
62 { "sharpening", required_argument, NULL, 's' },
63diff --git a/tests/yamitranscode.cpp b/tests/yamitranscode.cpp
64index 4cb72aa..2fc6725 100755
65--- a/tests/yamitranscode.cpp
66+++ b/tests/yamitranscode.cpp
67@@ -95,7 +95,7 @@ static VideoRateControl string_to_rc_mode(char *str)
68
69 static bool processCmdLine(int argc, char *argv[], TranscodeParams& para)
70 {
71- char opt;
72+ int opt;
73 const struct option long_opts[] = {
74 { "help", no_argument, NULL, 'h' },
75 { "qp", required_argument, NULL, 0 },
76diff --git a/testscripts/psnr.cpp b/testscripts/psnr.cpp
77index 5cc24c9..68bd668 100644
78--- a/testscripts/psnr.cpp
79+++ b/testscripts/psnr.cpp
80@@ -215,14 +215,14 @@ int main(int argc, char *argv[])
81 const char* psnrresult = "average_psnr.txt";
82 int width=0,height=0;
83 int standardpsnr = NORMAL_PSNR;
84- char opt;
85+ int opt;
86 while ((opt = getopt(argc, argv, "h:W:H:i:o:s:?")) != -1)
87 {
88 switch (opt) {
89 case 'h':
90 case '?':
91 print_help(argv[0]);
92- return false;
93+ return -1;
94 case 'i':
95 filename1 = optarg;
96 break;
97--
982.14.1
99
diff --git a/common/recipes-multimedia/libyami/libyami-utils_1.2.0.bb b/common/recipes-multimedia/libyami/libyami-utils_1.2.0.bb
new file mode 100644
index 0000000..62d62d5
--- /dev/null
+++ b/common/recipes-multimedia/libyami/libyami-utils_1.2.0.bb
@@ -0,0 +1,31 @@
1SUMMARY = "Applications and Scripts for libyami."
2DESCRIPTION = "Applications and Scripts for libyami."
3
4HOMEPAGE = "https://github.com/01org/libyami-utils"
5BUGTRACKER = "https://github.com/01org/libyami-utils/issues/new"
6
7LICENSE = "Apache-2.0"
8LIC_FILES_CHKSUM = "file://LICENSE;md5=e3fc50a88d0a364313df4b21ef20c29e"
9
10SRC_URI = "git://github.com/01org/libyami-utils.git \
11 file://0001-Fix-build-with-clang.patch \
12 "
13SRCREV = "b480c0594a7e761a8ccfe6b19b3f9bd0c3d871a1"
14S = "${WORKDIR}/git"
15
16DEPENDS = "libva libyami"
17
18EXTRA_OECONF = "--enable-tests-gles --disable-md5"
19
20inherit autotools pkgconfig distro_features_check
21
22REQUIRED_DISTRO_FEATURES = "opengl"
23
24PACKAGECONFIG = "${@bb.utils.filter('DISTRO_FEATURES', 'x11', d)}"
25
26# --enable-x11 needs libva-x11
27# gles-tests fail to build without x11: see https://github.com/01org/libyami-utils/issues/91
28PACKAGECONFIG[x11] = "--enable-x11 --enable-tests-gles,--disable-x11 --disable-tests-gles, virtual/libx11"
29
30UPSTREAM_CHECK_URI = "http://github.com/01org/libyami-utils/releases"
31UPSTREAM_CHECK_REGEX = "(?P<pver>\d+(\.\d+)+)"
diff --git a/common/recipes-multimedia/libyami/libyami/0001-bitWriter.cpp-Delete-unused-CACHEBYTES.patch b/common/recipes-multimedia/libyami/libyami/0001-bitWriter.cpp-Delete-unused-CACHEBYTES.patch
new file mode 100644
index 0000000..a96c9b8
--- /dev/null
+++ b/common/recipes-multimedia/libyami/libyami/0001-bitWriter.cpp-Delete-unused-CACHEBYTES.patch
@@ -0,0 +1,27 @@
1From 294874b610a5b8af9b736b3afc938010af58785e Mon Sep 17 00:00:00 2001
2From: Khem Raj <raj.khem@gmail.com>
3Date: Fri, 11 Aug 2017 17:15:45 -0700
4Subject: [PATCH 1/9] bitWriter.cpp: Delete unused CACHEBYTES
5
6Signed-off-by: Khem Raj <raj.khem@gmail.com>
7---
8Upstream-Status: Pending
9
10 codecparsers/bitWriter.cpp | 1 -
11 1 file changed, 1 deletion(-)
12
13diff --git a/codecparsers/bitWriter.cpp b/codecparsers/bitWriter.cpp
14index 9bcb14d..08469bf 100644
15--- a/codecparsers/bitWriter.cpp
16+++ b/codecparsers/bitWriter.cpp
17@@ -24,7 +24,6 @@
18
19 namespace YamiParser {
20
21-const uint32_t CACHEBYTES = sizeof(unsigned long int);
22 const uint32_t CACHEBITS = sizeof(unsigned long int) * 8;
23
24 // clip to keep lowest n bits
25--
262.14.1
27
diff --git a/common/recipes-multimedia/libyami/libyami/0002-typecast-index-from-size_t-to-int.patch b/common/recipes-multimedia/libyami/libyami/0002-typecast-index-from-size_t-to-int.patch
new file mode 100644
index 0000000..a216566
--- /dev/null
+++ b/common/recipes-multimedia/libyami/libyami/0002-typecast-index-from-size_t-to-int.patch
@@ -0,0 +1,42 @@
1From 88fa048e22ad00b04054b8a64df53bd440e01537 Mon Sep 17 00:00:00 2001
2From: Khem Raj <raj.khem@gmail.com>
3Date: Fri, 11 Aug 2017 17:29:02 -0700
4Subject: [PATCH 2/9] typecast index from size_t to int
5
6size_t is not consistent across architectures e.g. on arm its unsigned int
7
8Fixes
9error: comparison of unsigned expression < 0 is always false [-Werror,-Wtautological-compare]
10
11Signed-off-by: Khem Raj <raj.khem@gmail.com>
12---
13Upstream-Status: Pending
14
15 codecparsers/jpegParser.cpp | 4 ++--
16 1 file changed, 2 insertions(+), 2 deletions(-)
17
18diff --git a/codecparsers/jpegParser.cpp b/codecparsers/jpegParser.cpp
19index 2217028..6da5c36 100644
20--- a/codecparsers/jpegParser.cpp
21+++ b/codecparsers/jpegParser.cpp
22@@ -639,7 +639,7 @@ bool Parser::parseDAC()
23
24 length -= 2;
25
26- if (index < 0 || index >= (2 * NUM_ARITH_TBLS)) {
27+ if ((int)index < 0 || index >= (2 * NUM_ARITH_TBLS)) {
28 ERROR("Invalid DAC Index");
29 return false;
30 }
31@@ -747,7 +747,7 @@ bool Parser::parseDHT()
32 huffTables = &m_dcHuffTables;
33 }
34
35- if (index < 0 || index >= NUM_HUFF_TBLS) {
36+ if ((int)index < 0 || index >= NUM_HUFF_TBLS) {
37 ERROR("Bad Huff Table Index");
38 return false;
39 }
40--
412.14.1
42
diff --git a/common/recipes-multimedia/libyami/libyami/0003-Add-Wno-invalid-offsetof-to-compiler-commandline.patch b/common/recipes-multimedia/libyami/libyami/0003-Add-Wno-invalid-offsetof-to-compiler-commandline.patch
new file mode 100644
index 0000000..1728960
--- /dev/null
+++ b/common/recipes-multimedia/libyami/libyami/0003-Add-Wno-invalid-offsetof-to-compiler-commandline.patch
@@ -0,0 +1,29 @@
1From 533d63287e9dd8f269b137c18fbe6c19206c8668 Mon Sep 17 00:00:00 2001
2From: Khem Raj <raj.khem@gmail.com>
3Date: Fri, 11 Aug 2017 17:49:43 -0700
4Subject: [PATCH 3/9] Add -Wno-invalid-offsetof to compiler commandline
5
6clang++ is fussy about offsetof on non-POD types
7
8Signed-off-by: Khem Raj <raj.khem@gmail.com>
9---
10Upstream-Status: Pending
11
12 codecparsers/Makefile.am | 1 +
13 1 file changed, 1 insertion(+)
14
15diff --git a/codecparsers/Makefile.am b/codecparsers/Makefile.am
16index 720bf81..d9226b3 100644
17--- a/codecparsers/Makefile.am
18+++ b/codecparsers/Makefile.am
19@@ -118,6 +118,7 @@ libyami_codecparser_cppflags = \
20 -Dvp8dx_start_decode=libyami_vp8dx_start_decode \
21 -Dvp8dx_bool_decoder_fill=libyami_vp8dx_bool_decoder_fill \
22 -I$(top_srcdir)/interface \
23+ -Wno-invalid-offsetof \
24 $(extra_includes) \
25 $(NULL)
26
27--
282.14.1
29
diff --git a/common/recipes-multimedia/libyami/libyami/0004-Typecast-POWER32SUB2-to-uint8_t.patch b/common/recipes-multimedia/libyami/libyami/0004-Typecast-POWER32SUB2-to-uint8_t.patch
new file mode 100644
index 0000000..27eca39
--- /dev/null
+++ b/common/recipes-multimedia/libyami/libyami/0004-Typecast-POWER32SUB2-to-uint8_t.patch
@@ -0,0 +1,33 @@
1From d9c831ee38da4551396fad5cd53c3dfc0e5e0cf8 Mon Sep 17 00:00:00 2001
2From: Khem Raj <raj.khem@gmail.com>
3Date: Fri, 11 Aug 2017 17:57:34 -0700
4Subject: [PATCH 4/9] Typecast POWER32SUB2 to uint8_t
5
6Fixes
7
8h265Parser.cpp:1064:5: error: comparison of constant 4294967294 with expression
9of type 'uint8_t' (aka 'unsigned char') is always false [-Werror,-Wtautological-constant-out-of-range-compare]
10
11Signed-off-by: Khem Raj <raj.khem@gmail.com>
12---
13Upstream-Status: Pending
14
15 codecparsers/h265Parser.cpp | 2 +-
16 1 file changed, 1 insertion(+), 1 deletion(-)
17
18diff --git a/codecparsers/h265Parser.cpp b/codecparsers/h265Parser.cpp
19index 0dea3a6..c6cded2 100644
20--- a/codecparsers/h265Parser.cpp
21+++ b/codecparsers/h265Parser.cpp
22@@ -125,7 +125,7 @@ namespace H265 {
23 \
24 CHECK_READ_UE(var->var##_max_num_reorder_pics[i], 0, var->var##_max_dec_pic_buffering_minus1[i]); \
25 \
26- CHECK_READ_UE(var->var##_max_latency_increase_plus1[i], 0, POWER32SUB2); \
27+ CHECK_READ_UE(var->var##_max_latency_increase_plus1[i], 0, (uint8_t)POWER32SUB2); \
28 } \
29 }
30
31--
322.14.1
33
diff --git a/common/recipes-multimedia/libyami/libyami/0005-move-c-definitions-out-of-extern-C-block.patch b/common/recipes-multimedia/libyami/libyami/0005-move-c-definitions-out-of-extern-C-block.patch
new file mode 100644
index 0000000..e77e85f
--- /dev/null
+++ b/common/recipes-multimedia/libyami/libyami/0005-move-c-definitions-out-of-extern-C-block.patch
@@ -0,0 +1,130 @@
1From 3748cf904089878971cfcf66abf14c4d74f8241a Mon Sep 17 00:00:00 2001
2From: Khem Raj <raj.khem@gmail.com>
3Date: Fri, 11 Aug 2017 18:03:07 -0700
4Subject: [PATCH 5/9] move c++ definitions out of extern "C" block
5
6Signed-off-by: Khem Raj <raj.khem@gmail.com>
7---
8Upstream-Status: Pending
9
10 decoder/vaapidecoder_host.cpp | 2 +-
11 encoder/vaapiencoder_host.cpp | 3 ++-
12 interface/VideoDecoderHost.h | 8 ++++----
13 interface/VideoEncoderHost.h | 8 ++++----
14 interface/VideoPostProcessHost.h | 8 ++++----
15 vpp/vaapipostprocess_host.cpp | 3 +--
16 6 files changed, 16 insertions(+), 16 deletions(-)
17
18diff --git a/decoder/vaapidecoder_host.cpp b/decoder/vaapidecoder_host.cpp
19index bcc9165..d9129f3 100644
20--- a/decoder/vaapidecoder_host.cpp
21+++ b/decoder/vaapidecoder_host.cpp
22@@ -100,9 +100,9 @@ void releaseVideoDecoder(IVideoDecoder * p)
23 {
24 delete p;
25 }
26+} // extern "C"
27
28 std::vector<std::string> getVideoDecoderMimeTypes()
29 {
30 return VaapiDecoderFactory::keys();
31 }
32-} // extern "C"
33diff --git a/encoder/vaapiencoder_host.cpp b/encoder/vaapiencoder_host.cpp
34index 49e903a..3ee9354 100644
35--- a/encoder/vaapiencoder_host.cpp
36+++ b/encoder/vaapiencoder_host.cpp
37@@ -78,9 +78,10 @@ void releaseVideoEncoder(IVideoEncoder* p) {
38 delete p;
39 }
40
41+} // extern "C"
42+
43 std::vector<std::string> getVideoEncoderMimeTypes()
44 {
45 return VaapiEncoderFactory::keys();
46 }
47
48-} // extern "C"
49diff --git a/interface/VideoDecoderHost.h b/interface/VideoDecoderHost.h
50index 86210fe..fd2ba7b 100644
51--- a/interface/VideoDecoderHost.h
52+++ b/interface/VideoDecoderHost.h
53@@ -32,12 +32,12 @@ extern "C" { // for dlsym usage
54 YamiMediaCodec::IVideoDecoder *createVideoDecoder(const char *mimeType);
55 /// \brief destroy the decoder
56 void releaseVideoDecoder(YamiMediaCodec::IVideoDecoder * p);
57-/** \fn void getVideoDecoderMimeTypes()
58- * \brief return the MimeTypes enabled in the current build
59-*/
60-std::vector<std::string> getVideoDecoderMimeTypes();
61
62 typedef YamiMediaCodec::IVideoDecoder *(*YamiCreateVideoDecoderFuncPtr) (const char *mimeType);
63 typedef void (*YamiReleaseVideoDecoderFuncPtr)(YamiMediaCodec::IVideoDecoder * p);
64 }
65+// \fn void getVideoDecoderMimeTypes()
66+// \brief return the MimeTypes enabled in the current build
67+//
68+std::vector<std::string> getVideoDecoderMimeTypes();
69 #endif /* VIDEO_DECODER_HOST_H_ */
70diff --git a/interface/VideoEncoderHost.h b/interface/VideoEncoderHost.h
71index fb80335..5fb5ab3 100644
72--- a/interface/VideoEncoderHost.h
73+++ b/interface/VideoEncoderHost.h
74@@ -32,12 +32,12 @@ extern "C" { // for dlsym usage
75 YamiMediaCodec::IVideoEncoder *createVideoEncoder(const char *mimeType);
76 ///brief destroy encoder
77 void releaseVideoEncoder(YamiMediaCodec::IVideoEncoder * p);
78-/** \fn void getVideoEncoderMimeTypes()
79- * \brief return the MimeTypes enabled in the current build
80-*/
81-std::vector<std::string> getVideoEncoderMimeTypes();
82
83 typedef YamiMediaCodec::IVideoEncoder *(*YamiCreateVideoEncoderFuncPtr) (const char *mimeType);
84 typedef void (*YamiReleaseVideoEncoderFuncPtr)(YamiMediaCodec::IVideoEncoder * p);
85 }
86 #endif /* VIDEO_ENCODER_HOST_H_ */
87+// \fn void getVideoEncoderMimeTypes()
88+// \brief return the MimeTypes enabled in the current build
89+//
90+std::vector<std::string> getVideoEncoderMimeTypes();
91diff --git a/interface/VideoPostProcessHost.h b/interface/VideoPostProcessHost.h
92index de046cd..f1c5ce5 100644
93--- a/interface/VideoPostProcessHost.h
94+++ b/interface/VideoPostProcessHost.h
95@@ -34,12 +34,12 @@ YamiMediaCodec::IVideoPostProcess *createVideoPostProcess(const char *mimeType);
96 * \brief destroy encoder
97 */
98 void releaseVideoPostProcess(YamiMediaCodec::IVideoPostProcess * p);
99-/** \fn void getVideoPostProcessMimeTypes()
100- * \brief return the MimeTypes enabled in the current build
101-*/
102-std::vector<std::string> getVideoPostProcessMimeTypes();
103
104 typedef YamiMediaCodec::IVideoPostProcess *(*YamiCreateVideoPostProcessFuncPtr) (const char *mimeType);
105 typedef void (*YamiReleaseVideoPostProcessFuncPtr)(YamiMediaCodec::IVideoPostProcess * p);
106 }
107 #endif /* VIDEO_POST_PROCESS_HOST_H_ */
108+// \fn void getVideoPostProcessMimeTypes()
109+// \brief return the MimeTypes enabled in the current build
110+//
111+std::vector<std::string> getVideoPostProcessMimeTypes();
112diff --git a/vpp/vaapipostprocess_host.cpp b/vpp/vaapipostprocess_host.cpp
113index cd40dea..bc06b38 100644
114--- a/vpp/vaapipostprocess_host.cpp
115+++ b/vpp/vaapipostprocess_host.cpp
116@@ -75,10 +75,9 @@ void releaseVideoPostProcess(IVideoPostProcess * p)
117 {
118 delete p;
119 }
120+} // extern "C"
121
122 std::vector<std::string> getVideoPostProcessMimeTypes()
123 {
124 return VaapiPostProcessFactory::keys();
125 }
126-
127-} // extern "C"
128--
1292.14.1
130
diff --git a/common/recipes-multimedia/libyami/libyami/0006-Avoid-namespace-conflicts-by-adding-explicit-using-n.patch b/common/recipes-multimedia/libyami/libyami/0006-Avoid-namespace-conflicts-by-adding-explicit-using-n.patch
new file mode 100644
index 0000000..c9c7452
--- /dev/null
+++ b/common/recipes-multimedia/libyami/libyami/0006-Avoid-namespace-conflicts-by-adding-explicit-using-n.patch
@@ -0,0 +1,41 @@
1From 27b61f5ab1b1643436f56517e4980734b4b9acca Mon Sep 17 00:00:00 2001
2From: Khem Raj <raj.khem@gmail.com>
3Date: Fri, 11 Aug 2017 18:38:05 -0700
4Subject: [PATCH 6/9] Avoid namespace conflicts by adding explicit using
5 <namespace>
6
7Signed-off-by: Khem Raj <raj.khem@gmail.com>
8---
9Upstream-Status: Pending
10
11 decoder/vaapidecoder_h264.h | 1 +
12 decoder/vaapidecoder_h265.h | 1 +
13 2 files changed, 2 insertions(+)
14
15diff --git a/decoder/vaapidecoder_h264.h b/decoder/vaapidecoder_h264.h
16index 57e2c27..ea5c2f2 100644
17--- a/decoder/vaapidecoder_h264.h
18+++ b/decoder/vaapidecoder_h264.h
19@@ -30,6 +30,7 @@ namespace YamiMediaCodec {
20
21 class VaapiDecPictureH264;
22 class VaapiDecoderH264 : public VaapiDecoderBase {
23+using YamiMediaCodec::VaapiDecoderBase::createPicture;
24 public:
25 typedef SharedPtr<VaapiDecPictureH264> PicturePtr;
26 typedef std::vector<PicturePtr> RefSet;
27diff --git a/decoder/vaapidecoder_h265.h b/decoder/vaapidecoder_h265.h
28index f7e2303..159e25f 100644
29--- a/decoder/vaapidecoder_h265.h
30+++ b/decoder/vaapidecoder_h265.h
31@@ -38,6 +38,7 @@ namespace YamiMediaCodec {
32
33 class VaapiDecPictureH265;
34 class VaapiDecoderH265:public VaapiDecoderBase {
35+ using YamiMediaCodec::VaapiDecoderBase::createPicture;
36 typedef YamiParser::H265::SPS SPS;
37 typedef YamiParser::H265::SliceHeader SliceHeader;
38 typedef YamiParser::H265::NalUnit NalUnit;
39--
402.14.1
41
diff --git a/common/recipes-multimedia/libyami/libyami/0007-Delete-unused-variables.patch b/common/recipes-multimedia/libyami/libyami/0007-Delete-unused-variables.patch
new file mode 100644
index 0000000..b80774c
--- /dev/null
+++ b/common/recipes-multimedia/libyami/libyami/0007-Delete-unused-variables.patch
@@ -0,0 +1,36 @@
1From b982997c96e11b9c0b3cd58a31af2d0a219713a3 Mon Sep 17 00:00:00 2001
2From: Khem Raj <raj.khem@gmail.com>
3Date: Fri, 11 Aug 2017 18:39:58 -0700
4Subject: [PATCH 7/9] Delete unused variables
5
6Signed-off-by: Khem Raj <raj.khem@gmail.com>
7---
8Upstream-Status: Pending
9
10 decoder/vaapidecoder_vp8.cpp | 8 ++++----
11 1 file changed, 4 insertions(+), 4 deletions(-)
12
13diff --git a/decoder/vaapidecoder_vp8.cpp b/decoder/vaapidecoder_vp8.cpp
14index 5fc89ec..ff5b896 100644
15--- a/decoder/vaapidecoder_vp8.cpp
16+++ b/decoder/vaapidecoder_vp8.cpp
17@@ -32,12 +32,12 @@ typedef VaapiDecoderVP8::PicturePtr PicturePtr;
18
19 // the following parameter apply to Intra-Predicted Macroblocks,
20 // $11.2 $11.4: key frame default probs
21-static const uint8_t keyFrameYModeProbs[4] = { 145, 156, 163, 128 };
22-static const uint8_t keyFrameUVModeProbs[3] = { 142, 114, 183 };
23+//static const uint8_t keyFrameYModeProbs[4] = { 145, 156, 163, 128 };
24+//static const uint8_t keyFrameUVModeProbs[3] = { 142, 114, 183 };
25
26 // $16.1: non-key frame default probs
27-static const uint8_t nonKeyFrameDefaultYModeProbs[4] = { 112, 86, 140, 37 };
28-static const uint8_t nonKeyFrameDefaultUVModeProbs[3] = { 162, 101, 204 };
29+//static const uint8_t nonKeyFrameDefaultYModeProbs[4] = { 112, 86, 140, 37 };
30+//static const uint8_t nonKeyFrameDefaultUVModeProbs[3] = { 162, 101, 204 };
31
32 static const uint32_t surfaceNumVP8 = 3;
33
34--
352.14.1
36
diff --git a/common/recipes-multimedia/libyami/libyami/0008-NalUnit-is-declared-in-different-namespace.patch b/common/recipes-multimedia/libyami/libyami/0008-NalUnit-is-declared-in-different-namespace.patch
new file mode 100644
index 0000000..18b98be
--- /dev/null
+++ b/common/recipes-multimedia/libyami/libyami/0008-NalUnit-is-declared-in-different-namespace.patch
@@ -0,0 +1,31 @@
1From c54130511c91e457f1c5bb47729f5e3a0fc0cb91 Mon Sep 17 00:00:00 2001
2From: Khem Raj <raj.khem@gmail.com>
3Date: Fri, 11 Aug 2017 18:42:28 -0700
4Subject: [PATCH 8/9] NalUnit is declared in different namespace
5
6Fixes
7vaapidecoder_h265.h:32:5: error: struct 'NalUnit' was previously declared as a class [-Werror,-Wmismatched-tags] struct NalUnit;
8
9Signed-off-by: Khem Raj <raj.khem@gmail.com>
10---
11Upstream-Status: Pending
12
13 decoder/vaapidecoder_h265.h | 2 +-
14 1 file changed, 1 insertion(+), 1 deletion(-)
15
16diff --git a/decoder/vaapidecoder_h265.h b/decoder/vaapidecoder_h265.h
17index 159e25f..674638f 100644
18--- a/decoder/vaapidecoder_h265.h
19+++ b/decoder/vaapidecoder_h265.h
20@@ -29,7 +29,7 @@ namespace YamiParser {
21 namespace H265 {
22 struct SPS;
23 struct SliceHeader;
24- struct NalUnit;
25+ class NalUnit;
26 class Parser;
27 };
28 };
29--
302.14.1
31
diff --git a/common/recipes-multimedia/libyami/libyami/0009-Fix-clang-warnings.patch b/common/recipes-multimedia/libyami/libyami/0009-Fix-clang-warnings.patch
new file mode 100644
index 0000000..08ef455
--- /dev/null
+++ b/common/recipes-multimedia/libyami/libyami/0009-Fix-clang-warnings.patch
@@ -0,0 +1,37 @@
1From a54dc7b6a777882f55a3f31bd97748a261db03d2 Mon Sep 17 00:00:00 2001
2From: Khem Raj <raj.khem@gmail.com>
3Date: Fri, 11 Aug 2017 18:53:06 -0700
4Subject: [PATCH 9/9] Fix clang warnings
5
6Signed-off-by: Khem Raj <raj.khem@gmail.com>
7---
8Upstream-Status: Pending
9
10 encoder/vaapiencoder_h264.cpp | 4 ++--
11 1 file changed, 2 insertions(+), 2 deletions(-)
12
13diff --git a/encoder/vaapiencoder_h264.cpp b/encoder/vaapiencoder_h264.cpp
14index 98bc2ed..94015cb 100644
15--- a/encoder/vaapiencoder_h264.cpp
16+++ b/encoder/vaapiencoder_h264.cpp
17@@ -509,7 +509,7 @@ bit_writer_write_sps(BitWriter* bitwriter,
18 }
19 /* vcl_hrd_parameters_present_flag */
20 bitwriter->writeBits(0, 1);
21- if (nal_hrd_parameters_present_flag || 0/*vcl_hrd_parameters_present_flag*/) {
22+ if (nal_hrd_parameters_present_flag || !!(0)/*vcl_hrd_parameters_present_flag*/) {
23 /* low_delay_hrd_flag */
24 bitwriter->writeBits(0, 1);
25 }
26@@ -1889,7 +1889,7 @@ bool VaapiEncoderH264::addSliceHeaders (const PicturePtr& picture) const
27 sliceParam->num_macroblocks = curSliceMbs;
28 sliceParam->macroblock_info = VA_INVALID_ID;
29 sliceParam->slice_type = h264_get_slice_type (picture->m_type);
30- assert (sliceParam->slice_type != -1);
31+ assert ((int)sliceParam->slice_type != -1);
32 sliceParam->idr_pic_id = m_idrNum;
33 sliceParam->pic_order_cnt_lsb = picture->m_poc % m_maxPicOrderCnt;
34
35--
362.14.1
37
diff --git a/common/recipes-multimedia/libyami/libyami_1.2.0.bb b/common/recipes-multimedia/libyami/libyami_1.2.0.bb
new file mode 100644
index 0000000..1d1d02f
--- /dev/null
+++ b/common/recipes-multimedia/libyami/libyami_1.2.0.bb
@@ -0,0 +1,34 @@
1SUMMARY = "Yami is media infrastructure base on libva"
2DESCRIPTION = "Yet Another Media Infrastructure \
3light weight hardware codec library base on VA-API "
4
5HOMEPAGE = "https://github.com/01org/libyami"
6BUGTRACKER = "https://github.com/01org/libyami/issues/new"
7
8LICENSE = "Apache-2.0"
9LIC_FILES_CHKSUM = "file://LICENSE.md;md5=3b83ef96387f14655fc854ddc3c6bd57"
10
11SRC_URI = "git://github.com/01org/libyami.git;branch=apache \
12 file://0001-bitWriter.cpp-Delete-unused-CACHEBYTES.patch \
13 file://0002-typecast-index-from-size_t-to-int.patch \
14 file://0003-Add-Wno-invalid-offsetof-to-compiler-commandline.patch \
15 file://0004-Typecast-POWER32SUB2-to-uint8_t.patch \
16 file://0005-move-c-definitions-out-of-extern-C-block.patch \
17 file://0006-Avoid-namespace-conflicts-by-adding-explicit-using-n.patch \
18 file://0007-Delete-unused-variables.patch \
19 file://0008-NalUnit-is-declared-in-different-namespace.patch \
20 file://0009-Fix-clang-warnings.patch \
21"
22SRCREV = "c884fc3facbf1a0adf2082a1cf95cb146300a5ca"
23S = "${WORKDIR}/git"
24
25PACKAGECONFIG ??= "${@bb.utils.contains("DISTRO_FEATURES", "x11", "x11", "", d)}"
26PACKAGECONFIG[x11] = "--enable-x11,--disable-x11,virtual/libx11 libxrandr libxrender"
27
28DEPENDS = "libva"
29inherit autotools pkgconfig distro_features_check
30
31REQUIRED_DISTRO_FEATURES = "opengl"
32
33UPSTREAM_CHECK_URI = "https://github.com/01org/libyami/releases"
34UPSTREAM_CHECK_REGEX = "(?P<pver>\d+(\.\d+)+)"
diff --git a/common/recipes-rt/images/core-image-rt-sdk.bb b/common/recipes-rt/images/core-image-rt-sdk.bb
new file mode 100644
index 0000000..6b43a87
--- /dev/null
+++ b/common/recipes-rt/images/core-image-rt-sdk.bb
@@ -0,0 +1,20 @@
1require recipes-core/images/core-image-minimal.bb
2
3# Skip processing of this recipe if linux-intel-rt is not explicitly specified as the
4# PREFERRED_PROVIDER for virtual/kernel. This avoids errors when trying
5# to build multiple virtual/kernel providers.
6python () {
7 if d.getVar("PREFERRED_PROVIDER_virtual/kernel") != "linux-intel-rt":
8 raise bb.parse.SkipPackage("Set PREFERRED_PROVIDER_virtual/kernel to linux-intel-rt to enable it")
9}
10
11DESCRIPTION = "Small image capable of booting a device with a test suite and \
12tools for real-time use. It includes the full meta-toolchain, development \
13headers and libraries to form a standalone SDK."
14DEPENDS = "linux-intel-rt"
15
16IMAGE_FEATURES += "dev-pkgs tools-sdk tools-debug eclipse-debug tools-profile tools-testapps debug-tweaks"
17
18IMAGE_INSTALL += "rt-tests hwlatdetect kernel-dev"
19
20LICENSE = "MIT"
diff --git a/common/recipes-rt/images/core-image-rt.bb b/common/recipes-rt/images/core-image-rt.bb
new file mode 100644
index 0000000..4db0a57
--- /dev/null
+++ b/common/recipes-rt/images/core-image-rt.bb
@@ -0,0 +1,17 @@
1require recipes-core/images/core-image-minimal.bb
2
3# Skip processing of this recipe if linux-intel-rt is not explicitly specified as the
4# PREFERRED_PROVIDER for virtual/kernel. This avoids errors when trying
5# to build multiple virtual/kernel providers.
6python () {
7 if d.getVar("PREFERRED_PROVIDER_virtual/kernel") != "linux-intel-rt":
8 raise bb.parse.SkipPackage("Set PREFERRED_PROVIDER_virtual/kernel to linux-intel-rt to enable it")
9}
10
11DESCRIPTION = "A small image just capable of allowing a device to boot plus a \
12real-time test suite and tools appropriate for real-time use."
13DEPENDS = "linux-intel-rt"
14
15IMAGE_INSTALL += "rt-tests hwlatdetect"
16
17LICENSE = "MIT"
diff --git a/common/recipes-selftest/images/files/incorrect.crt b/common/recipes-selftest/images/files/incorrect.crt
new file mode 100644
index 0000000..3a2411a
--- /dev/null
+++ b/common/recipes-selftest/images/files/incorrect.crt
@@ -0,0 +1,19 @@
1-----BEGIN CERTIFICATE-----
2MIIDCTCCAfGgAwIBAgIJAIYXAHv3cQNjMA0GCSqGSIb3DQEBCwUAMBsxGTAXBgNV
3BAMMEFRlc3QgWW9jdG8gdGhpbmcwHhcNMTcwMTI1MjI1MjI3WhcNMTgwMTI1MjI1
4MjI3WjAbMRkwFwYDVQQDDBBUZXN0IFlvY3RvIHRoaW5nMIIBIjANBgkqhkiG9w0B
5AQEFAAOCAQ8AMIIBCgKCAQEAukI2ioMeL8qaXxMtryonAT51w+Zre0wB8bDBPuXD
6SwDVXNWfiKKTfCVEkLEUnsUEd7jiKswCT5orTwCD7aQK0mTrkAWEi8hEI3MkNoeh
7T51gkuTfv7A/HgPkhhlU4UQqipI6XoLf7o7PUV33ZfB43//iKY2kLBdsFvs4ALWE
831hLOkCFb+nqMnfZxq7DgvBwIdxJdLQvaskpDMfkna+zE3QWqkH5v55atW8Bunwk
9/6q5kqNhyrjZb4i0BqJ5AHFUEQzlDcjpyFVUtR14r0IxjBFMHZXrx4uLe7KvGf/4
10GqpqeFOPqxMsfC5ILJJ7nvwFViqftGgtWg/12bKMTB5saQIDAQABo1AwTjAdBgNV
11HQ4EFgQURA8KbgpiGfS2+7MT0H5AvpxeYLowHwYDVR0jBBgwFoAURA8KbgpiGfS2
12+7MT0H5AvpxeYLowDAYDVR0TBAUwAwEB/zANBgkqhkiG9w0BAQsFAAOCAQEAK9n+
139T+hlM2kEpsUgtyihEJbGHzbw+Pj11b0ICntCVuPKewtBMveYp8lejrQwMFNGRMt
14ZQe1LFb9HcLeM3MLUz9Lm4BJIjkey3Jfq1AskROYk/bJnFIJIx6P3U9gBa20P46X
15LH3g6yub1HR7KZC9nfBsak3FPoJR/SYTJs0HsMeL4878+2IbETA4BL0kbKW48FFW
16jF4f6don0eiaF8b4KkfbWKrCaEm+LMxbyBEQ6fIb1cmGY8A9A5houjmgi6YWSkoi
17SLpOC9TZ2R51fO9rRsv7XwLK0V9o9YaEYPBg6V/TeJl5nxAZBeVTKVTQbBGZY+l2
18nzN0pKsl7RXLf3SRYA==
19-----END CERTIFICATE-----
diff --git a/common/recipes-selftest/images/files/incorrect.key b/common/recipes-selftest/images/files/incorrect.key
new file mode 100644
index 0000000..d05475b
--- /dev/null
+++ b/common/recipes-selftest/images/files/incorrect.key
@@ -0,0 +1,27 @@
1-----BEGIN RSA PRIVATE KEY-----
2MIIEowIBAAKCAQEAukI2ioMeL8qaXxMtryonAT51w+Zre0wB8bDBPuXDSwDVXNWf
3iKKTfCVEkLEUnsUEd7jiKswCT5orTwCD7aQK0mTrkAWEi8hEI3MkNoehT51gkuTf
4v7A/HgPkhhlU4UQqipI6XoLf7o7PUV33ZfB43//iKY2kLBdsFvs4ALWE31hLOkCF
5b+nqMnfZxq7DgvBwIdxJdLQvaskpDMfkna+zE3QWqkH5v55atW8Bunwk/6q5kqNh
6yrjZb4i0BqJ5AHFUEQzlDcjpyFVUtR14r0IxjBFMHZXrx4uLe7KvGf/4GqpqeFOP
7qxMsfC5ILJJ7nvwFViqftGgtWg/12bKMTB5saQIDAQABAoIBAQCEtAox86s9N6d2
8164z3998Zmj3UyL+7K9x6JI2YvMabBSYGOeaLOLRj6fjQxdC63H8brBM958p4di7
9Z82XMco4Dok6yoOeJ+hMLYv+gfGvTJxy7DhyVXsSwok99axg9vUsV3TYw3wSdpNF
10EKLkcUldpu0W2ADBHUr4sLI85xctHH3Kt0sNDzhgADFa5rDYACXTKHtFOhEqBIwN
11FmbuRQirnErUkI3Pczgl2Xy1MlaozH9CB+bLAb5q2FYu4DKgjl4UorC+w2HV41KH
12XoL7L36XXqLRHBfEAwOWb8yro+TK8T7gW7aagTI1wgsbbQkjQmOHxclmJACdMOiJ
13DjPeR0GBAoGBAO7i2eaEoKa9QlKokN+93uOJD/F6DBi6jF0vGOqWlF8AVTj3kGL3
14X8fY/avrSlg7hKZWdei+Q5PyZViKxqmHjq781ZisKck52Tqz4s7ylqRXSgStinZr
15UqrkShCqZ3g1W91gIeVPQz0/b+gBskoHzQ5WQHfV5v9S1PaxjzcYtCrRAoGBAMea
16LcA2jjuEjqxa5v5fh8ygcHasJMRKJxW1OCKiQ94DjjzPsdVqZ1sJZChLW/N3nxe7
17wHlNJmsGbJ2w1zD5+qkkPjLq5Q4B5KAd62NNrWaEHFdEc/PPkn4xP7Zkfuu5K+m2
187z/MF4ibvVh9PvD3HY8FWKEtkqB4rfD8AoUOVd4ZAoGAXxXAsfa8k2Hl0kzyTXyg
19CWV3CSERS46FbFngyw9gw2e4hFJWEG5ym3ONlS60iuY16JelmxyQfYUQPewPI0+n
20xZMx2fE9OLFj+++6KbF5sLRl6/K/mF8jqo3vxS5uvPRQOo+XLlUcaHalrm1ub/Um
2187v1MT3dEmgACKmoXb/hhuECgYAZluiapePiOYJZEmZe4jx0vXTtofAswhz0qYEC
223663vdj0buQrqjKJ91BB4jdtpT5eOpHYe02blv1B0jQkcUfze1QGDxtCineXF37g
23Aktiwzkm7v22mjv7tbCnX4buDZVVp0BQ+4dg2iaSO6xgFC5T8amFMGSF8jLKnGRu
24ToIvsQKBgADBTse2vnI85NRsYq48ztQuIU2zlGXIAcoPSvGb8Vhty/joc0jWcI5P
25raGXBARbuVlcEapK3mDRfO0CQjDaTPK4EYYJwGp8k33Hkkcbgs4kfm308jRsclMr
26YeMwQsYyOv45x4iPCwrqZEhpPDvACBi7DB6QvZ0++vJbobTt1jyi
27-----END RSA PRIVATE KEY-----
diff --git a/common/recipes-selftest/images/files/refkit-db.crt b/common/recipes-selftest/images/files/refkit-db.crt
new file mode 100644
index 0000000..22ad6a8
--- /dev/null
+++ b/common/recipes-selftest/images/files/refkit-db.crt
@@ -0,0 +1,18 @@
1-----BEGIN CERTIFICATE-----
2MIIC+zCCAeOgAwIBAgIJANT2SMJoGZGsMA0GCSqGSIb3DQEBCwUAMBQxEjAQBgNV
3BAMMCXJlZmtpdC1kYjAeFw0xNzA0MjAxMjA2MzJaFw0xODA0MjAxMjA2MzJaMBQx
4EjAQBgNVBAMMCXJlZmtpdC1kYjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoC
5ggEBALQcIqYiAVfN8U+vcuPZAYBQVe8CXuuZNct/Knn/tT7sXZIGMCDnla2khC4/
6+tdG3Umo6ON5SfaPCx3+Y6jRY6PWDU5sZlzWZibRJpjUT3bJZUhYEwgxvOVHJWWV
7OYlfAvHFBhdYygn99h7Fl9qjThpIvs+WJwRLt21ntlAYBHNR0mot3zur8i2V16i4
8qDChq4uSK2A+OuWGQHHBPy0ukOfW7MzCC3mDcW32o6lMzUaB3O/sUb6BKvF4c0Hb
9VM58zqLjkE9FGvk9iPwO7dNpIkz6CmnRSMCqqTqzjxA6dqgMej3Yec4clmL0Bu5H
106OBpka7qNM/aqLQ5XvN60IhIR2kCAwEAAaNQME4wHQYDVR0OBBYEFGhgESWFFHgb
11Gp9GEuYh5O/7O6rdMB8GA1UdIwQYMBaAFGhgESWFFHgbGp9GEuYh5O/7O6rdMAwG
12A1UdEwQFMAMBAf8wDQYJKoZIhvcNAQELBQADggEBAI/ShHxDR8pr/YeD0O910yBS
13cxiqMnH7pfTJEaNoTbed5tlGJNzHwjv5sJj87jRuEJs9RG4zCRG4KdYtBs9nj5aF
14nWNyv2RfDePJYxlx1H1MnHdG2iCXbbzdwh/zQDge58xVBXK6JE+zipMMMGDan281
159vuwH7MA3cSmvOI3waPv2aGG+eukpUU4/06HSkHPbml+l74tIryNoBohj0tykAFc
16uqWcLdclJPz/XFgURjAJfFVkgwu5388l7uz3y9vRW5OTyIoQRriwNRxsDY8Dao8b
17NmjzU4k2WyGA3uOSUpSXnUmJfT7eKVG6Efe6Afer6sGnLqNNZf1AcfHiP2woy9M=
18-----END CERTIFICATE-----
diff --git a/common/recipes-selftest/images/files/refkit-db.key b/common/recipes-selftest/images/files/refkit-db.key
new file mode 100644
index 0000000..4b54587
--- /dev/null
+++ b/common/recipes-selftest/images/files/refkit-db.key
@@ -0,0 +1,28 @@
1-----BEGIN PRIVATE KEY-----
2MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQC0HCKmIgFXzfFP
3r3Lj2QGAUFXvAl7rmTXLfyp5/7U+7F2SBjAg55WtpIQuP/rXRt1JqOjjeUn2jwsd
4/mOo0WOj1g1ObGZc1mYm0SaY1E92yWVIWBMIMbzlRyVllTmJXwLxxQYXWMoJ/fYe
5xZfao04aSL7PlicES7dtZ7ZQGARzUdJqLd87q/ItldeouKgwoauLkitgPjrlhkBx
6wT8tLpDn1uzMwgt5g3Ft9qOpTM1Ggdzv7FG+gSrxeHNB21TOfM6i45BPRRr5PYj8
7Du3TaSJM+gpp0UjAqqk6s48QOnaoDHo92HnOHJZi9AbuR+jgaZGu6jTP2qi0OV7z
8etCISEdpAgMBAAECggEAbtXplKbUgL4hQ9JKN2Cxhc7qMv0YgI92BVaqQw1S8ffu
91Q+tynH5MDRPi06gBJ59SvkA6AsZsvrv8nM7zQWd9ZKh+aLHk1X04upOgDoW9JiX
10FV/txlslTUrs/ohIMfsgCrweNXvUSTXZobIi8s8QHyipE4HpXMFjjZYHIV7GTlgA
11PRgGu3NygbWfR8hcx5JtzVz/jka7FFFSbk/pMr0TeJHXP55VfqWLeeSBQmWwooj2
12QcRfqMXgLKgu6uEggaP5HMcfTuWgWNhbke/596CgsUtQ5Gg64Q6v7cKcPy0/lgn1
13PnvfT9uhgEFDLNFkSBxV3ImrNYo73Nqmbp3w5tK9SQKBgQDs/HW7pNnB0LD51qok
14pkX0SBvyKxDT1QuU4z0FY9GT7OKOg8Xa0ZGyErt+ZbyFiyUGF5Axc3rJ3DyGslgu
155O+AqcpCQOlOyovGQ6ST9x/gEeVcRnZn1MV4vMxwaOSXtY7u0IGyaDlFn1QWHWCN
16imv8OR6YuhivwBIXGzJ16oEqDwKBgQDCj3ls7tlPrLvUQIh8gfjCoInU8fRAqtAe
17Ab/OximLsKQPKLDma6xd+X2Fk8Dowdb88GNT99x3VZjHqVJM9URDkiOGKAXA/rBp
18jAXhnQwahT8YCzOUHqDYNMMQrXHvbiHqLodGrrO2WjYNmH69prQAk8WYAIwl+hdx
19BS70LGLPBwKBgQDU9RinAkBcFjiyieBjBreeCJ50Q5bfhHbf2EOhcE2IbDo6bteB
20Bwmxx3uM3cdHCf6/NrVweqFAfBQ3xlPP8BH4wJrsZoBBOWnZRDfEbzHJnMtK3FbS
21fzTkhmQAL4Ibgh9rIxspQtcUZVSees+k4VqgUIPaIoDEjgizktEJfS2MqQKBgQDA
22rOFtVaRz2PYyHq6LzxMRe3bEIdDn8cEk1kqjdW9TXV07feqiZmNOtXLvRAG4/63u
231Akp8L6ul2Az6qUMfaBa4nC3vQ7lr9P40qhIZATGhsqS/xTXTPWw55999qZsnL6N
24cgKZpw1mOzRohmqNWnfMUotOGsywF1n7nUyAlyxLJQKBgElTaNTFYF3MbGfhl1He
25fnDXlf8OCOK1i5oIzMLqverb2UN/qp6p0b3SAtcw5cUXcaPlajHrfYgacF/0Qyua
26Cerey9GLEdJ7saDWhz0GyJ8yyEXy8CVs0svVaLPWI0s2B7/obzP9+gTb/WE9qZqu
27bNoVEpJ/wZhk+IL4+KPmqphu
28-----END PRIVATE KEY-----
diff --git a/common/recipes-selftest/images/secureboot-selftest-image-signed.bb b/common/recipes-selftest/images/secureboot-selftest-image-signed.bb
new file mode 100644
index 0000000..3ce11f3
--- /dev/null
+++ b/common/recipes-selftest/images/secureboot-selftest-image-signed.bb
@@ -0,0 +1,6 @@
1require secureboot-selftest-image-unsigned.bb
2
3IMAGE_FEATURES += "secureboot"
4
5SECURE_BOOT_SIGNING_KEY ?= "${THISDIR}/files/refkit-db.key"
6SECURE_BOOT_SIGNING_CERT ?= "${THISDIR}/files/refkit-db.crt"
diff --git a/common/recipes-selftest/images/secureboot-selftest-image-unsigned.bb b/common/recipes-selftest/images/secureboot-selftest-image-unsigned.bb
new file mode 100644
index 0000000..e03e7b4
--- /dev/null
+++ b/common/recipes-selftest/images/secureboot-selftest-image-unsigned.bb
@@ -0,0 +1,20 @@
1require recipes-core/images/core-image-minimal.bb
2
3DEPENDS_remove = "grub-efi"
4
5inherit uefi-comboapp
6
7WKS_FILE = "generic-bootdisk.wks.in"
8
9do_uefiapp_deploy_append() {
10 for i in ${DEPLOY_DIR_IMAGE}/${IMAGE_LINK_NAME}.boot*.efi; do
11 target=`basename $i`
12 target=`echo $target | sed -e 's/${IMAGE_LINK_NAME}.//'`
13
14 cat > ${IMAGE_ROOTFS}/boot/startup.nsh << EOF
15$target
16reset
17EOF
18 break
19 done
20}
diff --git a/common/recipes-support/sbsigntool/sbsigntool-native_git.bb b/common/recipes-support/sbsigntool/sbsigntool-native_git.bb
new file mode 100644
index 0000000..430a6a7
--- /dev/null
+++ b/common/recipes-support/sbsigntool/sbsigntool-native_git.bb
@@ -0,0 +1,77 @@
1DESCRIPTION = "Utility for signing and verifying files for UEFI Secure Boot"
2LICENSE = "GPLv3 & LGPL-2.1 & LGPL-3.0 & MIT"
3
4# sbsigntool statically links to libccan.a which is built with modules
5# passed to "create-ccan-tree" (and their dependencies). Therefore,
6# we also keep track of all the ccan module licenses.
7LIC_FILES_CHKSUM = "file://LICENSE.GPLv3;md5=9eef91148a9b14ec7f9df333daebc746 \
8 file://COPYING;md5=a7710ac18adec371b84a9594ed04fd20 \
9 file://lib/ccan.git/ccan/endian/LICENSE;md5=2d5025d4aa3495befef8f17206a5b0a1 \
10 file://lib/ccan.git/ccan/htable/LICENSE;md5=2d5025d4aa3495befef8f17206a5b0a1 \
11 file://lib/ccan.git/ccan/list/LICENSE;md5=2d5025d4aa3495befef8f17206a5b0a1 \
12 file://lib/ccan.git/ccan/read_write_all/LICENSE;md5=2d5025d4aa3495befef8f17206a5b0a1 \
13 file://lib/ccan.git/ccan/talloc/LICENSE;md5=2d5025d4aa3495befef8f17206a5b0a1 \
14 file://lib/ccan.git/ccan/typesafe_cb/LICENSE;md5=2d5025d4aa3495befef8f17206a5b0a1 \
15 file://lib/ccan.git/ccan/failtest/LICENSE;md5=6a6a8e020838b23406c81b19c1d46df6 \
16 file://lib/ccan.git/ccan/tlist/LICENSE;md5=6a6a8e020838b23406c81b19c1d46df6 \
17 file://lib/ccan.git/ccan/time/LICENSE;md5=838c366f69b72c5df05c96dff79b35f2 \
18"
19
20# The original upstream is git://kernel.ubuntu.com/jk/sbsigntool but it has
21# not been maintained and many patches have been backported in this repo.
22SRC_URI = "git://git.kernel.org/pub/scm/linux/kernel/git/jejb/sbsigntools.git;protocol=https;name=sbsigntools \
23 git://github.com/rustyrussell/ccan.git;protocol=https;destsuffix=git/lib/ccan.git;name=ccan \
24 "
25
26SRCREV_sbsigntools ?= "efbb550858e7bd3f43e64228d22aea440ef6a14d"
27SRCREV_ccan ?= "b1f28e17227f2320d07fe052a8a48942fe17caa5"
28SRCREV_FORMAT = "sbsigntools_ccan"
29
30DEPENDS = "binutils-native gnu-efi-native help2man-native openssl10-native util-linux-native"
31
32PV = "0.8-git${SRCPV}"
33
34S = "${WORKDIR}/git"
35
36inherit native autotools pkgconfig
37
38do_configure_prepend() {
39 cd ${S}
40
41 if [ ! -e lib/ccan ]; then
42
43 # Use empty SCOREDIR because 'make scores' is not run.
44 # The default setting depends on (non-whitelisted) host tools.
45 sed -i -e 's#^\(SCOREDIR=\).*#\1#' lib/ccan.git/Makefile
46
47 lib/ccan.git/tools/create-ccan-tree \
48 --build-type=automake lib/ccan \
49 talloc read_write_all build_assert array_size endian
50 fi
51
52 # Create generatable docs from git
53 (
54 echo "Authors of sbsigntool:"
55 echo
56 git log --format='%an' | sort -u | sed 's,^,\t,'
57 ) > AUTHORS
58
59 # Generate simple ChangeLog
60 git log --date=short --format='%ad %t %an <%ae>%n%n * %s%n' > ChangeLog
61
62 cd ${B}
63}
64
65def efi_arch(d):
66 import re
67 harch = d.getVar("HOST_ARCH")
68 if re.match("i[3456789]86", harch):
69 return "ia32"
70 return harch
71
72EXTRA_OEMAKE = "\
73 INCLUDES+='-I${S}/lib/ccan.git/ \
74 -I${STAGING_INCDIR_NATIVE}/efi \
75 -I${STAGING_INCDIR_NATIVE} \
76 -I${STAGING_INCDIR_NATIVE}/efi/${@efi_arch(d)}' \
77 "
diff --git a/conf/include/maintainers.inc b/conf/include/maintainers.inc
new file mode 100644
index 0000000..995ff33
--- /dev/null
+++ b/conf/include/maintainers.inc
@@ -0,0 +1,23 @@
1# This file contains a list of recipe maintainers for meta-intel
2
3RECIPE_MAINTAINER_pn-core-image-rt = "Swee Aun Khor <swee.aun.khor@intel.com>"
4RECIPE_MAINTAINER_pn-core-image-rt-sdk = "Swee Aun Khor <swee.aun.khor@intel.com>"
5RECIPE_MAINTAINER_pn-efilinux = "Swee Aun Khor <swee.aun.khor@intel.com>"
6RECIPE_MAINTAINER_pn-gma500-gfx-check = "Wei Tee Ng <wei.tee.ng@intel.com>"
7RECIPE_MAINTAINER_pn-intel-gpu-tools = "Wei Tee Ng <wei.tee.ng@intel.com>"
8RECIPE_MAINTAINER_pn-intel-microcode = "Swee Aun Khor <swee.aun.khor@intel.com>"
9RECIPE_MAINTAINER_pn-intel-minimal-initramfs = "Swee Aun Khor <swee.aun.khor@intel.com>"
10RECIPE_MAINTAINER_pn-iucode-tool = "Swee Aun Khor <swee.aun.khor@intel.com>"
11RECIPE_MAINTAINER_pn-libva-intel-driver = "Wei Tee Ng <wei.tee.ng@intel.com>"
12RECIPE_MAINTAINER_pn-libyami = "Wei Tee Ng <wei.tee.ng@intel.com>"
13RECIPE_MAINTAINER_pn-libyami-utils = "Wei Tee Ng <wei.tee.ng@intel.com>"
14RECIPE_MAINTAINER_pn-linux-intel = "Swee Aun Khor <swee.aun.khor@intel.com>"
15RECIPE_MAINTAINER_pn-linux-intel-rt = "Swee Aun Khor <swee.aun.khor@intel.com>"
16RECIPE_MAINTAINER_pn-lms7 = "TBD"
17RECIPE_MAINTAINER_pn-lms8 = "TBD"
18RECIPE_MAINTAINER_pn-rmc = "Wei Tee Ng <wei.tee.ng@intel.com>"
19RECIPE_MAINTAINER_pn-rmc-db = "Wei Tee Ng <wei.tee.ng@intel.com>"
20RECIPE_MAINTAINER_pn-thermald = "Swee Aun Khor <swee.aun.khor@intel.com>"
21RECIPE_MAINTAINER_pn-va-intel = "Wei Tee Ng <wei.tee.ng@intel.com>"
22RECIPE_MAINTAINER_pn-xf86-video-ast = "Wei Tee Ng <wei.tee.ng@intel.com>"
23RECIPE_MAINTAINER_pn-xf86-video-mga = "Wei Tee Ng <wei.tee.ng@intel.com>"
diff --git a/conf/layer.conf b/conf/layer.conf
new file mode 100644
index 0000000..53f831e
--- /dev/null
+++ b/conf/layer.conf
@@ -0,0 +1,24 @@
1# We have a conf and classes directory, add to BBPATH
2BBPATH .= ":${LAYERDIR}:${LAYERDIR}/common"
3
4# We have recipes-* directories, add to BBFILES
5BBFILES += "${LAYERDIR}/common/recipes-*/*/*.bb \
6 ${LAYERDIR}/common/recipes-*/*/*.bbappend"
7
8BBFILE_COLLECTIONS += "intel"
9BBFILE_PATTERN_intel := "^${LAYERDIR}/common/"
10BBFILE_PRIORITY_intel = "5"
11
12# Additional license directories.
13LICENSE_PATH += "${LAYERDIR}/common/custom-licenses"
14
15LAYERDEPENDS_intel = "core"
16LAYERRECOMMENDS_intel = "dpdk intel-qat"
17
18# This should only be incremented on significant changes that will
19# cause compatibility issues with other layers
20LAYERVERSION_intel = "4"
21LAYERSERIES_COMPAT_intel = "rocko"
22
23
24require ${LAYERDIR}/conf/include/maintainers.inc
diff --git a/conf/machine/include/intel-common-pkgarch.inc b/conf/machine/include/intel-common-pkgarch.inc
new file mode 100644
index 0000000..d0f208b
--- /dev/null
+++ b/conf/machine/include/intel-common-pkgarch.inc
@@ -0,0 +1,15 @@
1INTEL_COMMON_PACKAGE_ARCH ?= "${TUNE_PKGARCH}-intel-common"
2PACKAGE_ARCH_pn-linux-intel = "${INTEL_COMMON_PACKAGE_ARCH}"
3PACKAGE_ARCH_pn-linux-intel-rt = "${INTEL_COMMON_PACKAGE_ARCH}"
4PACKAGE_ARCH_pn-linux-intel-tiny = "${INTEL_COMMON_PACKAGE_ARCH}"
5PACKAGE_ARCH_pn-linux-intel-dev = "${INTEL_COMMON_PACKAGE_ARCH}"
6PACKAGE_ARCH_pn-linux-yocto = "${INTEL_COMMON_PACKAGE_ARCH}"
7PACKAGE_ARCH_pn-linux-yocto-rt = "${INTEL_COMMON_PACKAGE_ARCH}"
8PACKAGE_ARCH_pn-linux-yocto-tiny = "${INTEL_COMMON_PACKAGE_ARCH}"
9PACKAGE_ARCH_pn-linux-yocto-dev = "${INTEL_COMMON_PACKAGE_ARCH}"
10PACKAGE_ARCH_pn-intel-microcode = "${INTEL_COMMON_PACKAGE_ARCH}"
11PACKAGE_ARCH_pn-backport-iwlwifi = "${INTEL_COMMON_PACKAGE_ARCH}"
12PACKAGE_ARCH_pn-ixgbe = "${INTEL_COMMON_PACKAGE_ARCH}"
13PACKAGE_ARCH_pn-ixgbevf = "${INTEL_COMMON_PACKAGE_ARCH}"
14PACKAGE_EXTRA_ARCHS_append += "${INTEL_COMMON_PACKAGE_ARCH}"
15MACHINEOVERRIDES =. "${INTEL_COMMON_PACKAGE_ARCH}:"
diff --git a/conf/machine/include/intel-core2-32-common.inc b/conf/machine/include/intel-core2-32-common.inc
new file mode 100644
index 0000000..8c46949
--- /dev/null
+++ b/conf/machine/include/intel-core2-32-common.inc
@@ -0,0 +1,7 @@
1#
2# Common configuration for all MACHINEs of the intel-core2 type
3#
4
5DEFAULTTUNE ?= "core2-32"
6require conf/machine/include/tune-core2.inc
7require conf/machine/include/x86-base.inc
diff --git a/conf/machine/include/intel-corei7-64-common.inc b/conf/machine/include/intel-corei7-64-common.inc
new file mode 100644
index 0000000..0028256
--- /dev/null
+++ b/conf/machine/include/intel-corei7-64-common.inc
@@ -0,0 +1,7 @@
1#
2# Common configuration for all MACHINES of the intel-corei7-64 type
3#
4
5DEFAULTTUNE ?= "corei7-64"
6require conf/machine/include/tune-corei7.inc
7require conf/machine/include/x86-base.inc
diff --git a/conf/machine/include/intel-quark-common.inc b/conf/machine/include/intel-quark-common.inc
new file mode 100644
index 0000000..f7cfe14
--- /dev/null
+++ b/conf/machine/include/intel-quark-common.inc
@@ -0,0 +1,12 @@
1#
2# Common configuration for all MACHINES of the intel-quark type
3#
4
5DEFAULTTUNE ?= "i586-nlp-32"
6require conf/machine/include/tune-i586-nlp.inc
7require conf/machine/include/x86-base.inc
8
9# gnutls padlock code uses CMOV instruction in assembly which
10# is not valid for Quark.
11EXTRA_OECONF_append_pn-gnutls_intel-quark = " --disable-padlock"
12EXTRA_OECONF_append_pn-openssl_intel-quark = " no-asm"
diff --git a/conf/machine/include/meta-intel.inc b/conf/machine/include/meta-intel.inc
new file mode 100644
index 0000000..34a672c
--- /dev/null
+++ b/conf/machine/include/meta-intel.inc
@@ -0,0 +1,52 @@
1#
2# BSP variables and settings specific to the meta-intel layer.
3# You must include the meta-intel layer in your bblayers.conf
4# to use them.
5#
6
7#
8# XSERVER subcomponents, used to build the XSERVER variable
9#
10
11# Soft set linux-yocto as preferred kernel like x86-base.inc
12PREFERRED_PROVIDER_virtual/kernel ?= "linux-intel"
13PREFERRED_PROVIDER_virtual/kernel_poky-tiny ?= "linux-intel"
14PREFERRED_PROVIDER_virtual/kernel_linuxstdbase ?= "linux-yocto"
15PREFERRED_VERSION_linux-intel ?= "4.9%"
16
17# for Xserver older than 1.13.0
18OLD_XSERVER_X86_EXT = "xserver-xorg-extension-dri \
19 xserver-xorg-extension-dri2 \
20 xserver-xorg-extension-extmod \
21 xserver-xorg-extension-dbe \
22 "
23
24XSERVER_X86_MATROX_MGA = "xf86-video-mga \
25 "
26
27XSERVER_X86_ASPEED_AST = "xf86-video-ast \
28 "
29
30# include the user space intel microcode loading support in the generated images.
31MACHINE_ESSENTIAL_EXTRA_RDEPENDS_append = "${@bb.utils.contains('MACHINE_FEATURES', 'intel-ucode', ' intel-microcode', '', d)} thermald"
32
33# recommended extra packages common to all intel machines
34MACHINE_EXTRA_RRECOMMENDS_append = " kernel-modules linux-firmware"
35
36# for the early boot time kernel microcode loading support,
37# merge the microcode data in the final initrd image.
38INITRD_LIVE_prepend = "${@bb.utils.contains('MACHINE_FEATURES', 'intel-ucode', '${DEPLOY_DIR_IMAGE}/microcode.cpio ', '', d)}"
39
40DISK_SIGNATURE_UUID ??= "deadbeef-dead-beef-dead-beefdeadbeef"
41
42EFI_PROVIDER ?= "rmc-boot"
43
44# Add general MACHINEOVERRIDE for meta-intel
45MACHINEOVERRIDES =. "intel-x86-common:"
46
47# Definition of (more or less) suitable virtual machines.
48require conf/machine/include/qemuboot-intel.inc
49
50# Ensure that the extra tools needed by qemu are built when building images
51# and tweak machine definition to make the result more usable under qemu.
52require conf/machine/include/qemu-intel.inc
diff --git a/conf/machine/include/qemu-intel.inc b/conf/machine/include/qemu-intel.inc
new file mode 100644
index 0000000..8151040
--- /dev/null
+++ b/conf/machine/include/qemu-intel.inc
@@ -0,0 +1,19 @@
1# Similar to meta/conf/machine/include/qemu.inc but influences the
2# distro content (in particular the kernel) less than qemu.inc.
3
4# Ensure that qemu gets built when building images.
5EXTRA_IMAGEDEPENDS += "qemu-native qemu-helper-native"
6
7# Build ovmf firmware for uefi support in qemu.
8EXTRA_IMAGEDEPENDS += "ovmf"
9
10# runqemu uses virtio, so we have to enable the corresponding
11# kernel drivers.
12KERNEL_FEATURES_INTEL_COMMON += "cfg/virtio.scc"
13
14# Other useful extensions which are not enabled by default:
15# rng-tools to take advantage of qemu's virtio-rng-pci device.
16# MACHINE_EXTRA_RRECOMMENDS += "rng-tools"
17
18# Creates the necessary .qemuboot.conf file for each image.
19IMAGE_CLASSES += "qemuboot"
diff --git a/conf/machine/include/qemuboot-intel.inc b/conf/machine/include/qemuboot-intel.inc
new file mode 100644
index 0000000..cb52330
--- /dev/null
+++ b/conf/machine/include/qemuboot-intel.inc
@@ -0,0 +1,19 @@
1# For runqemu
2IMAGE_CLASSES += "qemuboot"
3QB_SYSTEM_NAME_intel-core2-32 = "qemu-system-i386"
4QB_CPU_intel-core2-32 = "-cpu coreduo"
5QB_CPU_KVM_intel-core2-32 = "-cpu kvm32"
6
7QB_SYSTEM_NAME_intel-corei7-64 = "qemu-system-x86_64"
8QB_CPU_intel-corei7-64 = "-cpu Nehalem"
9QB_CPU_KVM_intel-corei7-64 = "-cpu kvm64"
10
11QB_SYSTEM_NAME_intel-quark = "qemu-system-i386"
12QB_CPU_intel-quark = "-cpu coreduo"
13QB_CPU_KVM_intel-quark = "-cpu kvm32"
14
15QB_AUDIO_DRV = "alsa"
16QB_AUDIO_OPT = "-soundhw ac97,es1370"
17QB_KERNEL_CMDLINE_APPEND = "vga=0 uvesafb.mode_option=640x480-32 oprofile.timer=1 uvesafb.task_timeout=-1"
18# Add the 'virtio-rng-pci' device otherwise the guest may run out of entropy
19QB_OPT_APPEND = "-vga vmware -show-cursor -usb -usbdevice tablet -device virtio-rng-pci"
diff --git a/conf/machine/intel-core2-32.conf b/conf/machine/intel-core2-32.conf
new file mode 100644
index 0000000..abe6f90
--- /dev/null
+++ b/conf/machine/intel-core2-32.conf
@@ -0,0 +1,35 @@
1#@TYPE: Machine
2#@NAME: intel-core2-32
3
4#@DESCRIPTION: Machine configuration for 32 bit Intel Core 2 CPU (and later) with MMX, SSE, SSE2, SSE3, and SSSE3 instruction set support. Supports a moderately wide range of drivers that should boot and be usable on "typical" hardware.
5
6require conf/machine/include/meta-intel.inc
7require conf/machine/include/intel-core2-32-common.inc
8require conf/machine/include/intel-common-pkgarch.inc
9
10MACHINE_FEATURES += "pcbios efi"
11MACHINE_FEATURES += "va-impl-intel"
12MACHINE_FEATURES += "wifi 3g nfc"
13MACHINE_FEATURES += "intel-ucode"
14
15MACHINE_HWCODECS ?= "va-intel gstreamer1.0-vaapi"
16
17MACHINE_ESSENTIAL_EXTRA_RRECOMMENDS += "gma500-gfx-check"
18
19XSERVER ?= "${XSERVER_X86_BASE} \
20 ${XSERVER_X86_EXT} \
21 ${XSERVER_X86_FBDEV} \
22 ${XSERVER_X86_I915} \
23 ${XSERVER_X86_I965} \
24 ${XSERVER_X86_MODESETTING} \
25 ${XSERVER_X86_VESA} \
26 ${XSERVER_X86_ASPEED_AST} \
27 "
28
29SYSLINUX_OPTS = "serial 0 115200"
30SERIAL_CONSOLES = "115200;ttyS0 115200;ttyS1 115200;ttyPCH0"
31APPEND += "rootwait console=ttyS0,115200 console=ttyPCH0,115200 console=tty0"
32
33IMAGE_FSTYPES += "wic"
34WKS_FILE ?= "${@bb.utils.contains_any("EFI_PROVIDER", "systemd-boot rmc-boot", "systemd-bootdisk.wks", "mkefidisk.wks", d)}"
35do_image_wic[depends] += "gptfdisk-native:do_populate_sysroot mtools-native:do_populate_sysroot dosfstools-native:do_populate_sysroot"
diff --git a/conf/machine/intel-corei7-64.conf b/conf/machine/intel-corei7-64.conf
new file mode 100644
index 0000000..78a1f6e
--- /dev/null
+++ b/conf/machine/intel-corei7-64.conf
@@ -0,0 +1,46 @@
1#@TYPE: Machine
2#@NAME: intel-corei7-64
3
4#@DESCRIPTION: Machine configuration for 64 bit Intel Core i7 CPU (and later) with MMX, SSE, SSE2, SSE3, and SSSE3 instruction set support. Supports a moderately wide range of drivers that should boot and be usable on "typical" hardware.
5
6require conf/machine/include/meta-intel.inc
7require conf/machine/include/intel-corei7-64-common.inc
8require conf/machine/include/intel-common-pkgarch.inc
9
10MACHINE_FEATURES += "pcbios efi"
11MACHINE_FEATURES += "va-impl-intel"
12MACHINE_FEATURES += "wifi 3g nfc"
13MACHINE_FEATURES += "intel-ucode"
14
15MACHINE_HWCODECS ?= "va-intel gstreamer1.0-vaapi"
16
17MACHINE_EXTRA_RRECOMMENDS += "lms8"
18
19# Enable optional dpdk:
20COMPATIBLE_MACHINE_pn-dpdk = "intel-corei7-64"
21COMPATIBLE_MACHINE_pn-dpdk-dev-libibverbs = "intel-corei7-64"
22DPDK_TARGET_MACHINE ?= "atm"
23
24# Enable optional QAT items:
25COMPATIBLE_MACHINE_pn-openssl-qat = "intel-corei7-64"
26COMPATIBLE_MACHINE_pn-qat16 = "intel-corei7-64"
27COMPATIBLE_MACHINE_pn-zlib-qat = "intel-corei7-64"
28
29XSERVER ?= "${XSERVER_X86_BASE} \
30 ${XSERVER_X86_EXT} \
31 ${XSERVER_X86_FBDEV} \
32 ${XSERVER_X86_I915} \
33 ${XSERVER_X86_I965} \
34 ${XSERVER_X86_MATROX_MGA} \
35 ${XSERVER_X86_MODESETTING} \
36 ${XSERVER_X86_VESA} \
37 ${XSERVER_X86_ASPEED_AST} \
38 "
39
40SYSLINUX_OPTS = "serial 0 115200"
41SERIAL_CONSOLES = "115200;ttyS0 115200;ttyS1 115200;ttyS2"
42APPEND += "rootwait console=ttyS0,115200 console=tty0"
43
44IMAGE_FSTYPES += "wic"
45WKS_FILE ?= "${@bb.utils.contains_any("EFI_PROVIDER", "systemd-boot rmc-boot", "systemd-bootdisk.wks", "mkefidisk.wks", d)}"
46do_image_wic[depends] += "gptfdisk-native:do_populate_sysroot mtools-native:do_populate_sysroot dosfstools-native:do_populate_sysroot"
diff --git a/conf/machine/intel-quark.conf b/conf/machine/intel-quark.conf
new file mode 100644
index 0000000..17e8c52
--- /dev/null
+++ b/conf/machine/intel-quark.conf
@@ -0,0 +1,33 @@
1#@TYPE: Machine
2#@NAME: quark
3
4#@DESCRIPTION: Machine configuration for Quark systems
5
6require conf/machine/include/meta-intel.inc
7require conf/machine/include/intel-quark-common.inc
8require conf/machine/include/intel-common-pkgarch.inc
9
10#Avoid pulling in GRUB
11MACHINE_ESSENTIAL_EXTRA_RDEPENDS = ""
12
13MACHINE_FEATURES = "efi usb"
14MACHINE_FEATURES += "intel-ucode"
15
16SERIAL_CONSOLE = "115200 ttyS1"
17APPEND += "rootwait console=ttyS1,115200 console=tty0"
18
19# Bypass the default labels which also has "install" option in OE.
20#
21# We don't need to do this when constructing direct-boot image with
22# wic. But EFI installer in hddimg image doesn't work on quark now,
23# so we only provide a live-boot entry in boot menu for images in
24# hddimg format.
25
26LABELS_LIVE = "boot"
27
28# Ensure that the Lock prefix is omitted for the kernel"
29KERNEL_EXTRA_ARGS = "EXTRA_CFLAGS=-Wa,-momit-lock-prefix=yes"
30
31IMAGE_FSTYPES += "wic"
32WKS_FILE ?= "galileodisk-sd.wks"
33do_image_wic[depends] += "gptfdisk-native:do_populate_sysroot mtools-native:do_populate_sysroot dosfstools-native:do_populate_sysroot"
diff --git a/documentation/rmc/README b/documentation/rmc/README
new file mode 100644
index 0000000..eaa763e
--- /dev/null
+++ b/documentation/rmc/README
@@ -0,0 +1,382 @@
1Runtime Machine Configuration (RMC)
2--------------------------------------------------------------------------------
3Table of Contents
4
5Introduction
6Usage
7Enable RMC Feature
8Examples
9Troubleshooting
10When you (don't) need RMC feature
11
12
13Introduction:
14--------------------------------------------------------------------------------
15RMC Project - a light-weight project provide developers a mechanism to keep
16their software implementation board-type agnostic, yet still able to customize
17software behavior according to the type of a running board at runtime. Recipes
18and bbclasses are available for other components to reuse to construct their own
19RMC database.
20
21RMC Feature - An end-to-end solution based on RMC project to have a generic
22image capable to apply board-type-specific quirks and configurations for a board
23at runtime. It consists of a modified bootloader (systemd-boot), an updated EFI
24installer, recipes, bbclass and RMC project.
25
26RMC feature supports special customizations cannot be covered by conventional
27auto-detection features based on probing a hardware module because they happen
28at a board or a product level. For example:
29 - tty console for kernel log output in kernel cmdline
30 - default audio route configuration
31 - network configuration
32 - UI layout
33 - requirement to software driven by a mechanical design
34 - or static configuration bits for a physical bus that doesn't support to
35 identify devices or their presence at runtime
36
37An image with the feature has ability to configure supported boards with data
38associated only to a type of board to get full functionality of the target at
39runtime, yet still with a single image.
40
41Effect after installation is identical to what a conventional image specially
42customized for a type of board (depending on the way to deploy image).
43
44Main functions of RMC Feature:
45
46Show board-specific boot entries in boot menu and boot system with configuration
47(boot title, boot options, etc) in a selected boot entry.
48
49Support a "global" kernel boot command line fragment which is effective for all
50boot entries.
51
52Deploy file blobs and create directories specific to the type of running board.
53
54Beside from this document, you can also find several built-in examples in
55common/recipes-bsp/rmc/boards/. Refer to "Examples" section.
56
57You can also add new board types in your layer via a simple variable.
58
59
60
61Usage
62--------------------------------------------------------------------------------
63Developers are suggested to organize all board-specific files in their own layer
64following this example, so that RMC recipes can pick up them correctly in build.
65
66- my_top_dir/ Top directory of your board (Note 0)
67 |- rmc-db.bbappend bbappend file to rmc-db recipe at a lower level
68 |- rmc/
69 |- target_board_1/ subdirectory of a board.
70 | |- board1.fp fingerprint file must be provided (NOTE 1)
71 | |- BOOTENTRY.CONFIG optional config file for boot entries. (NOTE 2)
72 | |- INSTALLER.CONFIG optional config file for installer. (NOTE 3)
73 | |- POSTINSTALL.sh optional script hook for installer (NOTE 4)
74 | |- board_file_1 A file blob specific to the type of board
75 | |- board_file_2 An another file specific to the type of board
76 | |- ...more files
77 |- target_board_2/ subdirectory of another board.
78 |- board_2_v2.fp fingerprint file for board 2.
79 |- BOOTENTRY.CONFIG
80 |- INSTALLER.CONFIG
81 |- board_file_1
82 |- ...more files
83
84Note 0:
85Developers are expected to use variable RMC_BOARD_DATA_DIRS to specify data of
86boards packed into RMC database file generated in a build. The default value of
87the variable in meta-intel specifies a group of boards. They work as examples
88and necessary quirks for these boards to function properly. Developers can
89override, append to the default boards with data of their own boards in the
90database file, or even disable the generation of the database file.
91
92For example, in your local.conf file:
93
94This line adds your boards along with the default boards into RMC database file,
95assuming you have a directory named "rmc" which has a subdirectory for each
96board:
97
98RMC_BOARD_DATA_DIRS_append = " /path_of/rmc"
99
100This line directs RMC to pack data of your boards only, without data of the
101default boards in meta-intel:
102
103RMC_BOARD_DATA_DIRS = "/path_of/rmc"
104
105And this line disables database generation:
106
107RMC_BOARD_DATA_DIRS = ""
108
109Please also refer to the "Example 1" in this document.
110
111Subdirectory is not supported in a board's directory.
112
113Note 1:
114Fingerprint files must be provided and with ".fp" at the end of their names.
115Fingerprint can be obtained by running RMC tool on your board. An easy way is to
116live-boot USB stick flashed with any image enabled this feature on your board,
117then run this command:
118
119# rmc -F -o my_board.fp
120
121Or you will need to build RMC tool for the architecture of your board, 32 or
12264 bit x86, from RMC project.
123
124You can run RMC tool without any argument to get usage and examples.
125
126DO NOT NAME ANY FILE ENDING WITH '.fp' IF IT IS NOT A RMC FINGERPRINT FILE.
127
128If you do need a .fp file deployed onto target, please rename it in source and
129specify the real name of file on target in INSTALLER.CONFIG.
130
131Note 2:
132At runtime, RMC bootloader tries to fetch this file specific to the board at run
133time, then tries to fetch each boot entry file specified in BOOTENTRY.CONFIG and
134show them in boot menu options. The format of this file is very simple. Each
135line is the name of a boot entry file:
136
137boot.conf
138Install.conf
139myrmcboot.conf
140
141Name of a boot entry file is defined by developer so it can be anything. But the
142name of config file is what RMC bootloader looks up in RMC database, so it must
143be named BOOTENTRY.CONFIG.
144
145Bootloader skips loading entry conf files from disk once any entry is loaded
146from RMC database.
147
148Note 3:
149At runtime, RMC installer tries to fetch INSTALLER.CONFIG file specific to the
150board, then tries to fetch each file specified in this config file, and then
151deploy the file onto target with its permissions, UID, GID and other attributes
152also specified in this config file if file for the board can be retrieved from
153RMC database. The format of this file is (# is for comment line)
154
155# name:uid:gid:mode:path_on_target
156# to create a directory, add a “/†at the end of path_on_target:
157audio_policy:0:0:600:/etc/audio/
158audio_def_policy:0:0:600:/etc/audio/audio_policy
159
160The above example creates /etc/audio directory first, then fetch a file named
161“audio_def_policy†from RMC database for the board, then copy it to /etc/audio/
162with a new name “audio_policyâ€.
163
164If this config file is not provided, No data in RMC database is deployed to the
165target.
166
167Some steps defined by developers could not be supported on a filesystem.
168Installer simply ignores any errors in RMC deployment stage.
169
170The name of this config file is what installer looks up first, so it must be
171INSTALLER.CONFIG.
172
173Note 4:
174At the end of RMC deployment during installation, RMC installer queries a script
175file POSTINSTALL.sh from RMC database file, and execute it when query is
176successful on the running board. This hook provides developers almost ultimate
177flexibility to retouch what have been deployed on the target. There are some
178steps still can override results from this hook for boot entries and KBOOTPARAM.
179
180
181
182Enable RMC Feature
183--------------------------------------------------------------------------------
184To enable the RMC feature please add the following variables to your local.conf.
185
186DISTRO_FEATURES_append = " rmc"
187EFI_PROVIDER = "rmc-boot"
188
189The default EFI bootloader used with RMC is systemd-boot. To change the default
190bootloader please overwrite the RMC_BOOTLOADER variable in your local.conf
191
192Note:
193Image could be still bootable if you only have either of two lines, but RMC
194feature could not be fully functional, depending on the availability of the
195database file, installer and the rmc tool.
196
197Examples
198--------------------------------------------------------------------------------
199We checked in configuration data in common/recipes-bsp/rmc/boards/ for several
200boards, to help users to understand the RMC feature. These examples are also for
201validation. For any example you find not working as what this section depicts,
202it should be treated as a bug to be fixed.
203
204To test this feature with examples, enable it and build an image first, then
205boot the built image on supported boards. Examples are always built in when the
206feature is enabled, except for the EXAMPLE 1.
207
208EXAMPLE 1: Support a new board type:
209(1) enable the feature and do a build to get a live-boot image by adding these
210 lines in conf/local.conf:
211 DISTRO_FEATURES_append = " rmc"
212 EFI_PROVIDER = "rmc-boot"
213
214(2) flash the image to a USB stick and boot it on your board
215
216(3) in super user mode, run "rmc -F -o my_board.fp"
217
218(4) create directories in your host "mkdir -p my_top_dir/my_rmc/my_board"
219
220(5) copy my_board.fp from target to my_top_dir/my_rmc/my_board/ on host
221
222(6) create a file my_top_dir/my_rmc/my_board/KBOOTPARAM, put some fake
223 and harmless options in a single line, say, "loglevel=7"
224
225(7) create a file my_top_dir/rmc-db.bbappend, put this single line in it:
226 RMC_BOARD_DATA_DIRS_append := " ${THISDIR}/my_rmc"
227 From parent directory of my_top_dir, the tree should look like:
228 my_top_dir/
229 my_rmc/
230 my_board/
231 KBOOTPARAM
232 my_board.fp
233 rmc-db.bbappend
234 Later, you can add more board directories in my_rmc directory.
235
236(8) modify build configuration to add my_top_dir into build, for example, put
237 this line in a bblayers.conf:
238 BBFILES += "/full/path/of/my_top_dir/rmc-db.bbappend"
239
240(9) build image again then boot it on your board
241
242(10) Once you login to shell, new options should be effective, run this command
243 "cat /proc/cmdline" to verify the result.
244
245EXAMPLE 2: Board-specific boot entry
246MinnowBoard MAX and B3 version:
247common/recipes-bsp/rmc/boards/minnowmax
248common/recipes-bsp/rmc/boards/minnowmaxB3
249
250We have found two identities (type of board) exist for the "same" Minnow Max
251hardware, so they have to be treated as two different types of hardware. The two
252examples show you a boot entry specific to a type of board. Titles shown in boot
253menu have different names according to the type of running board, "Minnow Max
254boot" or "Minnow Max B3 boot". in /proc/cmdline, "console=ttyS0,115200n8" shall
255be there. Kernel prints logs from 6-pin FTDI serial port on Minnow Max(s). This
256console setting is in board-specific entries, so you won't see it effective if
257you select default "boot" entry to boot the device.
258
259EXAMPLE 3: Board-specific boot entry, global kernel cmdline and installer
260NUC Gen 6:
261common/recipes-bsp/rmc/boards/nucgen6
262This is a combo example with all supported configuration data for NUC Gen 6
263product. It shows two boot entries in bootloader menu when you boot image on NUC
264Gen 6 product, with "NUC Gen6" in entry titles. There shall no any "console=" in
265/proc/cmdline when you boot with either of two "NUC Gen6"entries. We designed it
266this way because there is no accessible tty port on NUC Gen 6 with housing. The
267post-install hook is also provided in this example.
268
269This example also includes a global kernel cmdline fragment KBOOTPARAM. Content
270of KBOOTPARAM shall be at the end of /proc/cmdline no matter which boot entry
271you selected to boot NUC Gen6.
272
273INSTALLER.CONFIG directs installer to create a directory and deploy a file in it
274when install the image on NUC Gen6.
275
276Choose "NUC Gen6 install" boot entry to boot shall start installation. Once
277the device reboots after installation, we can verify the configurations.
278
279The boot entry "NUC Gen6 boot" shall be shown in boot menu.
280
281The content of KBOOTPARAM shall be in /proc/cmdline too.
282
283A directory /etc/mylib/ is created and a file "mylib.conf" is there. The content
284of that file shall be what we put in mylib.conf in
285common/recipes-bsp/rmc/boards/nucgen6
286
287POSTINSTALL.sh shows how we get rid of an error message caused by no serial
288console available on NUC Gen 6, without creating another static board
289configuration.
290
291EXAMPLE 4: For validation only
292T100 (32bit):
293common/recipes-bsp/rmc/boards/T100-32bit
294This example is provided for validation on 32 bit X86 architecture. It doesn't
295provide any new function not mentioned in above examples.
296
297EXAMPLE 5: RMC for quark
298Galileo Gen 2
299common/recipes-bsp/rmc/boards/Galileo2
300This example doesn't show any feature not covered in the above examples. Note
301RMC only supports hddimg image format so far. Please refer to the section II.c
302in README in meta-intel for how to boot Galileo with images in hddimg format.
303Bootloader should show a board-specific boot option "Galileo Gen 2 boot" when
304the board boots off.
305
306Troubleshooting
307--------------------------------------------------------------------------------
308Issue: Cannot obtain RMC fingerprint for a board
309
310RMC tool requires UEFI BIOS and SMBIOS support in firmware. It doesn't support
311other type of firmware, e.g. legacy BIOS. It also requires EFI driver enabled
312in Linux kernel.
313
314Issue: Configuration for a board seems not effective at runtime.
315
316Check if board is booted from the storage where the image or installation lives
317when you have multiple boot options in BIOS. On some old hardwares it is not
318that obvious as you assume. A build image can support boot from both of legacy
319and UEFI mode, but RMC only works with UEFI boot so far.
320
321Make sure configuration files (BOOTENTRY.CONFIG, INSTALLER.CONFIG and,
322KBOOTPARAM ...) are properly named in the board directory.
323
324Make sure configuration files have correct contents.
325
326Some file attributes could not be supported by targeted file system. Installer
327cannot setup file blobs as you wish. It simply move to the next step if a step
328fails.
329
330Kernel command line can be customized globally with KBOOTPARAM or just in a boot
331entry for the type of board. They have different effective scopes.
332
333If no any board-specific configuration becomes effective on your board but it
334works on other boards of same product, you can run rmc tool to obtain
335fingerprint file on your board and compare it with fingerprint of a working
336board. It is possible they have different firmware versions and unluckily, some
337information for fingerprint changes between two versions. You can update BIOS
338on every board to the same BIOS version if it is feasible. Otherwise you have
339to treat them as two different type of boards. We could extend rmc design to
340allow multiple fingerprints in a board directory as a workaround.
341
342Issue: RMC reports error because it cannot find fingerprint when building image.
343
344Make sure you have a fingerprint file. Its name must be ended with '.fp'. You
345can put a fingerprint file in a board directory and provide data later.
346
347Issue: Any problems the above troubleshooting cannot help
348
349Please report it to us. Extra information like the type of your board or a dump
350file from dmidecode tool is helpful. We will investigate the problem and keep
351improving this feature.
352
353
354
355
356When you (don't) need RMC feature
357--------------------------------------------------------------------------------
358RMC feature is designed to as generic as possible, in order to support a large
359number of types of boards. And it shall be designed not to break things when it
360is disabled. These considerations help users to decide if they really need or
361enable it.
362
363If you are satisfied with a dedicated build target and image for each board in
364your development cycle (source, build, validation, release, etc), you don't need
365this feature.
366
367If you have a generic build for multiple type of boards and features supported
368by that build meet your needs to functionality on all of boards, you don't need
369to have this feature or you can disable it until you need to check in the first
370board's data, in order to apply a quirk or customization only for that board.
371
372If you want this feature but have concerns to see more and more boards' finger-
373prints and data in a generic project, you can have another layer to hold all of
374board-specific data to split them from a generic layer at source level. Another
375suggestion is always seeking chances not to clone or copy a common configuration
376to each board's directory.
377
378
379
380Thanks
381
382Jianxun Zhang <jianxun.zhang@linux.intel.com>
diff --git a/lib/oeqa/selftest/cases/secureboot.py b/lib/oeqa/selftest/cases/secureboot.py
new file mode 100644
index 0000000..4c059e2
--- /dev/null
+++ b/lib/oeqa/selftest/cases/secureboot.py
@@ -0,0 +1,176 @@
1#!/usr/bin/env python
2# ex:ts=4:sw=4:sts=4:et
3# -*- tab-width: 4; c-basic-offset: 4; indent-tabs-mode: nil -*-
4#
5# Copyright (c) 2017, Intel Corporation.
6# All rights reserved.
7#
8# This program is free software; you can redistribute it and/or modify
9# it under the terms of the GNU General Public License version 2 as
10# published by the Free Software Foundation.
11#
12# This program is distributed in the hope that it will be useful,
13# but WITHOUT ANY WARRANTY; without even the implied warranty of
14# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15# GNU General Public License for more details.
16#
17# You should have received a copy of the GNU General Public License along
18# with this program; if not, write to the Free Software Foundation, Inc.,
19# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
20#
21# AUTHORS
22# Mikko Ylinen <mikko.ylinen@linux.intel.com>
23#
24# Based on meta/lib/oeqa/selftest/* and meta-refkit/lib/oeqa/selftest/*
25
26"""Test cases for secure boot with QEMU running OVMF."""
27
28import os
29import unittest
30import re
31import glob
32from shutil import rmtree, copy
33
34from oeqa.core.decorator.depends import OETestDepends
35from oeqa.selftest.case import OESelftestTestCase
36from oeqa.utils.commands import runCmd, bitbake, get_bb_var, get_bb_vars, runqemu
37
38class SecureBootTests(OESelftestTestCase):
39 """Secure Boot test class."""
40
41 ovmf_keys_enrolled = False
42 ovmf_qemuparams = ''
43 ovmf_dir = ''
44 test_image_unsigned = 'secureboot-selftest-image-unsigned'
45 test_image_signed = 'secureboot-selftest-image-signed'
46 correct_key = 'refkit-db'
47 incorrect_key = 'incorrect'
48
49 @classmethod
50 def setUpLocal(self):
51
52 if not SecureBootTests.ovmf_keys_enrolled:
53 bitbake('ovmf ovmf-shell-image-enrollkeys', output_log=self.logger)
54
55 bb_vars = get_bb_vars(['TMPDIR', 'DEPLOY_DIR_IMAGE'])
56
57 SecureBootTests.ovmf_dir = os.path.join(bb_vars['TMPDIR'], 'oeselftest', 'secureboot', 'ovmf')
58 bb.utils.mkdirhier(SecureBootTests.ovmf_dir)
59
60 # Copy (all) OVMF in a temporary location
61 for src in glob.glob('%s/ovmf.*' % bb_vars['DEPLOY_DIR_IMAGE']):
62 copy(src, SecureBootTests.ovmf_dir)
63
64 SecureBootTests.ovmf_qemuparams = '-drive if=pflash,format=qcow2,file=%s/ovmf.secboot.qcow2' % SecureBootTests.ovmf_dir
65
66 cmd = ("runqemu "
67 "qemuparams='%s' "
68 "ovmf-shell-image-enrollkeys wic intel-corei7-64 "
69 "nographic slirp") % SecureBootTests.ovmf_qemuparams
70 print('Running "%s"' % cmd)
71 status = runCmd(cmd)
72
73 if not re.search('info: success', status.output, re.M):
74 self.fail('Failed to enroll keys. EFI shell log:\n%s' % status.output)
75 else:
76 # keys enrolled in ovmf.secboot.vars
77 SecureBootTests.ovmf_keys_enrolled = True
78
79 @classmethod
80 def tearDownLocal(self):
81 # Seems this is mandatory between the tests (a signed image is booted
82 # when running test_boot_unsigned_image after test_boot_signed_image).
83 # bitbake('-c clean %s' % test_image, output_log=self.logger)
84 #
85 # Whatever the problem was, it no longer seems to be necessary, so
86 # we can skip the time-consuming clean + full rebuild (5:04 min instead
87 # of 6:55min here).
88 pass
89
90 @classmethod
91 def tearDownClass(self):
92 bitbake('ovmf-shell-image-enrollkeys:do_cleanall', output_log=self.logger)
93 rmtree(self.ovmf_dir, ignore_errors=True)
94
95 def secureboot_with_image(self, boot_timeout=300, signing_key=None):
96 """Boot the image with UEFI SecureBoot enabled and see the result. """
97
98 config = ""
99
100 if signing_key:
101 test_image = self.test_image_signed
102 config += 'SECURE_BOOT_SIGNING_KEY = "${THISDIR}/files/%s.key"\n' % signing_key
103 config += 'SECURE_BOOT_SIGNING_CERT = "${THISDIR}/files/%s.crt"\n' % signing_key
104 else:
105 test_image = self.test_image_unsigned
106
107 self.write_config(config)
108 bitbake(test_image, output_log=self.logger)
109 self.remove_config(config)
110
111 # Some of the cases depend on the timeout to expire. Allow overrides
112 # so that we don't have to wait 1000s which is the default.
113 overrides = {
114 'TEST_QEMUBOOT_TIMEOUT': boot_timeout,
115 }
116
117 print('Booting %s' % test_image)
118
119 try:
120 with runqemu(test_image, ssh=False,
121 runqemuparams='nographic slirp',
122 qemuparams=self.ovmf_qemuparams,
123 overrides=overrides,
124 image_fstype='wic') as qemu:
125
126 cmd = 'uname -a'
127
128 status, output = qemu.run_serial(cmd)
129
130 self.assertTrue(status, 'Could not run \'uname -a\' (status=%s):\n%s' % (status, output))
131
132 # if we got this far without a correctly signed image, something went wrong
133 if signing_key != self.correct_key:
134 self.fail('The image not give a Security violation when expected. Boot log:\n%s' % output)
135
136
137 except Exception:
138
139 # Currently runqemu() fails if 'login:' prompt is not seen and it's
140 # not possible to login as 'root'. Those conditions aren't met when
141 # booting to EFI shell (See [YOCTO #11438]). We catch the failure
142 # and parse the boot log to determine the success. Note: the
143 # timeout triggers verbose bb.error() but that's normal with some
144 # of the test cases.
145
146 workdir = get_bb_var('WORKDIR', test_image)
147 bootlog = "%s/testimage/qemu_boot_log" % workdir
148
149 with open(bootlog, "r") as log:
150
151 # This isn't right but all we can do at this point. The right
152 # approach would run commands in the EFI shell to determine
153 # the BIOS rejects unsigned and/or images signed with keys in
154 # dbx key store but that needs changes in oeqa framework.
155
156 output = log.read()
157
158 # PASS if we see a security violation on unsigned or incorrectly signed images, otherwise fail
159 if signing_key == self.correct_key:
160 self.fail('Correctly signed image failed to boot. Boot log:\n%s' % output)
161 elif not re.search('Security Violation', output):
162 self.fail('The image not give a Security violation when expected. Boot log:\n%s' % output)
163
164 def test_boot_unsigned_image(self):
165 """ Boot unsigned image with secureboot enabled in UEFI."""
166 self.secureboot_with_image(boot_timeout=120, signing_key=None)
167
168 @OETestDepends(['secureboot.SecureBootTests.test_boot_unsigned_image'])
169 def test_boot_incorrectly_signed_image(self):
170 """ Boot (correctly) signed image with secureboot enabled in UEFI."""
171 self.secureboot_with_image(boot_timeout=120, signing_key=self.incorrect_key)
172
173 @OETestDepends(['secureboot.SecureBootTests.test_boot_incorrectly_signed_image'])
174 def test_boot_correctly_signed_image(self):
175 """ Boot (correctly) signed image with secureboot enabled in UEFI."""
176 self.secureboot_with_image(boot_timeout=150, signing_key=self.correct_key)
diff --git a/meta-dpdk/COPYING.MIT b/meta-dpdk/COPYING.MIT
new file mode 100644
index 0000000..fb950dc
--- /dev/null
+++ b/meta-dpdk/COPYING.MIT
@@ -0,0 +1,17 @@
1Permission is hereby granted, free of charge, to any person obtaining a copy
2of this software and associated documentation files (the "Software"), to deal
3in the Software without restriction, including without limitation the rights
4to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
5copies of the Software, and to permit persons to whom the Software is
6furnished to do so, subject to the following conditions:
7
8The above copyright notice and this permission notice shall be included in
9all copies or substantial portions of the Software.
10
11THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
12IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
13FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
14AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
15LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
16OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
17THE SOFTWARE.
diff --git a/meta-dpdk/LICENSE b/meta-dpdk/LICENSE
new file mode 100644
index 0000000..e57d3b9
--- /dev/null
+++ b/meta-dpdk/LICENSE
@@ -0,0 +1,5 @@
1All metadata files (including, but not limited to bb, bbappend,
2bbclass, inc and conf files) are MIT licensed unless otherwise stated.
3Source code included in tree for individual recipes is under the
4LICENSE stated in the associated recipe (.bb file) unless otherwise
5stated.
diff --git a/meta-dpdk/README b/meta-dpdk/README
new file mode 100644
index 0000000..6563ff9
--- /dev/null
+++ b/meta-dpdk/README
@@ -0,0 +1,85 @@
1meta-dpdk
2=========
3
4This README file contains information on building and booting
5meta-intel BSP layers. Please see the corresponding sections below
6for details.
7
8
9Yocto Project Compatible
10========================
11
12The BSPs contained in this layer are compatible with the Yocto Project
13as per the requirements listed here:
14
15 https://www.yoctoproject.org/webform/yocto-project-compatible-registration
16
17
18Dependencies
19============
20
21This layer depends on:
22
23 URI: git://git.openembedded.org/bitbake
24 branch: 1.34
25
26 URI: git://git.openembedded.org/openembedded-core
27 layers: meta
28 branch: rocko
29
30
31Guidelines for submitting patches
32====================================
33
34Please submit any patches against meta-dpdk to the meta-intel
35mailing list (meta-intel@yoctoproject.org). Also, if your patches are
36available via a public git repository, please also include a URL to
37the repo and branch containing your patches as that makes it easier
38for maintainers to grab and test your patches.
39
40There are patch submission scripts available that will, among other
41things, automatically include the repo URL and branch as mentioned.
42Please see the Yocto Project Development Manual sections entitled
43'Using Scripts to Push a Change Upstream and Request a Pull' and
44'Using Email to Submit a Patch' for details.
45
46Regardless of how you submit a patch or patchset, the patches should
47at minimum follow the suggestions outlined in the 'Submitting a Change
48to the Yocto Project' section in the Yocto Project Development Manual.
49Specifically, they should:
50
51 - Include a 'Signed-off-by:' line. A commit can't legally be pulled
52 in without this.
53
54 - Provide a single-line, short summary of the change. This short
55 description should be prefixed by the BSP or recipe name, as
56 appropriate, followed by a colon. Capitalize the first character
57 of the summary (following the colon).
58
59 - For the body of the commit message, provide detailed information
60 that describes what you changed, why you made the change, and the
61 approach you used.
62
63 - If the change addresses a specific bug or issue that is associated
64 with a bug-tracking ID, include a reference to that ID in your
65 detailed description in the following format: [YOCTO #<bug-id>].
66
67 - Pay attention to line length - please don't allow any particular
68 line in the commit message to stretch past 72 characters.
69
70 - For any non-trivial patch, provide information about how you
71 tested the patch, and for any non-trivial or non-obvious testing
72 setup, provide details of that setup.
73
74Doing a quick 'git log' in meta-intel will provide you with many
75examples of good example commits if you have questions about any
76aspect of the preferred format.
77
78The meta-intel maintainers will do their best to review and/or pull in
79a patch or patchset within 24 hours of the time it was posted. For
80larger and/or more involved patches and patchsets, the review process
81may take longer.
82
83Please see the meta-intel/MAINTAINERS file for the list of maintainers
84and their specific areas; it's also a good idea to cc: the specific
85maintainer, if applicable.
diff --git a/meta-dpdk/conf/include/maintainers.inc b/meta-dpdk/conf/include/maintainers.inc
new file mode 100644
index 0000000..b1499f6
--- /dev/null
+++ b/meta-dpdk/conf/include/maintainers.inc
@@ -0,0 +1,4 @@
1# This file contains a list of recipe maintainers for meta-intel
2
3RECIPE_MAINTAINER_pn-dpdk = "TBD DPDK Flex Team"
4RECIPE_MAINTAINER_pn-dpdk-dev-libibverbs = "TBD DPDK Flex Team"
diff --git a/meta-dpdk/conf/layer.conf b/meta-dpdk/conf/layer.conf
new file mode 100644
index 0000000..61331ed
--- /dev/null
+++ b/meta-dpdk/conf/layer.conf
@@ -0,0 +1,19 @@
1# We have a conf and classes directory, add to BBPATH
2BBPATH .= ":${LAYERDIR}"
3
4# We have recipes-* directories, add to BBFILES
5BBFILES += "${LAYERDIR}/recipes-*/*/*.bb \
6 ${LAYERDIR}/recipes-*/*/*.bbappend"
7
8BBFILE_COLLECTIONS += "dpdk"
9BBFILE_PATTERN_dpdk := "^${LAYERDIR}/"
10BBFILE_PRIORITY_dpdk = "5"
11
12LAYERDEPENDS_dpdk = "core"
13
14# This should only be incremented on significant changes that will
15# cause compatibility issues with other layers
16LAYERVERSION_dpdk = "1"
17LAYERSERIES_COMPAT_dpdk = "rocko"
18
19require ${LAYERDIR}/conf/include/maintainers.inc
diff --git a/meta-dpdk/recipes-extended/dpdk-dev-libibverbs/dpdk-dev-libibverbs_1.2.1-3.4-2.0.0.0.bb b/meta-dpdk/recipes-extended/dpdk-dev-libibverbs/dpdk-dev-libibverbs_1.2.1-3.4-2.0.0.0.bb
new file mode 100644
index 0000000..e40c63b
--- /dev/null
+++ b/meta-dpdk/recipes-extended/dpdk-dev-libibverbs/dpdk-dev-libibverbs_1.2.1-3.4-2.0.0.0.bb
@@ -0,0 +1,27 @@
1DESCRIPTION = "libibverbs library to support Mellanox config"
2HOMEPAGE = "https://github.com/Mellanox/dpdk-dev-libibverbs"
3LICENSE = "GPLv2"
4LIC_FILES_CHKSUM = "file://COPYING;md5=7c557f27dd795ba77cc419dddc656b51"
5
6SRC_URI = "https://github.com/Mellanox/dpdk-dev-libibverbs/archive/libibverbs-${PV}.tar.gz;name=${PN} \
7 file://init_c.patch \
8 file://0001-Fix-build-with-clang.patch \
9 file://0002-typecast-enum-to-int-before-comparison.patch \
10 file://0003-initialize-use_config_mr.patch \
11 file://0004-Fix-clang-warnings.patch \
12 "
13
14SRC_URI[dpdk-dev-libibverbs.md5sum] = "65234ee278eb437a7069326f37cd4d86"
15SRC_URI[dpdk-dev-libibverbs.sha256sum] = "a6471515556cb8d10ad471bb7efb8cf760b248a28aceb57d4534d50d572f56cd"
16
17# A machine needs to enable this using:
18# COMPATIBLE_MACHINE_pn-dpdk-dev-libibverbs = "<machine name>"
19
20COMPATIBLE_MACHINE = "null"
21COMPATIBLE_HOST_libc-musl_class-target = "null"
22
23S = "${WORKDIR}/${PN}-libibverbs-${PV}"
24COMPATIBLE_HOST = '(i.86|x86_64).*-linux'
25DEPENDS = "libnl"
26
27inherit pkgconfig autotools
diff --git a/meta-dpdk/recipes-extended/dpdk-dev-libibverbs/files/0001-Fix-build-with-clang.patch b/meta-dpdk/recipes-extended/dpdk-dev-libibverbs/files/0001-Fix-build-with-clang.patch
new file mode 100644
index 0000000..93d8aba
--- /dev/null
+++ b/meta-dpdk/recipes-extended/dpdk-dev-libibverbs/files/0001-Fix-build-with-clang.patch
@@ -0,0 +1,32 @@
1From b705caef6c717adc80585843b7fcc68700ced4b6 Mon Sep 17 00:00:00 2001
2From: Khem Raj <raj.khem@gmail.com>
3Date: Sat, 12 Aug 2017 09:25:24 -0700
4Subject: [PATCH 1/4] Fix build with clang
5
6Fix
7error: logical not is only applied to the left hand side of this bitwise operator [-Werror,-Wlogical-not-parentheses]
8 if ((!port_attr->comp_mask & IBV_EXP_QUERY_PORT_ATTR_MASK1) ||
9
10Signed-off-by: Khem Raj <raj.khem@gmail.com>
11---
12Upstream-Status: Pending
13
14 include/infiniband/verbs_exp.h | 2 +-
15 1 file changed, 1 insertion(+), 1 deletion(-)
16
17diff --git a/include/infiniband/verbs_exp.h b/include/infiniband/verbs_exp.h
18index ae94deb..42ed83d 100644
19--- a/include/infiniband/verbs_exp.h
20+++ b/include/infiniband/verbs_exp.h
21@@ -2955,7 +2955,7 @@ static inline int ibv_exp_query_port(struct ibv_context *context,
22 &port_attr->port_attr);
23
24 /* Check that only valid flags were given */
25- if ((!port_attr->comp_mask & IBV_EXP_QUERY_PORT_ATTR_MASK1) ||
26+ if (!(port_attr->comp_mask & IBV_EXP_QUERY_PORT_ATTR_MASK1) ||
27 (port_attr->comp_mask & ~IBV_EXP_QUERY_PORT_ATTR_MASKS) ||
28 (port_attr->mask1 & ~IBV_EXP_QUERY_PORT_MASK)) {
29 errno = EINVAL;
30--
312.14.1
32
diff --git a/meta-dpdk/recipes-extended/dpdk-dev-libibverbs/files/0002-typecast-enum-to-int-before-comparison.patch b/meta-dpdk/recipes-extended/dpdk-dev-libibverbs/files/0002-typecast-enum-to-int-before-comparison.patch
new file mode 100644
index 0000000..00516eb
--- /dev/null
+++ b/meta-dpdk/recipes-extended/dpdk-dev-libibverbs/files/0002-typecast-enum-to-int-before-comparison.patch
@@ -0,0 +1,115 @@
1From 7edab012f2d28de7e6d3657ec698e1090d0112de Mon Sep 17 00:00:00 2001
2From: Khem Raj <raj.khem@gmail.com>
3Date: Sat, 12 Aug 2017 09:25:49 -0700
4Subject: [PATCH 2/4] typecast enum to int before comparison
5
6Fix
7error: comparison of unsigned enum expression < 0 is always false [-Werror,-Wtautological-compare]
8
9Signed-off-by: Khem Raj <raj.khem@gmail.com>
10---
11Upstream-Status: Pending
12
13 examples/cc_pingpong.c | 2 +-
14 examples/rc_pingpong.c | 2 +-
15 examples/srq_pingpong.c | 2 +-
16 examples/task_pingpong.c | 2 +-
17 examples/uc_pingpong.c | 2 +-
18 examples/umr_rc.c | 2 +-
19 examples/xsrq_pingpong.c | 2 +-
20 7 files changed, 7 insertions(+), 7 deletions(-)
21
22diff --git a/examples/cc_pingpong.c b/examples/cc_pingpong.c
23index 7b3e397..567c503 100644
24--- a/examples/cc_pingpong.c
25+++ b/examples/cc_pingpong.c
26@@ -1408,7 +1408,7 @@ int main(int argc, char *argv[])
27
28 case 'm':
29 mtu = pp_mtu_to_enum(strtol(optarg, NULL, 0));
30- if (mtu < 0) {
31+ if ((int)mtu < 0) {
32 usage(argv[0]);
33 return 1;
34 }
35diff --git a/examples/rc_pingpong.c b/examples/rc_pingpong.c
36index 786577e..e661368 100644
37--- a/examples/rc_pingpong.c
38+++ b/examples/rc_pingpong.c
39@@ -759,7 +759,7 @@ int main(int argc, char *argv[])
40
41 case 'm':
42 mtu = pp_mtu_to_enum(strtol(optarg, NULL, 0));
43- if (mtu < 0) {
44+ if ((int)mtu < 0) {
45 usage(argv[0]);
46 return 1;
47 }
48diff --git a/examples/srq_pingpong.c b/examples/srq_pingpong.c
49index 9762866..f85a7cd 100644
50--- a/examples/srq_pingpong.c
51+++ b/examples/srq_pingpong.c
52@@ -697,7 +697,7 @@ int main(int argc, char *argv[])
53
54 case 'm':
55 mtu = pp_mtu_to_enum(strtol(optarg, NULL, 0));
56- if (mtu < 0) {
57+ if ((int)mtu < 0) {
58 usage(argv[0]);
59 return 1;
60 }
61diff --git a/examples/task_pingpong.c b/examples/task_pingpong.c
62index 748f8bb..d03a8b2 100644
63--- a/examples/task_pingpong.c
64+++ b/examples/task_pingpong.c
65@@ -1005,7 +1005,7 @@ int main(int argc, char *argv[])
66
67 case 'm':
68 mtu = pp_mtu_to_enum(strtol(optarg, NULL, 0));
69- if (mtu < 0) {
70+ if ((int)mtu < 0) {
71 usage(argv[0]);
72 return 1;
73 }
74diff --git a/examples/uc_pingpong.c b/examples/uc_pingpong.c
75index 879bd77..a38a054 100644
76--- a/examples/uc_pingpong.c
77+++ b/examples/uc_pingpong.c
78@@ -606,7 +606,7 @@ int main(int argc, char *argv[])
79
80 case 'm':
81 mtu = pp_mtu_to_enum(strtol(optarg, NULL, 0));
82- if (mtu < 0) {
83+ if ((int)mtu < 0) {
84 usage(argv[0]);
85 return 1;
86 }
87diff --git a/examples/umr_rc.c b/examples/umr_rc.c
88index ab76d3c..0ec636a 100644
89--- a/examples/umr_rc.c
90+++ b/examples/umr_rc.c
91@@ -950,7 +950,7 @@ int main(int argc, char *argv[])
92
93 case 'm':
94 mtu = pp_mtu_to_enum(strtol(optarg, NULL, 0));
95- if (mtu < 0) {
96+ if ((int)mtu < 0) {
97 usage(argv[0]);
98 return 1;
99 }
100diff --git a/examples/xsrq_pingpong.c b/examples/xsrq_pingpong.c
101index c4ae51d..cebae5d 100644
102--- a/examples/xsrq_pingpong.c
103+++ b/examples/xsrq_pingpong.c
104@@ -910,7 +910,7 @@ int main(int argc, char *argv[])
105 break;
106 case 'm':
107 ctx.mtu = pp_mtu_to_enum(strtol(optarg, NULL, 0));
108- if (ctx.mtu < 0) {
109+ if ((int)ctx.mtu < 0) {
110 usage(argv[0]);
111 return 1;
112 }
113--
1142.14.1
115
diff --git a/meta-dpdk/recipes-extended/dpdk-dev-libibverbs/files/0003-initialize-use_config_mr.patch b/meta-dpdk/recipes-extended/dpdk-dev-libibverbs/files/0003-initialize-use_config_mr.patch
new file mode 100644
index 0000000..da4ef15
--- /dev/null
+++ b/meta-dpdk/recipes-extended/dpdk-dev-libibverbs/files/0003-initialize-use_config_mr.patch
@@ -0,0 +1,31 @@
1From 936da7fcab06ff3bc7c1c1e1ab108a36797da039 Mon Sep 17 00:00:00 2001
2From: Khem Raj <raj.khem@gmail.com>
3Date: Sat, 12 Aug 2017 09:28:00 -0700
4Subject: [PATCH 3/4] initialize use_config_mr
5
6Fixes
7error: variable 'use_contig_mr' is uninitialized when used here [-Werror,-Wuninitialized]
8
9Signed-off-by: Khem Raj <raj.khem@gmail.com>
10---
11Upstream-Status: Pending
12
13 examples/dcini.c | 2 +-
14 1 file changed, 1 insertion(+), 1 deletion(-)
15
16diff --git a/examples/dcini.c b/examples/dcini.c
17index 001e905..08d75ec 100644
18--- a/examples/dcini.c
19+++ b/examples/dcini.c
20@@ -269,7 +269,7 @@ int main(int argc, char *argv[])
21 int size = 4096;
22 int iters = 1000;
23 int use_event = 0;
24- int use_contig_mr;
25+ int use_contig_mr = 0;
26 int err;
27 struct ibv_ah_attr ah_attr;
28 struct dc_ctx ctx = {
29--
302.14.1
31
diff --git a/meta-dpdk/recipes-extended/dpdk-dev-libibverbs/files/0004-Fix-clang-warnings.patch b/meta-dpdk/recipes-extended/dpdk-dev-libibverbs/files/0004-Fix-clang-warnings.patch
new file mode 100644
index 0000000..26f09e5
--- /dev/null
+++ b/meta-dpdk/recipes-extended/dpdk-dev-libibverbs/files/0004-Fix-clang-warnings.patch
@@ -0,0 +1,56 @@
1From 08944074f9d9525a57e88a4990dd833d0999b8df Mon Sep 17 00:00:00 2001
2From: Khem Raj <raj.khem@gmail.com>
3Date: Sat, 12 Aug 2017 09:36:55 -0700
4Subject: [PATCH 4/4] Fix clang warnings
5
6../../../../../../../workspace/sources/dpdk-dev-libibverbs/examples/intf.c:1221:11: error: comparison of array 'ctx->dev_name' not equal to a null pointer is always true [-Werror,-Wtautological-pointer-compare]
7 if (ctx->dev_name != NULL) {
8 ~~~~~^~~~~~~~ ~~~~
9../../../../../../../workspace/sources/dpdk-dev-libibverbs/examples/intf.c:1893:13: error: comparison of unsigned expression < 0 is always false [-Werror,-Wtautological-compare]
10 if (size < 0 || size > MAX_MSG_SIZE)
11 ~~~~ ^ ~
12../../../../../../../workspace/sources/dpdk-dev-libibverbs/examples/intf.c:1901:12: error: comparison of unsigned enum expression < 0 is always false [-Werror,-Wtautological-compare]
13 if (mtu < 0)
14 ~~~ ^ ~
15
16Signed-off-by: Khem Raj <raj.khem@gmail.com>
17---
18Upstream-Status: Pending
19
20 examples/intf.c | 6 +++---
21 1 file changed, 3 insertions(+), 3 deletions(-)
22
23diff --git a/examples/intf.c b/examples/intf.c
24index 8d158ee..1f1af50 100644
25--- a/examples/intf.c
26+++ b/examples/intf.c
27@@ -1218,7 +1218,7 @@ int create_resources(struct intf_context *ctx)
28 return 1;
29 }
30
31- if (!ctx->dev_name) {
32+ if (!ctx->dev_name[0]) {
33 ctx->ib_dev = *dev_list;
34 if (!ctx->ib_dev) {
35 fprintf(stderr, "No IB devices found\n");
36@@ -1828,7 +1828,7 @@ int parse_input(struct intf_input *input, struct intf_input *default_input, int
37 char *ib_devname = NULL;
38 char *vrbs_intf = NULL;
39 char *cpus_str = NULL;
40- unsigned long long size;
41+ long long size;
42
43 memcpy(input, default_input, sizeof(*input));
44
45@@ -1898,7 +1898,7 @@ int parse_input(struct intf_input *input, struct intf_input *default_input, int
46
47 case 'm':
48 mtu = mtu_to_enum(strtol(optarg, NULL, 0));
49- if (mtu < 0)
50+ if ((int)mtu < 0)
51 goto print_usage;
52 input->ib_data.mtu = mtu;
53 break;
54--
552.14.1
56
diff --git a/meta-dpdk/recipes-extended/dpdk-dev-libibverbs/files/init_c.patch b/meta-dpdk/recipes-extended/dpdk-dev-libibverbs/files/init_c.patch
new file mode 100644
index 0000000..a7708d7
--- /dev/null
+++ b/meta-dpdk/recipes-extended/dpdk-dev-libibverbs/files/init_c.patch
@@ -0,0 +1,23 @@
1dpdk-dev-libibverbs: suppress gcc7 warnings
2
3We know that format-truncation in init.c is okay.
4
5Upstream-Status: Pending
6
7Signed-off-by: Joe Slater <joe.slater@windriver.com>
8
9
10--- a/src/init.c
11+++ b/src/init.c
12@@ -31,6 +31,11 @@
13 * SOFTWARE.
14 */
15
16+/* For this file we know we can ignore this warning. */
17+#if __GNUC__ > 6
18+#pragma GCC diagnostic ignored "-Wformat-truncation"
19+#endif
20+
21 #if HAVE_CONFIG_H
22 # include <config.h>
23 #endif /* HAVE_CONFIG_H */
diff --git a/meta-dpdk/recipes-extended/dpdk/dpdk.inc b/meta-dpdk/recipes-extended/dpdk/dpdk.inc
new file mode 100644
index 0000000..c1d0149
--- /dev/null
+++ b/meta-dpdk/recipes-extended/dpdk/dpdk.inc
@@ -0,0 +1,146 @@
1DESCRIPTION = "Intel(r) Data Plane Development Kit"
2HOMEPAGE = "http://dpdk.org"
3LICENSE = "BSD & LGPLv2 & GPLv2"
4LIC_FILES_CHKSUM = "file://LICENSE.GPL;md5=751419260aa954499f7abaabaa882bbe"
5
6SRC_URI = "http://fast.dpdk.org/rel/${BP}.tar.gz;name=dpdk \
7 file://dpdk-16.04-add-RTE_KERNELDIR_OUT-to-split-kernel-bu.patch \
8 file://dpdk-16.07-add-sysroot-option-within-app-makefile.patch \
9 file://dpdk-16.04-Fix-for-misleading-indentation-error.patch \
10 file://dpdk-16.04-dpdk-fix-compilation-with-dynamic-libs.patch \
11 file://dpdk-16.07-dpdk-fix-for-parellel-make-issue.patch \
12 file://dpdk-17.02-dpdk-fix-installation-warning-and-issue.patch \
13 "
14
15# A machine needs to enable this using:
16# COMPATIBLE_MACHINE_pn-dpdk-dev-libibverbs = "<machine name>"
17
18COMPATIBLE_MACHINE = "null"
19COMPATIBLE_HOST_libc-musl_class-target = "null"
20
21
22# dpdk example apps dpdk_qat and vhost have dependancy on fuse and qat.
23# fuse is in meta-filesystems and qat is not yet upstreamed.
24# So adding mechanism to explicitly disable the use of fuse and qat.
25# To enable, uncomment the below line or include in .bbappend.
26# PACKAGECONFIG ?= " dpdk_qat vhost libvirt"
27
28PACKAGECONFIG[dpdk_qat] = ",,virtual/qat"
29PACKAGECONFIG[vhost] = ",,fuse"
30PACKAGECONFIG[libvirt] = ",,libvirt"
31
32export CONFIG_EXAMPLE_DPDK_QAT = "${@bb.utils.contains('PACKAGECONFIG', 'dpdk_qat', 'y', 'n', d)}"
33export CONFIG_EXAMPLE_VM_POWER_MANAGER = "${@bb.utils.contains('PACKAGECONFIG', 'libvirt', 'y', 'n', d)}"
34export CONFIG_VHOST_ENABLED = "${@bb.utils.contains('PACKAGECONFIG', 'vhost', 'y', 'n', d)}"
35
36RDEPENDS_${PN} += "python-subprocess dpdk-dev-libibverbs"
37DEPENDS = "virtual/kernel dpdk-dev-libibverbs"
38do_configure[depends] += "virtual/kernel:do_shared_workdir"
39
40inherit module
41
42export MODULE_DIR="/lib/modules/${KERNEL_VERSION}/kernel/drivers/net"
43export RTE_SDK = "${S}"
44export RTE_TARGET="${@bb.utils.contains("TUNE_FEATURES", "m64", "x86_64-native-linuxapp-gcc", "i686-native-linuxapp-gcc", d)}"
45
46export ICP_ROOT = "${PKG_CONFIG_SYSROOT_DIR}/usr/include"
47export ICP_LIB_ROOT= "${PKG_CONFIG_SYSROOT_DIR}/usr/lib"
48export RTE_KERNELDIR = "${STAGING_KERNEL_DIR}"
49export RTE_KERNELDIR_OUT = "${STAGING_KERNEL_BUILDDIR}"
50export INSTALL_PATH = "${prefix}/share"
51export RTE_OUTPUT = "${S}/${RTE_TARGET}"
52export ETHTOOL_LIB_PATH = "${S}/examples/ethtool/lib/${RTE_TARGET}/"
53export SYSROOTPATH = "--sysroot=${STAGING_DIR_HOST}"
54export DPDK_TARGET_MACH = "${@get_dpdk_target_mach(bb,d)}"
55export ICP_LAC_API_DIR = "${STAGING_DIR_TARGET}${includedir}/lac"
56
57# The list of intel Comms platforms and their target machine
58# process mapping. The supported target machine is listed under
59# dpdk/mk/machine
60def get_dpdk_target_mach(bb, d):
61 target_arch = d.getVar('DPDK_TARGET_MACHINE', True)
62 if target_arch:
63 target_arch
64 return "default"
65
66do_configure () {
67 #############################################################
68 ### default value for prefix is "usr", unsetting it, so it
69 ### will not be concatenated in ${RTE_TARGET}/Makefile
70 ### which will cause compilation failure
71 #############################################################
72 unset prefix
73
74 # Fix-up CONFIG_RTE_MACHINE based on target machine
75 sed -e "s#CONFIG_RTE_MACHINE=\"native\"#CONFIG_RTE_MACHINE=\"${DPDK_TARGET_MACH}\"#" -i ${S}/config/defconfig_x86_64-native-linuxapp-gcc
76 sed -e "s#CONFIG_RTE_MACHINE=\"native\"#CONFIG_RTE_MACHINE=\"${DPDK_TARGET_MACH}\"#" -i ${S}/config/defconfig_i686-native-linuxapp-gcc
77
78 # Fix-up vhost configs based on package config
79 sed -e "s#CONFIG_RTE_KNI_VHOST=n#CONFIG_RTE_KNI_VHOST=${CONFIG_VHOST_ENABLED}#" -i ${S}/config/common_linuxapp
80 sed -e "s#CONFIG_RTE_KNI_VHOST_VNET_HDR_EN=n#CONFIG_RTE_KNI_VHOST_VNET_HDR_EN=${CONFIG_VHOST_ENABLED}#" -i ${S}/config/common_linuxapp
81 sed -e "s#CONFIG_RTE_LIBRTE_VHOST=n#CONFIG_RTE_LIBRTE_VHOST=${CONFIG_VHOST_ENABLED}#" -i ${S}/config/common_linuxapp
82
83 make O=$RTE_TARGET T=$RTE_TARGET config
84}
85
86do_compile () {
87 unset LDFLAGS TARGET_LDFLAGS BUILD_LDFLAGS
88
89 cd ${S}/${RTE_TARGET}
90 oe_runmake EXTRA_LDFLAGS="-L${STAGING_LIBDIR} --hash-style=gnu" \
91 EXTRA_CFLAGS="--sysroot=${STAGING_DIR_HOST} -I${STAGING_INCDIR}" \
92 CROSS="${TARGET_PREFIX}" \
93 prefix="" LDFLAGS="" WERROR_FLAGS="-w" V=1
94
95 cd ${S}/examples/
96 oe_runmake EXTRA_LDFLAGS="-L${STAGING_LIBDIR} --hash-style=gnu -fuse-ld=bfd" \
97 EXTRA_CFLAGS="--sysroot=${STAGING_DIR_HOST} -I${STAGING_INCDIR}" \
98 CROSS="${TARGET_PREFIX}" O="${S}/examples/$@/"
99}
100
101do_install () {
102 oe_runmake O=${RTE_OUTPUT} T= install-runtime DESTDIR=${D}
103 oe_runmake O=${RTE_OUTPUT} T= install-kmod DESTDIR=${D} kerneldir=${MODULE_DIR}
104 oe_runmake O=${RTE_OUTPUT} T= install-sdk DESTDIR=${D}
105
106 # Install examples
107 for dirname in ${S}/examples/*
108 do
109 install -m 0755 -d ${D}/${INSTALL_PATH}/examples/`basename ${dirname}`
110
111 for appname in `find ${dirname} -regex ".*${EXAMPLES_BUILD_DIR}\/app\/[-0-9a-zA-Z0-9/_]*$"`
112 do
113 install -m 755 ${appname} ${D}/${INSTALL_PATH}/examples/`basename ${dirname}`/
114 done
115 done
116}
117
118PACKAGES += "${PN}-examples"
119
120FILES_${PN}-dbg += " \
121 ${INSTALL_PATH}/.debug \
122 ${INSTALL_PATH}/examples/*/.debug \
123 "
124
125FILES_${PN}-doc += "\
126 ${INSTALL_PATH}/doc \
127 "
128
129FILES_${PN}-dev += " \
130 ${INSTALL_PATH}/${RTE_TARGET}/.config \
131 ${includedir} \
132 ${includedir}/${ARCHDIR} \
133 ${includedir}/exec-env \
134 ${INSTALL_PATH}/buildtools/ \
135 ${INSTALL_PATH}/${RTE_TARGET}/include \
136 ${INSTALL_PATH}/${RTE_TARGET}/lib \
137 "
138
139FILES_${PN} += " ${INSTALL_PATH}/usertools/ \
140 ${prefix}/sbin/ \
141 ${prefix}/bin/ \
142 ${libdir}/ \
143 "
144FILES_${PN}-examples += " \
145 ${INSTALL_PATH}/examples/* \
146 "
diff --git a/meta-dpdk/recipes-extended/dpdk/dpdk/0001-examples-Fix-maybe-uninitialized-warning.patch b/meta-dpdk/recipes-extended/dpdk/dpdk/0001-examples-Fix-maybe-uninitialized-warning.patch
new file mode 100644
index 0000000..cc8041e
--- /dev/null
+++ b/meta-dpdk/recipes-extended/dpdk/dpdk/0001-examples-Fix-maybe-uninitialized-warning.patch
@@ -0,0 +1,44 @@
1From 3924f5df5aca5ba23abbe9a84173280ede8be2dd Mon Sep 17 00:00:00 2001
2From: Khem Raj <raj.khem@gmail.com>
3Date: Tue, 1 Aug 2017 20:18:46 -0700
4Subject: [PATCH] examples: Fix maybe-uninitialized warning
5
6Initialize arrays to 0, makes compiler happy about
7
8error: 'vals[0]' may be used uninitialized in this function [-Werror=maybe-uninitialized]
9
10Signed-off-by: Khem Raj <raj.khem@gmail.com>
11---
12 examples/qos_sched/args.c | 2 +-
13 examples/vhost/virtio_net.c | 2 +-
14 2 files changed, 2 insertions(+), 2 deletions(-)
15
16diff --git a/examples/qos_sched/args.c b/examples/qos_sched/args.c
17index 476a0ee..fd601c3 100644
18--- a/examples/qos_sched/args.c
19+++ b/examples/qos_sched/args.c
20@@ -241,7 +241,7 @@ static int
21 app_parse_flow_conf(const char *conf_str)
22 {
23 int ret;
24- uint32_t vals[5];
25+ uint32_t vals[5] = {0};
26 struct flow_conf *pconf;
27 uint64_t mask;
28
29diff --git a/examples/vhost/virtio_net.c b/examples/vhost/virtio_net.c
30index cc2c3d8..16b5392 100644
31--- a/examples/vhost/virtio_net.c
32+++ b/examples/vhost/virtio_net.c
33@@ -327,7 +327,7 @@ vs_dequeue_pkts(struct vhost_dev *dev, uint16_t queue_id,
34 {
35 struct vhost_queue *queue;
36 struct rte_vhost_vring *vr;
37- uint32_t desc_indexes[MAX_PKT_BURST];
38+ uint32_t desc_indexes[MAX_PKT_BURST] = {0};
39 uint32_t used_idx;
40 uint32_t i = 0;
41 uint16_t free_entries;
42--
432.13.3
44
diff --git a/meta-dpdk/recipes-extended/dpdk/dpdk/dpdk-16.04-Fix-for-misleading-indentation-error.patch b/meta-dpdk/recipes-extended/dpdk/dpdk/dpdk-16.04-Fix-for-misleading-indentation-error.patch
new file mode 100644
index 0000000..8786af7
--- /dev/null
+++ b/meta-dpdk/recipes-extended/dpdk/dpdk/dpdk-16.04-Fix-for-misleading-indentation-error.patch
@@ -0,0 +1,56 @@
1From 8cd0a16af531cca0af6b4f9b729c252b8bdbf8e2 Mon Sep 17 00:00:00 2001
2From: Rahul Kumar Gupta <rahul.kumarxx.gupta@intel.com>
3Date: Tue, 5 Jul 2016 00:05:25 +0800
4Subject: [PATCH] Fix for misleading indentation error
5
6fix the indentation of the code to match the block structure. This may cause
7build errors if you have -Wall -Werror in your project.
8
9Signed-off-by: Rahul Kumar Gupta <rahul.kumarxx.gupta@intel.com>
10---
11 lib/librte_eal/linuxapp/kni/ethtool/igb/e1000_phy.c | 8 ++++----
12 lib/librte_eal/linuxapp/kni/ethtool/ixgbe/ixgbe_82599.c | 2 +-
13 2 files changed, 5 insertions(+), 5 deletions(-)
14
15diff --git a/lib/librte_eal/linuxapp/kni/ethtool/igb/e1000_phy.c b/lib/librte_eal/linuxapp/kni/ethtool/igb/e1000_phy.c
16index df22470..ba28eba 100644
17--- a/lib/librte_eal/linuxapp/kni/ethtool/igb/e1000_phy.c
18+++ b/lib/librte_eal/linuxapp/kni/ethtool/igb/e1000_phy.c
19@@ -3302,8 +3302,8 @@ s32 e1000_read_phy_reg_mphy(struct e1000_hw *hw, u32 address, u32 *data)
20 /* Disable access to mPHY if it was originally disabled */
21 if (locked)
22 ready = e1000_is_mphy_ready(hw);
23- if (!ready)
24- return -E1000_ERR_PHY;
25+ if (!ready)
26+ return -E1000_ERR_PHY;
27 E1000_WRITE_REG(hw, E1000_MPHY_ADDR_CTRL,
28 E1000_MPHY_DIS_ACCESS);
29
30@@ -3367,8 +3367,8 @@ s32 e1000_write_phy_reg_mphy(struct e1000_hw *hw, u32 address, u32 data,
31 /* Disable access to mPHY if it was originally disabled */
32 if (locked)
33 ready = e1000_is_mphy_ready(hw);
34- if (!ready)
35- return -E1000_ERR_PHY;
36+ if (!ready)
37+ return -E1000_ERR_PHY;
38 E1000_WRITE_REG(hw, E1000_MPHY_ADDR_CTRL,
39 E1000_MPHY_DIS_ACCESS);
40
41diff --git a/lib/librte_eal/linuxapp/kni/ethtool/ixgbe/ixgbe_82599.c b/lib/librte_eal/linuxapp/kni/ethtool/ixgbe/ixgbe_82599.c
42index 017dfe1..7248a7e 100644
43--- a/lib/librte_eal/linuxapp/kni/ethtool/ixgbe/ixgbe_82599.c
44+++ b/lib/librte_eal/linuxapp/kni/ethtool/ixgbe/ixgbe_82599.c
45@@ -870,7 +870,7 @@ s32 ixgbe_setup_mac_link_82599(struct ixgbe_hw *hw,
46 if (speed & IXGBE_LINK_SPEED_10GB_FULL)
47 if (orig_autoc & IXGBE_AUTOC_KX4_SUPP)
48 autoc |= IXGBE_AUTOC_KX4_SUPP;
49- if ((orig_autoc & IXGBE_AUTOC_KR_SUPP) &&
50+ if ((orig_autoc & IXGBE_AUTOC_KR_SUPP) &&
51 (hw->phy.smart_speed_active == false))
52 autoc |= IXGBE_AUTOC_KR_SUPP;
53 if (speed & IXGBE_LINK_SPEED_1GB_FULL)
54--
551.9.1
56
diff --git a/meta-dpdk/recipes-extended/dpdk/dpdk/dpdk-16.04-add-RTE_KERNELDIR_OUT-to-split-kernel-bu.patch b/meta-dpdk/recipes-extended/dpdk/dpdk/dpdk-16.04-add-RTE_KERNELDIR_OUT-to-split-kernel-bu.patch
new file mode 100644
index 0000000..e446ce4
--- /dev/null
+++ b/meta-dpdk/recipes-extended/dpdk/dpdk/dpdk-16.04-add-RTE_KERNELDIR_OUT-to-split-kernel-bu.patch
@@ -0,0 +1,52 @@
1From 6c8d348190a8cf6c35111913cbf117ca98137e84 Mon Sep 17 00:00:00 2001
2From: Rahul Kumar Gupta <rahul.kumarxx.gupta@intel.com>
3Date: Fri, 18 Dec 2015 18:30:47 +0800
4Subject: [PATCH] dpdk v2.2.0: add RTE_KERNELDIR_OUT to split kernel build
5 artifact
6
7Introduce RTE_KERNELDIR_OUT to be the path to which kernel build
8artifacts are located. This is for matching the workflow change
9since Yocto Project v1.8 onwards whereby tmp/work-shared contains
10separate directories for kernel source and kernel artifacts.
11
12Upstream-Status: Inappropriate [configuration]
13
14Signed-off-by: Rahul Kumar Gupta <rahul.kumarxx.gupta@intel.com>
15---
16 mk/rte.module.mk | 6 +++---
17 1 file changed, 3 insertions(+), 3 deletions(-)
18
19diff --git a/mk/rte.module.mk b/mk/rte.module.mk
20index 53ed4fe..b7a014b 100644
21--- a/mk/rte.module.mk
22+++ b/mk/rte.module.mk
23@@ -77,7 +77,7 @@ build: _postbuild
24 # build module
25 $(MODULE).ko: $(SRCS_LINKS)
26 @if [ ! -f $(notdir Makefile) ]; then ln -nfs $(SRCDIR)/Makefile . ; fi
27- @$(MAKE) -C $(RTE_KERNELDIR) M=$(CURDIR) O=$(RTE_KERNELDIR) \
28+ @$(MAKE) -C $(RTE_KERNELDIR) M=$(CURDIR) O=$(RTE_KERNELDIR_OUT) \
29 CC="$(KERNELCC)" CROSS_COMPILE=$(CROSS) V=$(if $V,1,0)
30
31 # install module in $(RTE_OUTPUT)/kmod
32@@ -88,7 +88,7 @@ $(RTE_OUTPUT)/kmod/$(MODULE).ko: $(MODULE).ko
33
34 # install module
35 modules_install:
36- @$(MAKE) -C $(RTE_KERNELDIR) M=$(CURDIR) O=$(RTE_KERNELDIR) \
37+ @$(MAKE) -C $(RTE_KERNELDIR) M=$(CURDIR) O=$(RTE_KERNELDIR_OUT) \
38 modules_install
39
40 .PHONY: clean
41@@ -98,7 +98,7 @@ clean: _postclean
42 .PHONY: doclean
43 doclean:
44 @if [ ! -f $(notdir Makefile) ]; then ln -nfs $(SRCDIR)/Makefile . ; fi
45- $(Q)$(MAKE) -C $(RTE_KERNELDIR) M=$(CURDIR) O=$(RTE_KERNELDIR) clean
46+ $(Q)$(MAKE) -C $(RTE_KERNELDIR) M=$(CURDIR) O=$(RTE_KERNELDIR_OUT) clean
47 @$(foreach FILE,$(SRCS-y) $(SRCS-n) $(SRCS-),\
48 if [ -h $(notdir $(FILE)) ]; then rm -f $(notdir $(FILE)) ; fi ;)
49 @if [ -h $(notdir Makefile) ]; then rm -f $(notdir Makefile) ; fi
50--
511.9.1
52
diff --git a/meta-dpdk/recipes-extended/dpdk/dpdk/dpdk-16.04-dpdk-enable-ip_fragmentation-in-common_base-config.patch b/meta-dpdk/recipes-extended/dpdk/dpdk/dpdk-16.04-dpdk-enable-ip_fragmentation-in-common_base-config.patch
new file mode 100644
index 0000000..3719aa7
--- /dev/null
+++ b/meta-dpdk/recipes-extended/dpdk/dpdk/dpdk-16.04-dpdk-enable-ip_fragmentation-in-common_base-config.patch
@@ -0,0 +1,33 @@
1From f7be643cc62860a986c9e0aec990c90bfc58a941 Mon Sep 17 00:00:00 2001
2From: Rahul Kumar Gupta <rahul.kumarxx.gupta@intel.com>
3Date: Fri, 1 Apr 2016 17:31:55 +0800
4Subject: [PATCH] dpdk: enable ip_fragmentation in common_base config
5
6Upstream-Status: Inappropriate [Configuration]
7
8This configuration need to set for ip_fragmentation application.
9
10Signed-off-by: Rahul Kumar Gupta <rahul.kumarxx.gupta@intel.com>
11---
12 config/common_base | 5 +++++
13 1 file changed, 5 insertions(+)
14
15diff --git a/config/common_base b/config/common_base
16index abd6a64..90259f0 100644
17--- a/config/common_base
18+++ b/config/common_base
19@@ -442,6 +442,11 @@ CONFIG_RTE_LIBRTE_POWER_DEBUG=n
20 CONFIG_RTE_MAX_LCORE_FREQS=64
21
22 #
23+# Compile ip_fragmentation
24+#
25+CONFIG_RTE_IP_FRAG=y
26+
27+#
28 # Compile librte_net
29 #
30 CONFIG_RTE_LIBRTE_NET=y
31--
321.9.1
33
diff --git a/meta-dpdk/recipes-extended/dpdk/dpdk/dpdk-16.04-dpdk-fix-compilation-with-dynamic-libs.patch b/meta-dpdk/recipes-extended/dpdk/dpdk/dpdk-16.04-dpdk-fix-compilation-with-dynamic-libs.patch
new file mode 100644
index 0000000..4254d07
--- /dev/null
+++ b/meta-dpdk/recipes-extended/dpdk/dpdk/dpdk-16.04-dpdk-fix-compilation-with-dynamic-libs.patch
@@ -0,0 +1,30 @@
1From 8ce0e3249942a90f733bb2113e70e5a90ae67b00 Mon Sep 17 00:00:00 2001
2From: Rahul Kumar Gupta <rahul.kumarxx.gupta@intel.com>
3Date: Thu, 21 Jul 2016 05:53:52 +0800
4Subject: [PATCH 1/2] dpdk: fix compilation with dynamic libs
5
6Upstream-Status: Inappropriate [Configuration]
7
8Ensure that the correct cflags are being used.
9
10Signed-off-by: Rahul Kumar Gupta <rahul.kumarxx.gupta@intel.com>
11---
12 mk/rte.lib.mk | 2 +-
13 1 file changed, 1 insertion(+), 1 deletion(-)
14
15diff --git a/mk/rte.lib.mk b/mk/rte.lib.mk
16index 8f7e021..42610c9 100644
17--- a/mk/rte.lib.mk
18+++ b/mk/rte.lib.mk
19@@ -70,7 +70,7 @@ exe2cmd = $(strip $(call dotfile,$(patsubst %,%.cmd,$(1))))
20
21 ifeq ($(LINK_USING_CC),1)
22 # Override the definition of LD here, since we're linking with CC
23-LD := $(CC) $(CPU_CFLAGS)
24+LD := $(CC) $(CPU_CFLAGS) $(EXTRA_CFLAGS)
25 _CPU_LDFLAGS := $(call linkerprefix,$(CPU_LDFLAGS))
26 override EXTRA_LDFLAGS := $(call linkerprefix,$(EXTRA_LDFLAGS))
27 else
28--
291.9.1
30
diff --git a/meta-dpdk/recipes-extended/dpdk/dpdk/dpdk-16.07-add-sysroot-option-within-app-makefile.patch b/meta-dpdk/recipes-extended/dpdk/dpdk/dpdk-16.07-add-sysroot-option-within-app-makefile.patch
new file mode 100644
index 0000000..a4c4711
--- /dev/null
+++ b/meta-dpdk/recipes-extended/dpdk/dpdk/dpdk-16.07-add-sysroot-option-within-app-makefile.patch
@@ -0,0 +1,32 @@
1From a33a9e7559b59bc5fb0988af85062436ec4389a4 Mon Sep 17 00:00:00 2001
2From: Rahul Kumar Gupta <rahul.kumarxx.gupta@intel.com>
3Date: Fri, 19 Aug 2016 11:57:49 +0800
4Subject: [PATCH] dpdk: add --sysroot option within app makefile
5
6Upstream-Status: Inappropriate [configuration]
7
8rte.app.mk has been changed to add -Wl, to all items listed
9under EXTRA_LDFLAGS. It causes --sysroot=<path> to not setup
10correctly when we depends on gcc to setup for GNU ld.
11
12Signed-off-by: Rahul Kumar Gupta <rahul.kumarxx.gupta@intel.com>
13---
14 mk/rte.app.mk | 2 +-
15 1 file changed, 1 insertion(+), 1 deletion(-)
16
17diff --git a/mk/rte.app.mk b/mk/rte.app.mk
18index eb28e11..296c8c7 100644
19--- a/mk/rte.app.mk
20+++ b/mk/rte.app.mk
21@@ -195,7 +195,7 @@ exe2cmd = $(strip $(call dotfile,$(patsubst %,%.cmd,$(1))))
22 ifeq ($(LINK_USING_CC),1)
23 O_TO_EXE = $(CC) -o $@ $(CFLAGS) $(OBJS-y) $(call linkerprefix, \
24 $(LDLIBS) $(LDFLAGS) $(LDFLAGS_$(@)) $(EXTRA_LDFLAGS) \
25- $(MAPFLAGS))
26+ $(MAPFLAGS)) $(SYSROOTPATH)
27 else
28 O_TO_EXE = $(LD) -o $@ $(OBJS-y) \
29 $(LDLIBS) $(LDFLAGS) $(LDFLAGS_$(@)) $(EXTRA_LDFLAGS) \
30--
311.9.1
32
diff --git a/meta-dpdk/recipes-extended/dpdk/dpdk/dpdk-16.07-dpdk-fix-for-parellel-make-issue.patch b/meta-dpdk/recipes-extended/dpdk/dpdk/dpdk-16.07-dpdk-fix-for-parellel-make-issue.patch
new file mode 100644
index 0000000..fc965fa
--- /dev/null
+++ b/meta-dpdk/recipes-extended/dpdk/dpdk/dpdk-16.07-dpdk-fix-for-parellel-make-issue.patch
@@ -0,0 +1,42 @@
1From 4cdcb5ea4af9677677a007c4f9b286948123be87 Mon Sep 17 00:00:00 2001
2From: Rahul Kumar Gupta <rahul.kumarxx.gupta@intel.com>
3Date: Fri, 2 Sep 2016 15:48:52 +0800
4Subject: [PATCH] dpdk: fix for parellel make issue
5
6To make sure that the path of libraries should be correct and
7libraries will be build before, And available at the time of
8linking example apps.
9
10Signed-off-by: Rahul Kumar Gupta <rahul.kumarxx.gupta@intel.com>
11---
12 examples/Makefile | 1 +
13 examples/ethtool/ethtool-app/Makefile | 1 +
14 2 files changed, 2 insertions(+)
15
16diff --git a/examples/Makefile b/examples/Makefile
17index 18b41b9..c7c2beb 100644
18--- a/examples/Makefile
19+++ b/examples/Makefile
20@@ -43,6 +43,7 @@ DIRS-$(CONFIG_RTE_LIBRTE_DISTRIBUTOR) += distributor
21 DIRS-$(CONFIG_RTE_LIBRTE_PMD_BOND) += bond
22 DIRS-y += cmdline
23 DIRS-$(CONFIG_RTE_LIBRTE_DISTRIBUTOR) += distributor
24+DEPDIRS-y += examples/ethtool/lib
25 DIRS-y += ethtool
26 DIRS-y += exception_path
27 DIRS-y += helloworld
28diff --git a/examples/ethtool/ethtool-app/Makefile b/examples/ethtool/ethtool-app/Makefile
29index 09c66ad..ec068e6 100644
30--- a/examples/ethtool/ethtool-app/Makefile
31+++ b/examples/ethtool/ethtool-app/Makefile
32@@ -47,6 +47,7 @@ SRCS-y := main.c ethapp.c
33 CFLAGS += -O3 -D_GNU_SOURCE -pthread -I$(SRCDIR)/../lib
34 CFLAGS += $(WERROR_FLAGS)
35
36+LDLIBS += -L$(ETHTOOL_LIB_PATH)/
37 LDLIBS += -L$(subst ethtool-app,lib,$(RTE_OUTPUT))/lib
38 LDLIBS += -lrte_ethtool
39
40--
411.9.1
42
diff --git a/meta-dpdk/recipes-extended/dpdk/dpdk/dpdk-17.02-dpdk-fix-installation-warning-and-issue.patch b/meta-dpdk/recipes-extended/dpdk/dpdk/dpdk-17.02-dpdk-fix-installation-warning-and-issue.patch
new file mode 100644
index 0000000..f517167
--- /dev/null
+++ b/meta-dpdk/recipes-extended/dpdk/dpdk/dpdk-17.02-dpdk-fix-installation-warning-and-issue.patch
@@ -0,0 +1,81 @@
1From 363817bf84286fc167e0c3c255a7fd522bf87d8c Mon Sep 17 00:00:00 2001
2From: Shashwat Pandey <shashwatx.p@intel.com>
3Date: Mon, 20 Feb 2017 15:46:22 +0800
4Subject: [PATCH] dpdk: fix installation warning and issue
5
6Upstream-Status: Inappropriate [configuration]
7
8Ensure that all compiled libs should be installed to correct location.
9For cross compiling cp -r and extra tar flags used to avoid QA warning
10[host-user-contaminated].
11Added excluded files from bin and removing mk and app/dpdk-pmdinfogen files
12installation since it is not needed as a part of image.
13
14Signed-off-by: Shashwat Pandey <shashwatx.p@intel.com>
15---
16 mk/rte.sdkinstall.mk | 29 ++++++++++++++---------------
17 1 file changed, 14 insertions(+), 15 deletions(-)
18
19diff --git a/mk/rte.sdkinstall.mk b/mk/rte.sdkinstall.mk
20index dbac2a2..563954e 100644
21--- a/mk/rte.sdkinstall.mk
22+++ b/mk/rte.sdkinstall.mk
23@@ -115,16 +115,17 @@ endif
24
25 install-runtime:
26 $(Q)$(call rte_mkdir, $(DESTDIR)$(libdir))
27- $(Q)cp -a $O/lib/* $(DESTDIR)$(libdir)
28+ $(Q)cp -r $O/lib/* $(DESTDIR)$(libdir)
29 $(Q)$(call rte_mkdir, $(DESTDIR)$(bindir))
30- $(Q)tar -cf - -C $O --exclude 'app/*.map' \
31- --exclude app/dpdk-pmdinfogen \
32- --exclude 'app/cmdline*' --exclude app/test \
33- --exclude app/testacl --exclude app/testpipeline app | \
34- tar -xf - -C $(DESTDIR)$(bindir) --strip-components=1 \
35- --keep-newer-files
36+ $(Q)tar -cf - -C $O --exclude app/dpdk-pmdinfogen app | \
37+ tar -xf - -C $(DESTDIR)$(bindir) --no-same-owner --no-same-permissions \
38+ --strip-components=1 --keep-newer-files --warning=no-ignore-newer
39 $(Q)$(call rte_mkdir, $(DESTDIR)$(datadir))
40- $(Q)cp -a $(RTE_SDK)/usertools $(DESTDIR)$(datadir)
41+ $(Q)cp -r $(RTE_SDK)/usertools $(DESTDIR)$(datadir)
42+ $(Q)$(call rte_symlink, $(DESTDIR)$(datadir)/usertools/dpdk-setup.sh, \
43+ $(DESTDIR)$(datadir)/usertools/setup.sh)
44+ $(Q)$(call rte_symlink, $(DESTDIR)$(datadir)/usertools/dpdk-devbind.py, \
45+ $(DESTDIR)$(datadir)/usertools/dpdk_nic_bind.py)
46 $(Q)$(call rte_mkdir, $(DESTDIR)$(sbindir))
47 $(Q)$(call rte_symlink, $(DESTDIR)$(datadir)/usertools/dpdk-devbind.py, \
48 $(DESTDIR)$(sbindir)/dpdk-devbind)
49@@ -142,7 +143,7 @@ endif
50 install-kmod:
51 ifneq ($(wildcard $O/kmod/*),)
52 $(Q)$(call rte_mkdir, $(DESTDIR)$(kerneldir))
53- $(Q)cp -a $O/kmod/* $(DESTDIR)$(kerneldir)
54+ $(Q)cp -r $O/kmod/* $(DESTDIR)$(kerneldir)
55 endif
56
57 install-sdk:
58@@ -151,11 +152,9 @@ install-sdk:
59 tar -xf - -C $(DESTDIR)$(includedir) --strip-components=1 \
60 --keep-newer-files
61 $(Q)$(call rte_mkdir, $(DESTDIR)$(sdkdir))
62- $(Q)cp -a $(RTE_SDK)/mk $(DESTDIR)$(sdkdir)
63- $(Q)cp -a $(RTE_SDK)/buildtools $(DESTDIR)$(sdkdir)
64- $(Q)$(call rte_mkdir, $(DESTDIR)$(targetdir)/app)
65- $(Q)cp -a $O/.config $(DESTDIR)$(targetdir)
66- $(Q)cp -a $O/app/dpdk-pmdinfogen $(DESTDIR)$(targetdir)/app
67+ $(Q)cp -r $(RTE_SDK)/buildtools $(DESTDIR)$(sdkdir)
68+ $(Q)$(call rte_mkdir, $(DESTDIR)$(targetdir))
69+ $(Q)cp -r $O/.config $(DESTDIR)$(targetdir)
70 $(Q)$(call rte_symlink, $(DESTDIR)$(includedir), $(DESTDIR)$(targetdir)/include)
71 $(Q)$(call rte_symlink, $(DESTDIR)$(libdir), $(DESTDIR)$(targetdir)/lib)
72
73@@ -171,4 +170,4 @@ ifneq ($(wildcard $O/doc/*/*/*pdf),)
74 $(Q)cp -a $O/doc/*/*/*pdf $(DESTDIR)$(docdir)/guides
75 endif
76 $(Q)$(call rte_mkdir, $(DESTDIR)$(datadir))
77- $(Q)cp -a $(RTE_SDK)/examples $(DESTDIR)$(datadir)
78+ $(Q)cp -r $(RTE_SDK)/examples $(DESTDIR)$(datadir)
79--
801.9.1
81
diff --git a/meta-dpdk/recipes-extended/dpdk/dpdk_17.05.bb b/meta-dpdk/recipes-extended/dpdk/dpdk_17.05.bb
new file mode 100644
index 0000000..1a696ed
--- /dev/null
+++ b/meta-dpdk/recipes-extended/dpdk/dpdk_17.05.bb
@@ -0,0 +1,19 @@
1include dpdk.inc
2
3SRC_URI += "\
4 file://dpdk-16.04-dpdk-enable-ip_fragmentation-in-common_base-config.patch \
5 file://0001-examples-Fix-maybe-uninitialized-warning.patch \
6 "
7
8SRC_URI[dpdk.md5sum] = "39c4e1110dd1ef9dab33edbae820f939"
9SRC_URI[dpdk.sha256sum] = "763bfb7e1765efcc949e79d645dc9f1ebd16591431ba0db5ce22becd928dcd0a"
10
11export EXAMPLES_BUILD_DIR = "${RTE_TARGET}"
12export ARCHDIR = "generic"
13
14do_configure_prepend () {
15 sed -e "s#CONFIG_RTE_LIBRTE_POWER=y#CONFIG_RTE_LIBRTE_POWER=${CONFIG_EXAMPLE_VM_POWER_MANAGER}#" -i ${S}/config/common_linuxapp
16}
17
18COMPATIBLE_HOST_linux-gnux32 = "null"
19COMPATIBLE_HOST_libc-musl_class-target = "null"
diff --git a/meta-qat/COPYING.MIT b/meta-qat/COPYING.MIT
new file mode 100644
index 0000000..fb950dc
--- /dev/null
+++ b/meta-qat/COPYING.MIT
@@ -0,0 +1,17 @@
1Permission is hereby granted, free of charge, to any person obtaining a copy
2of this software and associated documentation files (the "Software"), to deal
3in the Software without restriction, including without limitation the rights
4to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
5copies of the Software, and to permit persons to whom the Software is
6furnished to do so, subject to the following conditions:
7
8The above copyright notice and this permission notice shall be included in
9all copies or substantial portions of the Software.
10
11THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
12IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
13FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
14AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
15LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
16OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
17THE SOFTWARE.
diff --git a/meta-qat/LICENSE b/meta-qat/LICENSE
new file mode 100644
index 0000000..e57d3b9
--- /dev/null
+++ b/meta-qat/LICENSE
@@ -0,0 +1,5 @@
1All metadata files (including, but not limited to bb, bbappend,
2bbclass, inc and conf files) are MIT licensed unless otherwise stated.
3Source code included in tree for individual recipes is under the
4LICENSE stated in the associated recipe (.bb file) unless otherwise
5stated.
diff --git a/meta-qat/README b/meta-qat/README
new file mode 100644
index 0000000..2c10346
--- /dev/null
+++ b/meta-qat/README
@@ -0,0 +1,85 @@
1meta-qat
2========
3
4This README file contains information on building and booting
5meta-intel BSP layers. Please see the corresponding sections below
6for details.
7
8
9Yocto Project Compatible
10========================
11
12The BSPs contained in this layer are compatible with the Yocto Project
13as per the requirements listed here:
14
15 https://www.yoctoproject.org/webform/yocto-project-compatible-registration
16
17
18Dependencies
19============
20
21This layer depends on:
22
23 URI: git://git.openembedded.org/bitbake
24 branch: 1.34
25
26 URI: git://git.openembedded.org/openembedded-core
27 layers: meta
28 branch: rocko
29
30
31Guidelines for submitting patches
32====================================
33
34Please submit any patches against meta-dpdk to the meta-intel
35mailing list (meta-intel@yoctoproject.org). Also, if your patches are
36available via a public git repository, please also include a URL to
37the repo and branch containing your patches as that makes it easier
38for maintainers to grab and test your patches.
39
40There are patch submission scripts available that will, among other
41things, automatically include the repo URL and branch as mentioned.
42Please see the Yocto Project Development Manual sections entitled
43'Using Scripts to Push a Change Upstream and Request a Pull' and
44'Using Email to Submit a Patch' for details.
45
46Regardless of how you submit a patch or patchset, the patches should
47at minimum follow the suggestions outlined in the 'Submitting a Change
48to the Yocto Project' section in the Yocto Project Development Manual.
49Specifically, they should:
50
51 - Include a 'Signed-off-by:' line. A commit can't legally be pulled
52 in without this.
53
54 - Provide a single-line, short summary of the change. This short
55 description should be prefixed by the BSP or recipe name, as
56 appropriate, followed by a colon. Capitalize the first character
57 of the summary (following the colon).
58
59 - For the body of the commit message, provide detailed information
60 that describes what you changed, why you made the change, and the
61 approach you used.
62
63 - If the change addresses a specific bug or issue that is associated
64 with a bug-tracking ID, include a reference to that ID in your
65 detailed description in the following format: [YOCTO #<bug-id>].
66
67 - Pay attention to line length - please don't allow any particular
68 line in the commit message to stretch past 72 characters.
69
70 - For any non-trivial patch, provide information about how you
71 tested the patch, and for any non-trivial or non-obvious testing
72 setup, provide details of that setup.
73
74Doing a quick 'git log' in meta-intel will provide you with many
75examples of good example commits if you have questions about any
76aspect of the preferred format.
77
78The meta-intel maintainers will do their best to review and/or pull in
79a patch or patchset within 24 hours of the time it was posted. For
80larger and/or more involved patches and patchsets, the review process
81may take longer.
82
83Please see the meta-intel/MAINTAINERS file for the list of maintainers
84and their specific areas; it's also a good idea to cc: the specific
85maintainer, if applicable.
diff --git a/meta-qat/conf/include/maintainers.inc b/meta-qat/conf/include/maintainers.inc
new file mode 100644
index 0000000..9f4c2e3
--- /dev/null
+++ b/meta-qat/conf/include/maintainers.inc
@@ -0,0 +1,5 @@
1# This file contains a list of recipe maintainers for meta-intel
2
3RECIPE_MAINTAINER_pn-openssl-qat = "TBD DPDK Flex Team"
4RECIPE_MAINTAINER_pn-qat16 = "TBD DPDK Flex Team"
5RECIPE_MAINTAINER_pn-zlib-qat = "TBD DPDK Flex Team"
diff --git a/meta-qat/conf/layer.conf b/meta-qat/conf/layer.conf
new file mode 100644
index 0000000..2e3aa84
--- /dev/null
+++ b/meta-qat/conf/layer.conf
@@ -0,0 +1,20 @@
1# We have a conf and classes directory, add to BBPATH
2BBPATH .= ":${LAYERDIR}"
3
4# We have recipes-* directories, add to BBFILES
5BBFILES += "${LAYERDIR}/recipes-*/*/*.bb \
6 ${LAYERDIR}/recipes-*/*/*.bbappend"
7
8BBFILE_COLLECTIONS += "intel-qat"
9BBFILE_PATTERN_intel-qat := "^${LAYERDIR}/"
10BBFILE_PRIORITY_intel-qat = "5"
11
12LAYERDEPENDS_intel-qat = "core intel"
13
14# This should only be incremented on significant changes that will
15# cause compatibility issues with other layers
16LAYERVERSION_intel-qat = "1"
17LAYERSERIES_COMPAT_intel-qat = "rocko"
18
19
20require ${LAYERDIR}/conf/include/maintainers.inc
diff --git a/meta-qat/recipes-extended/openssl-qat/openssl-qat.inc b/meta-qat/recipes-extended/openssl-qat/openssl-qat.inc
new file mode 100644
index 0000000..ff22825
--- /dev/null
+++ b/meta-qat/recipes-extended/openssl-qat/openssl-qat.inc
@@ -0,0 +1,125 @@
1SUMMARY = "libcrypto* (OpenSSL*) QAT_MEM Memory Management Module \
2for Intel Quick Assist Technology"
3DESCRIPTION = "This software adds an engine that accelerates some of \
4the libcrypto algorithms via the Intel QuickAssist Technology \
5implemented on Intel Communications Chipset 89xx Series based platforms."
6
7HOMEPAGE = "http://www.openssl.org/"
8SECTION = "libs/network"
9LICENSE = "openssl & GPLv2 & BSD"
10
11LIC_FILES_CHKSUM = "file://${WORKDIR}/git/LICENSE;md5=f9a8f968107345e0b75aa8c2ecaa7ec8 \
12 file://${COMMON_LICENSE_DIR}/GPL-2.0;md5=801f80980d171dd6425610833a22dbe6 \
13 file://${COMMON_LICENSE_DIR}/BSD;md5=3775480a712fc46a69647678acb234cb \
14 "
15
16SRC_URI = "https://01.org/sites/default/files/page/libcrypto_shim_${PV}_withdocumentation.zip;name=openssl_qat;subdir=openssl_qat-${PV} \
17 file://openssl_qat-environment-variables-to-have-precedence.patch \
18 file://openssl_qat-pass-oe_ldflags-to-linker.patch \
19 file://openssl_qat-remove-redundant-rpaths.patch \
20 file://openssl_qat-build-qat_mem-ko-against-yocto-kernel.patch \
21 file://openssl_qat-install-engines-in-libdir-ssl.patch \
22 "
23
24DEPENDS += " qat16 zlib"
25RDEPENDS_${PN} += " qat16 zlib zlib-qat"
26
27inherit pkgconfig module
28
29PACKAGES =+ "${PN}-misc"
30PARALLEL_MAKE = ""
31
32AR_append = " r"
33EXTRA_OEMAKE = "-e MAKEFLAGS="
34
35export ICP_ROOT = "${WORKDIR}/git"
36export ICP_BUILD_OUTPUT = "${STAGING_DIR_TARGET}"
37export OPENSSL_ROOT = "${ICP_ROOT}"
38export OPENSSL_PREFIX = "/usr/local"
39export AS = "${CC} -c"
40export OE_LDFLAGS="${LDFLAGS} -L${OPENSSL_PREFIX}{base_libdir}"
41export ICP_API_PATH = "${STAGING_DIR_TARGET}${includedir}/lac"
42export KERNEL_SOURCE_ROOT = "${STAGING_KERNEL_DIR}"
43export KERNEL_BUILDDIR = "${STAGING_KERNEL_BUILDDIR}"
44
45S = "${WORKDIR}/git"
46
47opensslqat_do_patch() {
48 cd ${WORKDIR}/openssl_qat-${PV}
49 cd libcrypto_shim_${PV}_*
50 tar -zxof libCrypto_Shim_${PV}.tar.gz
51 tar -zxof libcrypto-openssl-${OPENSSL_VERSION}-qat.L.${PV}.tar.gz
52 mv openssl-${OPENSSL_VERSION}-qat.patch ${WORKDIR}
53
54 cd ${S}
55 if [ ! -d ${S}/debian/patches ]; then
56 mkdir -p ${S}/debian/patches
57 cp -f ${WORKDIR}/openssl-${OPENSSL_VERSION}-qat.patch ${S}/debian/patches
58 echo "openssl-${OPENSSL_VERSION}-qat.patch -p1" > ${S}/debian/patches/series
59 fi
60 quilt pop -a || true
61 if [ -d ${S}/.pc-opensslqat ]; then
62 rm -rf ${S}/.pc
63 mv ${S}/.pc-opensslqat ${S}/.pc
64 QUILT_PATCHES=${S}/debian/patches quilt pop -a
65 rm -rf ${S}/.pc
66 fi
67 QUILT_PATCHES=${S}/debian/patches quilt push -a
68 mv ${S}/.pc ${S}/.pc-opensslqat
69}
70
71# We invoke base do_patch at end, to incorporate any local patch
72python do_patch() {
73 bb.build.exec_func('opensslqat_do_patch', d)
74 bb.build.exec_func('patch_do_patch', d)
75}
76
77do_configure () {
78 os=linux
79 target=linux-x86_64
80
81 ./Configure -no-ssl3 enable-hw-qat --prefix=$OPENSSL_PREFIX --openssldir="${OPENSSL_PREFIX}${base_libdir}/ssl" --libdir="${base_libdir}" $target
82}
83
84do_compile() {
85 oe_runmake
86}
87
88do_install() {
89 install -m 0755 -d ${D}${bindir} \
90 ${D}${OPENSSL_PREFIX}/include \
91 ${D}${sysconfdir}/openssl_conf
92
93 oe_runmake INSTALL_PREFIX="${D}" install
94
95 cp --dereference -R include/openssl ${D}${OPENSSL_PREFIX}/include
96
97 cp ${WORKDIR}/openssl_qat-${PV}/libcrypto_shim_${PV}_withdocumentation/qat/config/dh895xcc/multi_process_optimized/* ${D}${sysconfdir}/openssl_conf/
98}
99
100FILES_${PN}-misc += "\
101 ${OPENSSL_PREFIX}${base_libdir}/ssl/misc \
102 ${bindir}/c_rehash \
103 "
104
105FILES_${PN}-dbg += "\
106 ${OPENSSL_PREFIX}${base_libdir}/ssl/engines/.debug \
107 ${OPENSSL_PREFIX}${base_libdir}/engines/.debug \
108 ${OPENSSL_PREFIX}${base_libdir}/.debug \
109 ${OPENSSL_PREFIX}/bin/.debug \
110 "
111
112FILES_${PN}-dev = "${OPENSSL_PREFIX}/include"
113
114FILES_${PN}-staticdev += "${OPENSSL_PREFIX}${base_libdir}/*.a"
115
116FILES_${PN} =+ "\
117 ${bindir} \
118 ${sysconfdir}/openssl_conf \
119 ${OPENSSL_PREFIX}/bin \
120 ${OPENSSL_PREFIX}${base_libdir} \
121 ${OPENSSL_PREFIX}${base_libdir}/ssl \
122 ${OPENSSL_PREFIX}${base_libdir}/ssl/openssl.cnf \
123 "
124
125COMPATIBLE_MACHINE = "null"
diff --git a/meta-qat/recipes-extended/openssl-qat/openssl-qat/0001-Use_sched_yield_api.patch b/meta-qat/recipes-extended/openssl-qat/openssl-qat/0001-Use_sched_yield_api.patch
new file mode 100644
index 0000000..1b7921f
--- /dev/null
+++ b/meta-qat/recipes-extended/openssl-qat/openssl-qat/0001-Use_sched_yield_api.patch
@@ -0,0 +1,47 @@
1From f4c50648752ee1000f606585f4df9fa6bd9ff8e8 Mon Sep 17 00:00:00 2001
2From: Saul Wold <sgw@linux.intel.com>
3Date: Wed, 8 Feb 2017 17:36:48 -0800
4Subject: [PATCH] openssl-qat: Use sched_yield() instead of pthread_yield()
5
6sched_yield() is the correct POSIX API to use for thread switching
7This futher supports building with MUSL.
8
9Upstream-Status: Pending
10Signed-off-by: Saul Wold <sgw@linux.intel.com>
11---
12 engines/qat_engine/e_qat.c | 5 +++--
13 1 file changed, 3 insertions(+), 2 deletions(-)
14
15diff --git a/engines/qat_engine/e_qat.c b/engines/qat_engine/e_qat.c
16index 17d7935..af543bc 100644
17--- a/engines/qat_engine/e_qat.c
18+++ b/engines/qat_engine/e_qat.c
19@@ -90,6 +90,7 @@
20 #include <stdio.h>
21 #include <stdlib.h>
22 #include <string.h>
23+#include <sched.h>
24 #include <pthread.h>
25 #include <unistd.h>
26 #include <ctype.h>
27@@ -545,7 +546,7 @@ CpaStatus myPerformOp(const CpaInstanceHandle instanceHandle,
28 pSrcBuffer, pDstBuffer, pVerifyResult);
29 if (status == CPA_STATUS_RETRY) {
30 qatPerformOpRetries++;
31- pthread_yield();
32+ sched_yield();
33 if (uiRetry >= iMsgRetry
34 && iMsgRetry != QAT_INFINITE_MAX_NUM_RETRIES) {
35 break;
36@@ -588,7 +589,7 @@ static void *sendPoll(void *ih)
37 if (likely(CPA_STATUS_SUCCESS == status)) {
38 /* Do nothing */
39 } else if (CPA_STATUS_RETRY == status) {
40- pthread_yield();
41+ sched_yield();
42 } else {
43 WARN("WARNING icp_sal_CyPollInstance returned status %d\n",
44 status);
45--
462.7.4
47
diff --git a/meta-qat/recipes-extended/openssl-qat/openssl-qat/openssl-qat_0.4.9-009-openssl_qat-add-openssl-async-specific-symbols.patch b/meta-qat/recipes-extended/openssl-qat/openssl-qat/openssl-qat_0.4.9-009-openssl_qat-add-openssl-async-specific-symbols.patch
new file mode 100644
index 0000000..d3451ae
--- /dev/null
+++ b/meta-qat/recipes-extended/openssl-qat/openssl-qat/openssl-qat_0.4.9-009-openssl_qat-add-openssl-async-specific-symbols.patch
@@ -0,0 +1,113 @@
1From a5068bd456c60b5611494dff2db2093ad6693e6a Mon Sep 17 00:00:00 2001
2From: Anuj Mittal <anujx.mittal@intel.com>
3Date: Thu, 9 Jul 2015 23:58:34 +0800
4Subject: [PATCH] openssl_qat: add openssl async specific symbols
5
6Upstream-Status: Inappropriate [Configuration]
7
8Signed-off-by: Anuj Mittal <anujx.mittal@intel.com>
9---
10 engines/ccgost/openssl.ld | 8 ++++++++
11 engines/openssl.ld | 9 +++++++++
12 engines/qat_engine/openssl.ld | 19 +++++++++++++++++++
13 openssl.ld | 28 ++++++++++++++++++++++++++++
14 4 files changed, 64 insertions(+)
15 create mode 100644 engines/qat_engine/openssl.ld
16
17diff --git a/engines/ccgost/openssl.ld b/engines/ccgost/openssl.ld
18index 010fd6f..edf9d87 100644
19--- a/engines/ccgost/openssl.ld
20+++ b/engines/ccgost/openssl.ld
21@@ -8,3 +8,11 @@ OPENSSL_1.0.0 {
22 *;
23 };
24
25+OPENSSL_1.0.1async {
26+ global:
27+ qaeCryptoMemV2P;
28+ qaeCryptoAtFork;
29+ qaeCryptoMemAlloc;
30+ qaeCryptoMemRealloc;
31+ qaeCryptoMemFree;
32+} OPENSSL_1.0.0;
33diff --git a/engines/openssl.ld b/engines/openssl.ld
34index 010fd6f..3d56887 100644
35--- a/engines/openssl.ld
36+++ b/engines/openssl.ld
37@@ -8,3 +8,12 @@ OPENSSL_1.0.0 {
38 *;
39 };
40
41+OPENSSL_1.0.1async {
42+ global:
43+ qaeCryptoMemV2P;
44+ qaeCryptoAtFork;
45+ qaeCryptoMemAlloc;
46+ qaeCryptoMemRealloc;
47+ qaeCryptoMemFree;
48+} OPENSSL_1.0.0;
49+
50diff --git a/engines/qat_engine/openssl.ld b/engines/qat_engine/openssl.ld
51new file mode 100644
52index 0000000..bdd927d
53--- /dev/null
54+++ b/engines/qat_engine/openssl.ld
55@@ -0,0 +1,19 @@
56+OPENSSL_1.0.0 {
57+ global:
58+ bind_engine;
59+ v_check;
60+ OPENSSL_init;
61+ OPENSSL_finish;
62+ local:
63+ *;
64+};
65+
66+OPENSSL_1.0.1async {
67+ global:
68+ qaeCryptoMemV2P;
69+ qaeCryptoAtFork;
70+ qaeCryptoMemAlloc;
71+ qaeCryptoMemRealloc;
72+ qaeCryptoMemFree;
73+} OPENSSL_1.0.0;
74+
75diff --git a/openssl.ld b/openssl.ld
76index 0c0ed28..afa9349 100644
77--- a/openssl.ld
78+++ b/openssl.ld
79@@ -4618,3 +4618,31 @@ OPENSSL_1.0.1d {
80 CRYPTO_memcmp;
81 } OPENSSL_1.0.1;
82
83+OPENSSL_1.0.1async {
84+ global:
85+ ECDH_compute_key_asynch;
86+ ECDH_generate_key_asynch;
87+ ECDH_generate_key;
88+ DH_compute_key_asynch;
89+ DH_generate_key_asynch;
90+ ECDSA_verify_asynch;
91+ ECDSA_sign_asynch;
92+ DSA_verify_asynch;
93+ DSA_sign_asynch;
94+ RSA_public_decrypt_asynch;
95+ RSA_private_encrypt_asynch;
96+ EVP_MD_CTX_ctrl_ex;
97+ EVP_CIPHER_CTX_ctrl_ex;
98+ qaeCryptoMemV2P;
99+ qaeCryptoAtFork;
100+ SSL_CTX_set_asynch_completion_callback;
101+ RSA_private_decrypt_asynch;
102+ RSA_public_encrypt_asynch;
103+ qaeCryptoMemAlloc;
104+ qaeCryptoMemRealloc;
105+ qaeCryptoMemFree;
106+ RSA_sign_asynch;
107+ RSA_verify_asynch;
108+ EVP_PKEY_derive_PRF;
109+} OPENSSL_1.0.1;
110+
111--
1121.7.9.5
113
diff --git a/meta-qat/recipes-extended/openssl-qat/openssl-qat/openssl-qat_0.4.9-009-openssl_qat-add-version-script.patch b/meta-qat/recipes-extended/openssl-qat/openssl-qat/openssl-qat_0.4.9-009-openssl_qat-add-version-script.patch
new file mode 100644
index 0000000..65ddefa
--- /dev/null
+++ b/meta-qat/recipes-extended/openssl-qat/openssl-qat/openssl-qat_0.4.9-009-openssl_qat-add-version-script.patch
@@ -0,0 +1,4695 @@
1From bc9cd3323cddbad8550ef0d926faf972b37d1a68 Mon Sep 17 00:00:00 2001
2From: Anuj Mittal <anujx.mittal@intel.com>
3Date: Thu, 9 Jul 2015 23:49:14 +0800
4Subject: [PATCH] openssl_qat: add version script
5
6Upstream-Status: Backport [debian]
7
8(Taken from meta/recipes-connectivity/openssl/openssl
9 rev: 5dd1d7566964c90d33c0c44f569d9336fb0724ce)
10
11Signed-off-by: Anuj Mittal <anujx.mittal@intel.com>
12---
13 Configure | 2 +
14 engines/ccgost/openssl.ld | 10 +
15 engines/openssl.ld | 10 +
16 openssl.ld | 4620 +++++++++++++++++++++++++++++++++++++++++++++
17 4 files changed, 4642 insertions(+)
18 create mode 100644 engines/ccgost/openssl.ld
19 create mode 100644 engines/openssl.ld
20 create mode 100644 openssl.ld
21
22diff --git a/Configure b/Configure
23index 44c643c..ba78202 100755
24--- a/Configure
25+++ b/Configure
26@@ -1614,6 +1614,8 @@ if ($strict_warnings)
27 }
28 }
29
30+$shared_ldflag .= " -Wl,--version-script=openssl.ld";
31+
32 open(IN,'<Makefile.org') || die "unable to read Makefile.org:$!\n";
33 unlink("$Makefile.new") || die "unable to remove old $Makefile.new:$!\n" if -e "$Makefile.new";
34 open(OUT,">$Makefile.new") || die "unable to create $Makefile.new:$!\n";
35diff --git a/engines/ccgost/openssl.ld b/engines/ccgost/openssl.ld
36new file mode 100644
37index 0000000..010fd6f
38--- /dev/null
39+++ b/engines/ccgost/openssl.ld
40@@ -0,0 +1,10 @@
41+OPENSSL_1.0.0 {
42+ global:
43+ bind_engine;
44+ v_check;
45+ OPENSSL_init;
46+ OPENSSL_finish;
47+ local:
48+ *;
49+};
50+
51diff --git a/engines/openssl.ld b/engines/openssl.ld
52new file mode 100644
53index 0000000..010fd6f
54--- /dev/null
55+++ b/engines/openssl.ld
56@@ -0,0 +1,10 @@
57+OPENSSL_1.0.0 {
58+ global:
59+ bind_engine;
60+ v_check;
61+ OPENSSL_init;
62+ OPENSSL_finish;
63+ local:
64+ *;
65+};
66+
67diff --git a/openssl.ld b/openssl.ld
68new file mode 100644
69index 0000000..0c0ed28
70--- /dev/null
71+++ b/openssl.ld
72@@ -0,0 +1,4620 @@
73+OPENSSL_1.0.0 {
74+ global:
75+ BIO_f_ssl;
76+ BIO_new_buffer_ssl_connect;
77+ BIO_new_ssl;
78+ BIO_new_ssl_connect;
79+ BIO_proxy_ssl_copy_session_id;
80+ BIO_ssl_copy_session_id;
81+ BIO_ssl_shutdown;
82+ d2i_SSL_SESSION;
83+ DTLSv1_client_method;
84+ DTLSv1_method;
85+ DTLSv1_server_method;
86+ ERR_load_SSL_strings;
87+ i2d_SSL_SESSION;
88+ kssl_build_principal_2;
89+ kssl_cget_tkt;
90+ kssl_check_authent;
91+ kssl_ctx_free;
92+ kssl_ctx_new;
93+ kssl_ctx_setkey;
94+ kssl_ctx_setprinc;
95+ kssl_ctx_setstring;
96+ kssl_ctx_show;
97+ kssl_err_set;
98+ kssl_krb5_free_data_contents;
99+ kssl_sget_tkt;
100+ kssl_skip_confound;
101+ kssl_validate_times;
102+ PEM_read_bio_SSL_SESSION;
103+ PEM_read_SSL_SESSION;
104+ PEM_write_bio_SSL_SESSION;
105+ PEM_write_SSL_SESSION;
106+ SSL_accept;
107+ SSL_add_client_CA;
108+ SSL_add_dir_cert_subjects_to_stack;
109+ SSL_add_dir_cert_subjs_to_stk;
110+ SSL_add_file_cert_subjects_to_stack;
111+ SSL_add_file_cert_subjs_to_stk;
112+ SSL_alert_desc_string;
113+ SSL_alert_desc_string_long;
114+ SSL_alert_type_string;
115+ SSL_alert_type_string_long;
116+ SSL_callback_ctrl;
117+ SSL_check_private_key;
118+ SSL_CIPHER_description;
119+ SSL_CIPHER_get_bits;
120+ SSL_CIPHER_get_name;
121+ SSL_CIPHER_get_version;
122+ SSL_clear;
123+ SSL_COMP_add_compression_method;
124+ SSL_COMP_get_compression_methods;
125+ SSL_COMP_get_compress_methods;
126+ SSL_COMP_get_name;
127+ SSL_connect;
128+ SSL_copy_session_id;
129+ SSL_ctrl;
130+ SSL_CTX_add_client_CA;
131+ SSL_CTX_add_session;
132+ SSL_CTX_callback_ctrl;
133+ SSL_CTX_check_private_key;
134+ SSL_CTX_ctrl;
135+ SSL_CTX_flush_sessions;
136+ SSL_CTX_free;
137+ SSL_CTX_get_cert_store;
138+ SSL_CTX_get_client_CA_list;
139+ SSL_CTX_get_client_cert_cb;
140+ SSL_CTX_get_ex_data;
141+ SSL_CTX_get_ex_new_index;
142+ SSL_CTX_get_info_callback;
143+ SSL_CTX_get_quiet_shutdown;
144+ SSL_CTX_get_timeout;
145+ SSL_CTX_get_verify_callback;
146+ SSL_CTX_get_verify_depth;
147+ SSL_CTX_get_verify_mode;
148+ SSL_CTX_load_verify_locations;
149+ SSL_CTX_new;
150+ SSL_CTX_remove_session;
151+ SSL_CTX_sess_get_get_cb;
152+ SSL_CTX_sess_get_new_cb;
153+ SSL_CTX_sess_get_remove_cb;
154+ SSL_CTX_sessions;
155+ SSL_CTX_sess_set_get_cb;
156+ SSL_CTX_sess_set_new_cb;
157+ SSL_CTX_sess_set_remove_cb;
158+ SSL_CTX_set1_param;
159+ SSL_CTX_set_cert_store;
160+ SSL_CTX_set_cert_verify_callback;
161+ SSL_CTX_set_cert_verify_cb;
162+ SSL_CTX_set_cipher_list;
163+ SSL_CTX_set_client_CA_list;
164+ SSL_CTX_set_client_cert_cb;
165+ SSL_CTX_set_client_cert_engine;
166+ SSL_CTX_set_cookie_generate_cb;
167+ SSL_CTX_set_cookie_verify_cb;
168+ SSL_CTX_set_default_passwd_cb;
169+ SSL_CTX_set_default_passwd_cb_userdata;
170+ SSL_CTX_set_default_verify_paths;
171+ SSL_CTX_set_def_passwd_cb_ud;
172+ SSL_CTX_set_def_verify_paths;
173+ SSL_CTX_set_ex_data;
174+ SSL_CTX_set_generate_session_id;
175+ SSL_CTX_set_info_callback;
176+ SSL_CTX_set_msg_callback;
177+ SSL_CTX_set_psk_client_callback;
178+ SSL_CTX_set_psk_server_callback;
179+ SSL_CTX_set_purpose;
180+ SSL_CTX_set_quiet_shutdown;
181+ SSL_CTX_set_session_id_context;
182+ SSL_CTX_set_ssl_version;
183+ SSL_CTX_set_timeout;
184+ SSL_CTX_set_tmp_dh_callback;
185+ SSL_CTX_set_tmp_ecdh_callback;
186+ SSL_CTX_set_tmp_rsa_callback;
187+ SSL_CTX_set_trust;
188+ SSL_CTX_set_verify;
189+ SSL_CTX_set_verify_depth;
190+ SSL_CTX_use_cert_chain_file;
191+ SSL_CTX_use_certificate;
192+ SSL_CTX_use_certificate_ASN1;
193+ SSL_CTX_use_certificate_chain_file;
194+ SSL_CTX_use_certificate_file;
195+ SSL_CTX_use_PrivateKey;
196+ SSL_CTX_use_PrivateKey_ASN1;
197+ SSL_CTX_use_PrivateKey_file;
198+ SSL_CTX_use_psk_identity_hint;
199+ SSL_CTX_use_RSAPrivateKey;
200+ SSL_CTX_use_RSAPrivateKey_ASN1;
201+ SSL_CTX_use_RSAPrivateKey_file;
202+ SSL_do_handshake;
203+ SSL_dup;
204+ SSL_dup_CA_list;
205+ SSLeay_add_ssl_algorithms;
206+ SSL_free;
207+ SSL_get1_session;
208+ SSL_get_certificate;
209+ SSL_get_cipher_list;
210+ SSL_get_ciphers;
211+ SSL_get_client_CA_list;
212+ SSL_get_current_cipher;
213+ SSL_get_current_compression;
214+ SSL_get_current_expansion;
215+ SSL_get_default_timeout;
216+ SSL_get_error;
217+ SSL_get_ex_data;
218+ SSL_get_ex_data_X509_STORE_CTX_idx;
219+ SSL_get_ex_d_X509_STORE_CTX_idx;
220+ SSL_get_ex_new_index;
221+ SSL_get_fd;
222+ SSL_get_finished;
223+ SSL_get_info_callback;
224+ SSL_get_peer_cert_chain;
225+ SSL_get_peer_certificate;
226+ SSL_get_peer_finished;
227+ SSL_get_privatekey;
228+ SSL_get_psk_identity;
229+ SSL_get_psk_identity_hint;
230+ SSL_get_quiet_shutdown;
231+ SSL_get_rbio;
232+ SSL_get_read_ahead;
233+ SSL_get_rfd;
234+ SSL_get_servername;
235+ SSL_get_servername_type;
236+ SSL_get_session;
237+ SSL_get_shared_ciphers;
238+ SSL_get_shutdown;
239+ SSL_get_SSL_CTX;
240+ SSL_get_ssl_method;
241+ SSL_get_verify_callback;
242+ SSL_get_verify_depth;
243+ SSL_get_verify_mode;
244+ SSL_get_verify_result;
245+ SSL_get_version;
246+ SSL_get_wbio;
247+ SSL_get_wfd;
248+ SSL_has_matching_session_id;
249+ SSL_library_init;
250+ SSL_load_client_CA_file;
251+ SSL_load_error_strings;
252+ SSL_new;
253+ SSL_peek;
254+ SSL_pending;
255+ SSL_read;
256+ SSL_renegotiate;
257+ SSL_renegotiate_pending;
258+ SSL_rstate_string;
259+ SSL_rstate_string_long;
260+ SSL_SESSION_cmp;
261+ SSL_SESSION_free;
262+ SSL_SESSION_get_ex_data;
263+ SSL_SESSION_get_ex_new_index;
264+ SSL_SESSION_get_id;
265+ SSL_SESSION_get_time;
266+ SSL_SESSION_get_timeout;
267+ SSL_SESSION_hash;
268+ SSL_SESSION_new;
269+ SSL_SESSION_print;
270+ SSL_SESSION_print_fp;
271+ SSL_SESSION_set_ex_data;
272+ SSL_SESSION_set_time;
273+ SSL_SESSION_set_timeout;
274+ SSL_set1_param;
275+ SSL_set_accept_state;
276+ SSL_set_bio;
277+ SSL_set_cipher_list;
278+ SSL_set_client_CA_list;
279+ SSL_set_connect_state;
280+ SSL_set_ex_data;
281+ SSL_set_fd;
282+ SSL_set_generate_session_id;
283+ SSL_set_info_callback;
284+ SSL_set_msg_callback;
285+ SSL_set_psk_client_callback;
286+ SSL_set_psk_server_callback;
287+ SSL_set_purpose;
288+ SSL_set_quiet_shutdown;
289+ SSL_set_read_ahead;
290+ SSL_set_rfd;
291+ SSL_set_session;
292+ SSL_set_session_id_context;
293+ SSL_set_session_secret_cb;
294+ SSL_set_session_ticket_ext;
295+ SSL_set_session_ticket_ext_cb;
296+ SSL_set_shutdown;
297+ SSL_set_SSL_CTX;
298+ SSL_set_ssl_method;
299+ SSL_set_tmp_dh_callback;
300+ SSL_set_tmp_ecdh_callback;
301+ SSL_set_tmp_rsa_callback;
302+ SSL_set_trust;
303+ SSL_set_verify;
304+ SSL_set_verify_depth;
305+ SSL_set_verify_result;
306+ SSL_set_wfd;
307+ SSL_shutdown;
308+ SSL_state;
309+ SSL_state_string;
310+ SSL_state_string_long;
311+ SSL_use_certificate;
312+ SSL_use_certificate_ASN1;
313+ SSL_use_certificate_file;
314+ SSL_use_PrivateKey;
315+ SSL_use_PrivateKey_ASN1;
316+ SSL_use_PrivateKey_file;
317+ SSL_use_psk_identity_hint;
318+ SSL_use_RSAPrivateKey;
319+ SSL_use_RSAPrivateKey_ASN1;
320+ SSL_use_RSAPrivateKey_file;
321+ SSLv23_client_method;
322+ SSLv23_method;
323+ SSLv23_server_method;
324+ SSLv2_client_method;
325+ SSLv2_method;
326+ SSLv2_server_method;
327+ SSLv3_client_method;
328+ SSLv3_method;
329+ SSLv3_server_method;
330+ SSL_version;
331+ SSL_want;
332+ SSL_write;
333+ TLSv1_client_method;
334+ TLSv1_method;
335+ TLSv1_server_method;
336+
337+
338+ SSLeay;
339+ SSLeay_version;
340+ ASN1_BIT_STRING_asn1_meth;
341+ ASN1_HEADER_free;
342+ ASN1_HEADER_new;
343+ ASN1_IA5STRING_asn1_meth;
344+ ASN1_INTEGER_get;
345+ ASN1_INTEGER_set;
346+ ASN1_INTEGER_to_BN;
347+ ASN1_OBJECT_create;
348+ ASN1_OBJECT_free;
349+ ASN1_OBJECT_new;
350+ ASN1_PRINTABLE_type;
351+ ASN1_STRING_cmp;
352+ ASN1_STRING_dup;
353+ ASN1_STRING_free;
354+ ASN1_STRING_new;
355+ ASN1_STRING_print;
356+ ASN1_STRING_set;
357+ ASN1_STRING_type_new;
358+ ASN1_TYPE_free;
359+ ASN1_TYPE_new;
360+ ASN1_UNIVERSALSTRING_to_string;
361+ ASN1_UTCTIME_check;
362+ ASN1_UTCTIME_print;
363+ ASN1_UTCTIME_set;
364+ ASN1_check_infinite_end;
365+ ASN1_d2i_bio;
366+ ASN1_d2i_fp;
367+ ASN1_digest;
368+ ASN1_dup;
369+ ASN1_get_object;
370+ ASN1_i2d_bio;
371+ ASN1_i2d_fp;
372+ ASN1_object_size;
373+ ASN1_parse;
374+ ASN1_put_object;
375+ ASN1_sign;
376+ ASN1_verify;
377+ BF_cbc_encrypt;
378+ BF_cfb64_encrypt;
379+ BF_ecb_encrypt;
380+ BF_encrypt;
381+ BF_ofb64_encrypt;
382+ BF_options;
383+ BF_set_key;
384+ BIO_CONNECT_free;
385+ BIO_CONNECT_new;
386+ BIO_accept;
387+ BIO_ctrl;
388+ BIO_int_ctrl;
389+ BIO_debug_callback;
390+ BIO_dump;
391+ BIO_dup_chain;
392+ BIO_f_base64;
393+ BIO_f_buffer;
394+ BIO_f_cipher;
395+ BIO_f_md;
396+ BIO_f_null;
397+ BIO_f_proxy_server;
398+ BIO_fd_non_fatal_error;
399+ BIO_fd_should_retry;
400+ BIO_find_type;
401+ BIO_free;
402+ BIO_free_all;
403+ BIO_get_accept_socket;
404+ BIO_get_filter_bio;
405+ BIO_get_host_ip;
406+ BIO_get_port;
407+ BIO_get_retry_BIO;
408+ BIO_get_retry_reason;
409+ BIO_gethostbyname;
410+ BIO_gets;
411+ BIO_new;
412+ BIO_new_accept;
413+ BIO_new_connect;
414+ BIO_new_fd;
415+ BIO_new_file;
416+ BIO_new_fp;
417+ BIO_new_socket;
418+ BIO_pop;
419+ BIO_printf;
420+ BIO_push;
421+ BIO_puts;
422+ BIO_read;
423+ BIO_s_accept;
424+ BIO_s_connect;
425+ BIO_s_fd;
426+ BIO_s_file;
427+ BIO_s_mem;
428+ BIO_s_null;
429+ BIO_s_proxy_client;
430+ BIO_s_socket;
431+ BIO_set;
432+ BIO_set_cipher;
433+ BIO_set_tcp_ndelay;
434+ BIO_sock_cleanup;
435+ BIO_sock_error;
436+ BIO_sock_init;
437+ BIO_sock_non_fatal_error;
438+ BIO_sock_should_retry;
439+ BIO_socket_ioctl;
440+ BIO_write;
441+ BN_CTX_free;
442+ BN_CTX_new;
443+ BN_MONT_CTX_free;
444+ BN_MONT_CTX_new;
445+ BN_MONT_CTX_set;
446+ BN_add;
447+ BN_add_word;
448+ BN_hex2bn;
449+ BN_bin2bn;
450+ BN_bn2hex;
451+ BN_bn2bin;
452+ BN_clear;
453+ BN_clear_bit;
454+ BN_clear_free;
455+ BN_cmp;
456+ BN_copy;
457+ BN_div;
458+ BN_div_word;
459+ BN_dup;
460+ BN_free;
461+ BN_from_montgomery;
462+ BN_gcd;
463+ BN_generate_prime;
464+ BN_get_word;
465+ BN_is_bit_set;
466+ BN_is_prime;
467+ BN_lshift;
468+ BN_lshift1;
469+ BN_mask_bits;
470+ BN_mod;
471+ BN_mod_exp;
472+ BN_mod_exp_mont;
473+ BN_mod_exp_simple;
474+ BN_mod_inverse;
475+ BN_mod_mul;
476+ BN_mod_mul_montgomery;
477+ BN_mod_word;
478+ BN_mul;
479+ BN_new;
480+ BN_num_bits;
481+ BN_num_bits_word;
482+ BN_options;
483+ BN_print;
484+ BN_print_fp;
485+ BN_rand;
486+ BN_reciprocal;
487+ BN_rshift;
488+ BN_rshift1;
489+ BN_set_bit;
490+ BN_set_word;
491+ BN_sqr;
492+ BN_sub;
493+ BN_to_ASN1_INTEGER;
494+ BN_ucmp;
495+ BN_value_one;
496+ BUF_MEM_free;
497+ BUF_MEM_grow;
498+ BUF_MEM_new;
499+ BUF_strdup;
500+ CONF_free;
501+ CONF_get_number;
502+ CONF_get_section;
503+ CONF_get_string;
504+ CONF_load;
505+ CRYPTO_add_lock;
506+ CRYPTO_dbg_free;
507+ CRYPTO_dbg_malloc;
508+ CRYPTO_dbg_realloc;
509+ CRYPTO_dbg_remalloc;
510+ CRYPTO_free;
511+ CRYPTO_get_add_lock_callback;
512+ CRYPTO_get_id_callback;
513+ CRYPTO_get_lock_name;
514+ CRYPTO_get_locking_callback;
515+ CRYPTO_get_mem_functions;
516+ CRYPTO_lock;
517+ CRYPTO_malloc;
518+ CRYPTO_mem_ctrl;
519+ CRYPTO_mem_leaks;
520+ CRYPTO_mem_leaks_cb;
521+ CRYPTO_mem_leaks_fp;
522+ CRYPTO_realloc;
523+ CRYPTO_remalloc;
524+ CRYPTO_set_add_lock_callback;
525+ CRYPTO_set_id_callback;
526+ CRYPTO_set_locking_callback;
527+ CRYPTO_set_mem_functions;
528+ CRYPTO_thread_id;
529+ DH_check;
530+ DH_compute_key;
531+ DH_free;
532+ DH_generate_key;
533+ DH_generate_parameters;
534+ DH_new;
535+ DH_size;
536+ DHparams_print;
537+ DHparams_print_fp;
538+ DSA_free;
539+ DSA_generate_key;
540+ DSA_generate_parameters;
541+ DSA_is_prime;
542+ DSA_new;
543+ DSA_print;
544+ DSA_print_fp;
545+ DSA_sign;
546+ DSA_sign_setup;
547+ DSA_size;
548+ DSA_verify;
549+ DSAparams_print;
550+ DSAparams_print_fp;
551+ ERR_clear_error;
552+ ERR_error_string;
553+ ERR_free_strings;
554+ ERR_func_error_string;
555+ ERR_get_err_state_table;
556+ ERR_get_error;
557+ ERR_get_error_line;
558+ ERR_get_state;
559+ ERR_get_string_table;
560+ ERR_lib_error_string;
561+ ERR_load_ASN1_strings;
562+ ERR_load_BIO_strings;
563+ ERR_load_BN_strings;
564+ ERR_load_BUF_strings;
565+ ERR_load_CONF_strings;
566+ ERR_load_DH_strings;
567+ ERR_load_DSA_strings;
568+ ERR_load_ERR_strings;
569+ ERR_load_EVP_strings;
570+ ERR_load_OBJ_strings;
571+ ERR_load_PEM_strings;
572+ ERR_load_PROXY_strings;
573+ ERR_load_RSA_strings;
574+ ERR_load_X509_strings;
575+ ERR_load_crypto_strings;
576+ ERR_load_strings;
577+ ERR_peek_error;
578+ ERR_peek_error_line;
579+ ERR_print_errors;
580+ ERR_print_errors_fp;
581+ ERR_put_error;
582+ ERR_reason_error_string;
583+ ERR_remove_state;
584+ EVP_BytesToKey;
585+ EVP_CIPHER_CTX_cleanup;
586+ EVP_CipherFinal;
587+ EVP_CipherInit;
588+ EVP_CipherUpdate;
589+ EVP_DecodeBlock;
590+ EVP_DecodeFinal;
591+ EVP_DecodeInit;
592+ EVP_DecodeUpdate;
593+ EVP_DecryptFinal;
594+ EVP_DecryptInit;
595+ EVP_DecryptUpdate;
596+ EVP_DigestFinal;
597+ EVP_DigestInit;
598+ EVP_DigestUpdate;
599+ EVP_EncodeBlock;
600+ EVP_EncodeFinal;
601+ EVP_EncodeInit;
602+ EVP_EncodeUpdate;
603+ EVP_EncryptFinal;
604+ EVP_EncryptInit;
605+ EVP_EncryptUpdate;
606+ EVP_OpenFinal;
607+ EVP_OpenInit;
608+ EVP_PKEY_assign;
609+ EVP_PKEY_copy_parameters;
610+ EVP_PKEY_free;
611+ EVP_PKEY_missing_parameters;
612+ EVP_PKEY_new;
613+ EVP_PKEY_save_parameters;
614+ EVP_PKEY_size;
615+ EVP_PKEY_type;
616+ EVP_SealFinal;
617+ EVP_SealInit;
618+ EVP_SignFinal;
619+ EVP_VerifyFinal;
620+ EVP_add_alias;
621+ EVP_add_cipher;
622+ EVP_add_digest;
623+ EVP_bf_cbc;
624+ EVP_bf_cfb64;
625+ EVP_bf_ecb;
626+ EVP_bf_ofb;
627+ EVP_cleanup;
628+ EVP_des_cbc;
629+ EVP_des_cfb64;
630+ EVP_des_ecb;
631+ EVP_des_ede;
632+ EVP_des_ede3;
633+ EVP_des_ede3_cbc;
634+ EVP_des_ede3_cfb64;
635+ EVP_des_ede3_ofb;
636+ EVP_des_ede_cbc;
637+ EVP_des_ede_cfb64;
638+ EVP_des_ede_ofb;
639+ EVP_des_ofb;
640+ EVP_desx_cbc;
641+ EVP_dss;
642+ EVP_dss1;
643+ EVP_enc_null;
644+ EVP_get_cipherbyname;
645+ EVP_get_digestbyname;
646+ EVP_get_pw_prompt;
647+ EVP_idea_cbc;
648+ EVP_idea_cfb64;
649+ EVP_idea_ecb;
650+ EVP_idea_ofb;
651+ EVP_md2;
652+ EVP_md5;
653+ EVP_md_null;
654+ EVP_rc2_cbc;
655+ EVP_rc2_cfb64;
656+ EVP_rc2_ecb;
657+ EVP_rc2_ofb;
658+ EVP_rc4;
659+ EVP_read_pw_string;
660+ EVP_set_pw_prompt;
661+ EVP_sha;
662+ EVP_sha1;
663+ MD2;
664+ MD2_Final;
665+ MD2_Init;
666+ MD2_Update;
667+ MD2_options;
668+ MD5;
669+ MD5_Final;
670+ MD5_Init;
671+ MD5_Update;
672+ MDC2;
673+ MDC2_Final;
674+ MDC2_Init;
675+ MDC2_Update;
676+ NETSCAPE_SPKAC_free;
677+ NETSCAPE_SPKAC_new;
678+ NETSCAPE_SPKI_free;
679+ NETSCAPE_SPKI_new;
680+ NETSCAPE_SPKI_sign;
681+ NETSCAPE_SPKI_verify;
682+ OBJ_add_object;
683+ OBJ_bsearch;
684+ OBJ_cleanup;
685+ OBJ_cmp;
686+ OBJ_create;
687+ OBJ_dup;
688+ OBJ_ln2nid;
689+ OBJ_new_nid;
690+ OBJ_nid2ln;
691+ OBJ_nid2obj;
692+ OBJ_nid2sn;
693+ OBJ_obj2nid;
694+ OBJ_sn2nid;
695+ OBJ_txt2nid;
696+ PEM_ASN1_read;
697+ PEM_ASN1_read_bio;
698+ PEM_ASN1_write;
699+ PEM_ASN1_write_bio;
700+ PEM_SealFinal;
701+ PEM_SealInit;
702+ PEM_SealUpdate;
703+ PEM_SignFinal;
704+ PEM_SignInit;
705+ PEM_SignUpdate;
706+ PEM_X509_INFO_read;
707+ PEM_X509_INFO_read_bio;
708+ PEM_X509_INFO_write_bio;
709+ PEM_dek_info;
710+ PEM_do_header;
711+ PEM_get_EVP_CIPHER_INFO;
712+ PEM_proc_type;
713+ PEM_read;
714+ PEM_read_DHparams;
715+ PEM_read_DSAPrivateKey;
716+ PEM_read_DSAparams;
717+ PEM_read_PKCS7;
718+ PEM_read_PrivateKey;
719+ PEM_read_RSAPrivateKey;
720+ PEM_read_X509;
721+ PEM_read_X509_CRL;
722+ PEM_read_X509_REQ;
723+ PEM_read_bio;
724+ PEM_read_bio_DHparams;
725+ PEM_read_bio_DSAPrivateKey;
726+ PEM_read_bio_DSAparams;
727+ PEM_read_bio_PKCS7;
728+ PEM_read_bio_PrivateKey;
729+ PEM_read_bio_RSAPrivateKey;
730+ PEM_read_bio_X509;
731+ PEM_read_bio_X509_CRL;
732+ PEM_read_bio_X509_REQ;
733+ PEM_write;
734+ PEM_write_DHparams;
735+ PEM_write_DSAPrivateKey;
736+ PEM_write_DSAparams;
737+ PEM_write_PKCS7;
738+ PEM_write_PrivateKey;
739+ PEM_write_RSAPrivateKey;
740+ PEM_write_X509;
741+ PEM_write_X509_CRL;
742+ PEM_write_X509_REQ;
743+ PEM_write_bio;
744+ PEM_write_bio_DHparams;
745+ PEM_write_bio_DSAPrivateKey;
746+ PEM_write_bio_DSAparams;
747+ PEM_write_bio_PKCS7;
748+ PEM_write_bio_PrivateKey;
749+ PEM_write_bio_RSAPrivateKey;
750+ PEM_write_bio_X509;
751+ PEM_write_bio_X509_CRL;
752+ PEM_write_bio_X509_REQ;
753+ PKCS7_DIGEST_free;
754+ PKCS7_DIGEST_new;
755+ PKCS7_ENCRYPT_free;
756+ PKCS7_ENCRYPT_new;
757+ PKCS7_ENC_CONTENT_free;
758+ PKCS7_ENC_CONTENT_new;
759+ PKCS7_ENVELOPE_free;
760+ PKCS7_ENVELOPE_new;
761+ PKCS7_ISSUER_AND_SERIAL_digest;
762+ PKCS7_ISSUER_AND_SERIAL_free;
763+ PKCS7_ISSUER_AND_SERIAL_new;
764+ PKCS7_RECIP_INFO_free;
765+ PKCS7_RECIP_INFO_new;
766+ PKCS7_SIGNED_free;
767+ PKCS7_SIGNED_new;
768+ PKCS7_SIGNER_INFO_free;
769+ PKCS7_SIGNER_INFO_new;
770+ PKCS7_SIGN_ENVELOPE_free;
771+ PKCS7_SIGN_ENVELOPE_new;
772+ PKCS7_dup;
773+ PKCS7_free;
774+ PKCS7_new;
775+ PROXY_ENTRY_add_noproxy;
776+ PROXY_ENTRY_clear_noproxy;
777+ PROXY_ENTRY_free;
778+ PROXY_ENTRY_get_noproxy;
779+ PROXY_ENTRY_new;
780+ PROXY_ENTRY_set_server;
781+ PROXY_add_noproxy;
782+ PROXY_add_server;
783+ PROXY_check_by_host;
784+ PROXY_check_url;
785+ PROXY_clear_noproxy;
786+ PROXY_free;
787+ PROXY_get_noproxy;
788+ PROXY_get_proxies;
789+ PROXY_get_proxy_entry;
790+ PROXY_load_conf;
791+ PROXY_new;
792+ PROXY_print;
793+ RAND_bytes;
794+ RAND_cleanup;
795+ RAND_file_name;
796+ RAND_load_file;
797+ RAND_screen;
798+ RAND_seed;
799+ RAND_write_file;
800+ RC2_cbc_encrypt;
801+ RC2_cfb64_encrypt;
802+ RC2_ecb_encrypt;
803+ RC2_encrypt;
804+ RC2_ofb64_encrypt;
805+ RC2_set_key;
806+ RC4;
807+ RC4_options;
808+ RC4_set_key;
809+ RSAPrivateKey_asn1_meth;
810+ RSAPrivateKey_dup;
811+ RSAPublicKey_dup;
812+ RSA_PKCS1_SSLeay;
813+ RSA_free;
814+ RSA_generate_key;
815+ RSA_new;
816+ RSA_new_method;
817+ RSA_print;
818+ RSA_print_fp;
819+ RSA_private_decrypt;
820+ RSA_private_encrypt;
821+ RSA_public_decrypt;
822+ RSA_public_encrypt;
823+ RSA_set_default_method;
824+ RSA_sign;
825+ RSA_sign_ASN1_OCTET_STRING;
826+ RSA_size;
827+ RSA_verify;
828+ RSA_verify_ASN1_OCTET_STRING;
829+ SHA;
830+ SHA1;
831+ SHA1_Final;
832+ SHA1_Init;
833+ SHA1_Update;
834+ SHA_Final;
835+ SHA_Init;
836+ SHA_Update;
837+ OpenSSL_add_all_algorithms;
838+ OpenSSL_add_all_ciphers;
839+ OpenSSL_add_all_digests;
840+ TXT_DB_create_index;
841+ TXT_DB_free;
842+ TXT_DB_get_by_index;
843+ TXT_DB_insert;
844+ TXT_DB_read;
845+ TXT_DB_write;
846+ X509_ALGOR_free;
847+ X509_ALGOR_new;
848+ X509_ATTRIBUTE_free;
849+ X509_ATTRIBUTE_new;
850+ X509_CINF_free;
851+ X509_CINF_new;
852+ X509_CRL_INFO_free;
853+ X509_CRL_INFO_new;
854+ X509_CRL_add_ext;
855+ X509_CRL_cmp;
856+ X509_CRL_delete_ext;
857+ X509_CRL_dup;
858+ X509_CRL_free;
859+ X509_CRL_get_ext;
860+ X509_CRL_get_ext_by_NID;
861+ X509_CRL_get_ext_by_OBJ;
862+ X509_CRL_get_ext_by_critical;
863+ X509_CRL_get_ext_count;
864+ X509_CRL_new;
865+ X509_CRL_sign;
866+ X509_CRL_verify;
867+ X509_EXTENSION_create_by_NID;
868+ X509_EXTENSION_create_by_OBJ;
869+ X509_EXTENSION_dup;
870+ X509_EXTENSION_free;
871+ X509_EXTENSION_get_critical;
872+ X509_EXTENSION_get_data;
873+ X509_EXTENSION_get_object;
874+ X509_EXTENSION_new;
875+ X509_EXTENSION_set_critical;
876+ X509_EXTENSION_set_data;
877+ X509_EXTENSION_set_object;
878+ X509_INFO_free;
879+ X509_INFO_new;
880+ X509_LOOKUP_by_alias;
881+ X509_LOOKUP_by_fingerprint;
882+ X509_LOOKUP_by_issuer_serial;
883+ X509_LOOKUP_by_subject;
884+ X509_LOOKUP_ctrl;
885+ X509_LOOKUP_file;
886+ X509_LOOKUP_free;
887+ X509_LOOKUP_hash_dir;
888+ X509_LOOKUP_init;
889+ X509_LOOKUP_new;
890+ X509_LOOKUP_shutdown;
891+ X509_NAME_ENTRY_create_by_NID;
892+ X509_NAME_ENTRY_create_by_OBJ;
893+ X509_NAME_ENTRY_dup;
894+ X509_NAME_ENTRY_free;
895+ X509_NAME_ENTRY_get_data;
896+ X509_NAME_ENTRY_get_object;
897+ X509_NAME_ENTRY_new;
898+ X509_NAME_ENTRY_set_data;
899+ X509_NAME_ENTRY_set_object;
900+ X509_NAME_add_entry;
901+ X509_NAME_cmp;
902+ X509_NAME_delete_entry;
903+ X509_NAME_digest;
904+ X509_NAME_dup;
905+ X509_NAME_entry_count;
906+ X509_NAME_free;
907+ X509_NAME_get_entry;
908+ X509_NAME_get_index_by_NID;
909+ X509_NAME_get_index_by_OBJ;
910+ X509_NAME_get_text_by_NID;
911+ X509_NAME_get_text_by_OBJ;
912+ X509_NAME_hash;
913+ X509_NAME_new;
914+ X509_NAME_oneline;
915+ X509_NAME_print;
916+ X509_NAME_set;
917+ X509_OBJECT_free_contents;
918+ X509_OBJECT_retrieve_by_subject;
919+ X509_OBJECT_up_ref_count;
920+ X509_PKEY_free;
921+ X509_PKEY_new;
922+ X509_PUBKEY_free;
923+ X509_PUBKEY_get;
924+ X509_PUBKEY_new;
925+ X509_PUBKEY_set;
926+ X509_REQ_INFO_free;
927+ X509_REQ_INFO_new;
928+ X509_REQ_dup;
929+ X509_REQ_free;
930+ X509_REQ_get_pubkey;
931+ X509_REQ_new;
932+ X509_REQ_print;
933+ X509_REQ_print_fp;
934+ X509_REQ_set_pubkey;
935+ X509_REQ_set_subject_name;
936+ X509_REQ_set_version;
937+ X509_REQ_sign;
938+ X509_REQ_to_X509;
939+ X509_REQ_verify;
940+ X509_REVOKED_add_ext;
941+ X509_REVOKED_delete_ext;
942+ X509_REVOKED_free;
943+ X509_REVOKED_get_ext;
944+ X509_REVOKED_get_ext_by_NID;
945+ X509_REVOKED_get_ext_by_OBJ;
946+ X509_REVOKED_get_ext_by_critical;
947+ X509_REVOKED_get_ext_by_critic;
948+ X509_REVOKED_get_ext_count;
949+ X509_REVOKED_new;
950+ X509_SIG_free;
951+ X509_SIG_new;
952+ X509_STORE_CTX_cleanup;
953+ X509_STORE_CTX_init;
954+ X509_STORE_add_cert;
955+ X509_STORE_add_lookup;
956+ X509_STORE_free;
957+ X509_STORE_get_by_subject;
958+ X509_STORE_load_locations;
959+ X509_STORE_new;
960+ X509_STORE_set_default_paths;
961+ X509_VAL_free;
962+ X509_VAL_new;
963+ X509_add_ext;
964+ X509_asn1_meth;
965+ X509_certificate_type;
966+ X509_check_private_key;
967+ X509_cmp_current_time;
968+ X509_delete_ext;
969+ X509_digest;
970+ X509_dup;
971+ X509_free;
972+ X509_get_default_cert_area;
973+ X509_get_default_cert_dir;
974+ X509_get_default_cert_dir_env;
975+ X509_get_default_cert_file;
976+ X509_get_default_cert_file_env;
977+ X509_get_default_private_dir;
978+ X509_get_ext;
979+ X509_get_ext_by_NID;
980+ X509_get_ext_by_OBJ;
981+ X509_get_ext_by_critical;
982+ X509_get_ext_count;
983+ X509_get_issuer_name;
984+ X509_get_pubkey;
985+ X509_get_pubkey_parameters;
986+ X509_get_serialNumber;
987+ X509_get_subject_name;
988+ X509_gmtime_adj;
989+ X509_issuer_and_serial_cmp;
990+ X509_issuer_and_serial_hash;
991+ X509_issuer_name_cmp;
992+ X509_issuer_name_hash;
993+ X509_load_cert_file;
994+ X509_new;
995+ X509_print;
996+ X509_print_fp;
997+ X509_set_issuer_name;
998+ X509_set_notAfter;
999+ X509_set_notBefore;
1000+ X509_set_pubkey;
1001+ X509_set_serialNumber;
1002+ X509_set_subject_name;
1003+ X509_set_version;
1004+ X509_sign;
1005+ X509_subject_name_cmp;
1006+ X509_subject_name_hash;
1007+ X509_to_X509_REQ;
1008+ X509_verify;
1009+ X509_verify_cert;
1010+ X509_verify_cert_error_string;
1011+ X509v3_add_ext;
1012+ X509v3_add_extension;
1013+ X509v3_add_netscape_extensions;
1014+ X509v3_add_standard_extensions;
1015+ X509v3_cleanup_extensions;
1016+ X509v3_data_type_by_NID;
1017+ X509v3_data_type_by_OBJ;
1018+ X509v3_delete_ext;
1019+ X509v3_get_ext;
1020+ X509v3_get_ext_by_NID;
1021+ X509v3_get_ext_by_OBJ;
1022+ X509v3_get_ext_by_critical;
1023+ X509v3_get_ext_count;
1024+ X509v3_pack_string;
1025+ X509v3_pack_type_by_NID;
1026+ X509v3_pack_type_by_OBJ;
1027+ X509v3_unpack_string;
1028+ _des_crypt;
1029+ a2d_ASN1_OBJECT;
1030+ a2i_ASN1_INTEGER;
1031+ a2i_ASN1_STRING;
1032+ asn1_Finish;
1033+ asn1_GetSequence;
1034+ bn_div_words;
1035+ bn_expand2;
1036+ bn_mul_add_words;
1037+ bn_mul_words;
1038+ BN_uadd;
1039+ BN_usub;
1040+ bn_sqr_words;
1041+ _ossl_old_crypt;
1042+ d2i_ASN1_BIT_STRING;
1043+ d2i_ASN1_BOOLEAN;
1044+ d2i_ASN1_HEADER;
1045+ d2i_ASN1_IA5STRING;
1046+ d2i_ASN1_INTEGER;
1047+ d2i_ASN1_OBJECT;
1048+ d2i_ASN1_OCTET_STRING;
1049+ d2i_ASN1_PRINTABLE;
1050+ d2i_ASN1_PRINTABLESTRING;
1051+ d2i_ASN1_SET;
1052+ d2i_ASN1_T61STRING;
1053+ d2i_ASN1_TYPE;
1054+ d2i_ASN1_UTCTIME;
1055+ d2i_ASN1_bytes;
1056+ d2i_ASN1_type_bytes;
1057+ d2i_DHparams;
1058+ d2i_DSAPrivateKey;
1059+ d2i_DSAPrivateKey_bio;
1060+ d2i_DSAPrivateKey_fp;
1061+ d2i_DSAPublicKey;
1062+ d2i_DSAparams;
1063+ d2i_NETSCAPE_SPKAC;
1064+ d2i_NETSCAPE_SPKI;
1065+ d2i_Netscape_RSA;
1066+ d2i_PKCS7;
1067+ d2i_PKCS7_DIGEST;
1068+ d2i_PKCS7_ENCRYPT;
1069+ d2i_PKCS7_ENC_CONTENT;
1070+ d2i_PKCS7_ENVELOPE;
1071+ d2i_PKCS7_ISSUER_AND_SERIAL;
1072+ d2i_PKCS7_RECIP_INFO;
1073+ d2i_PKCS7_SIGNED;
1074+ d2i_PKCS7_SIGNER_INFO;
1075+ d2i_PKCS7_SIGN_ENVELOPE;
1076+ d2i_PKCS7_bio;
1077+ d2i_PKCS7_fp;
1078+ d2i_PrivateKey;
1079+ d2i_PublicKey;
1080+ d2i_RSAPrivateKey;
1081+ d2i_RSAPrivateKey_bio;
1082+ d2i_RSAPrivateKey_fp;
1083+ d2i_RSAPublicKey;
1084+ d2i_X509;
1085+ d2i_X509_ALGOR;
1086+ d2i_X509_ATTRIBUTE;
1087+ d2i_X509_CINF;
1088+ d2i_X509_CRL;
1089+ d2i_X509_CRL_INFO;
1090+ d2i_X509_CRL_bio;
1091+ d2i_X509_CRL_fp;
1092+ d2i_X509_EXTENSION;
1093+ d2i_X509_NAME;
1094+ d2i_X509_NAME_ENTRY;
1095+ d2i_X509_PKEY;
1096+ d2i_X509_PUBKEY;
1097+ d2i_X509_REQ;
1098+ d2i_X509_REQ_INFO;
1099+ d2i_X509_REQ_bio;
1100+ d2i_X509_REQ_fp;
1101+ d2i_X509_REVOKED;
1102+ d2i_X509_SIG;
1103+ d2i_X509_VAL;
1104+ d2i_X509_bio;
1105+ d2i_X509_fp;
1106+ DES_cbc_cksum;
1107+ DES_cbc_encrypt;
1108+ DES_cblock_print_file;
1109+ DES_cfb64_encrypt;
1110+ DES_cfb_encrypt;
1111+ DES_decrypt3;
1112+ DES_ecb3_encrypt;
1113+ DES_ecb_encrypt;
1114+ DES_ede3_cbc_encrypt;
1115+ DES_ede3_cfb64_encrypt;
1116+ DES_ede3_ofb64_encrypt;
1117+ DES_enc_read;
1118+ DES_enc_write;
1119+ DES_encrypt1;
1120+ DES_encrypt2;
1121+ DES_encrypt3;
1122+ DES_fcrypt;
1123+ DES_is_weak_key;
1124+ DES_key_sched;
1125+ DES_ncbc_encrypt;
1126+ DES_ofb64_encrypt;
1127+ DES_ofb_encrypt;
1128+ DES_options;
1129+ DES_pcbc_encrypt;
1130+ DES_quad_cksum;
1131+ DES_random_key;
1132+ _ossl_old_des_random_seed;
1133+ _ossl_old_des_read_2passwords;
1134+ _ossl_old_des_read_password;
1135+ _ossl_old_des_read_pw;
1136+ _ossl_old_des_read_pw_string;
1137+ DES_set_key;
1138+ DES_set_odd_parity;
1139+ DES_string_to_2keys;
1140+ DES_string_to_key;
1141+ DES_xcbc_encrypt;
1142+ DES_xwhite_in2out;
1143+ fcrypt_body;
1144+ i2a_ASN1_INTEGER;
1145+ i2a_ASN1_OBJECT;
1146+ i2a_ASN1_STRING;
1147+ i2d_ASN1_BIT_STRING;
1148+ i2d_ASN1_BOOLEAN;
1149+ i2d_ASN1_HEADER;
1150+ i2d_ASN1_IA5STRING;
1151+ i2d_ASN1_INTEGER;
1152+ i2d_ASN1_OBJECT;
1153+ i2d_ASN1_OCTET_STRING;
1154+ i2d_ASN1_PRINTABLE;
1155+ i2d_ASN1_SET;
1156+ i2d_ASN1_TYPE;
1157+ i2d_ASN1_UTCTIME;
1158+ i2d_ASN1_bytes;
1159+ i2d_DHparams;
1160+ i2d_DSAPrivateKey;
1161+ i2d_DSAPrivateKey_bio;
1162+ i2d_DSAPrivateKey_fp;
1163+ i2d_DSAPublicKey;
1164+ i2d_DSAparams;
1165+ i2d_NETSCAPE_SPKAC;
1166+ i2d_NETSCAPE_SPKI;
1167+ i2d_Netscape_RSA;
1168+ i2d_PKCS7;
1169+ i2d_PKCS7_DIGEST;
1170+ i2d_PKCS7_ENCRYPT;
1171+ i2d_PKCS7_ENC_CONTENT;
1172+ i2d_PKCS7_ENVELOPE;
1173+ i2d_PKCS7_ISSUER_AND_SERIAL;
1174+ i2d_PKCS7_RECIP_INFO;
1175+ i2d_PKCS7_SIGNED;
1176+ i2d_PKCS7_SIGNER_INFO;
1177+ i2d_PKCS7_SIGN_ENVELOPE;
1178+ i2d_PKCS7_bio;
1179+ i2d_PKCS7_fp;
1180+ i2d_PrivateKey;
1181+ i2d_PublicKey;
1182+ i2d_RSAPrivateKey;
1183+ i2d_RSAPrivateKey_bio;
1184+ i2d_RSAPrivateKey_fp;
1185+ i2d_RSAPublicKey;
1186+ i2d_X509;
1187+ i2d_X509_ALGOR;
1188+ i2d_X509_ATTRIBUTE;
1189+ i2d_X509_CINF;
1190+ i2d_X509_CRL;
1191+ i2d_X509_CRL_INFO;
1192+ i2d_X509_CRL_bio;
1193+ i2d_X509_CRL_fp;
1194+ i2d_X509_EXTENSION;
1195+ i2d_X509_NAME;
1196+ i2d_X509_NAME_ENTRY;
1197+ i2d_X509_PKEY;
1198+ i2d_X509_PUBKEY;
1199+ i2d_X509_REQ;
1200+ i2d_X509_REQ_INFO;
1201+ i2d_X509_REQ_bio;
1202+ i2d_X509_REQ_fp;
1203+ i2d_X509_REVOKED;
1204+ i2d_X509_SIG;
1205+ i2d_X509_VAL;
1206+ i2d_X509_bio;
1207+ i2d_X509_fp;
1208+ idea_cbc_encrypt;
1209+ idea_cfb64_encrypt;
1210+ idea_ecb_encrypt;
1211+ idea_encrypt;
1212+ idea_ofb64_encrypt;
1213+ idea_options;
1214+ idea_set_decrypt_key;
1215+ idea_set_encrypt_key;
1216+ lh_delete;
1217+ lh_doall;
1218+ lh_doall_arg;
1219+ lh_free;
1220+ lh_insert;
1221+ lh_new;
1222+ lh_node_stats;
1223+ lh_node_stats_bio;
1224+ lh_node_usage_stats;
1225+ lh_node_usage_stats_bio;
1226+ lh_retrieve;
1227+ lh_stats;
1228+ lh_stats_bio;
1229+ lh_strhash;
1230+ sk_delete;
1231+ sk_delete_ptr;
1232+ sk_dup;
1233+ sk_find;
1234+ sk_free;
1235+ sk_insert;
1236+ sk_new;
1237+ sk_pop;
1238+ sk_pop_free;
1239+ sk_push;
1240+ sk_set_cmp_func;
1241+ sk_shift;
1242+ sk_unshift;
1243+ sk_zero;
1244+ BIO_f_nbio_test;
1245+ ASN1_TYPE_get;
1246+ ASN1_TYPE_set;
1247+ PKCS7_content_free;
1248+ ERR_load_PKCS7_strings;
1249+ X509_find_by_issuer_and_serial;
1250+ X509_find_by_subject;
1251+ PKCS7_ctrl;
1252+ PKCS7_set_type;
1253+ PKCS7_set_content;
1254+ PKCS7_SIGNER_INFO_set;
1255+ PKCS7_add_signer;
1256+ PKCS7_add_certificate;
1257+ PKCS7_add_crl;
1258+ PKCS7_content_new;
1259+ PKCS7_dataSign;
1260+ PKCS7_dataVerify;
1261+ PKCS7_dataInit;
1262+ PKCS7_add_signature;
1263+ PKCS7_cert_from_signer_info;
1264+ PKCS7_get_signer_info;
1265+ EVP_delete_alias;
1266+ EVP_mdc2;
1267+ PEM_read_bio_RSAPublicKey;
1268+ PEM_write_bio_RSAPublicKey;
1269+ d2i_RSAPublicKey_bio;
1270+ i2d_RSAPublicKey_bio;
1271+ PEM_read_RSAPublicKey;
1272+ PEM_write_RSAPublicKey;
1273+ d2i_RSAPublicKey_fp;
1274+ i2d_RSAPublicKey_fp;
1275+ BIO_copy_next_retry;
1276+ RSA_flags;
1277+ X509_STORE_add_crl;
1278+ X509_load_crl_file;
1279+ EVP_rc2_40_cbc;
1280+ EVP_rc4_40;
1281+ EVP_CIPHER_CTX_init;
1282+ HMAC;
1283+ HMAC_Init;
1284+ HMAC_Update;
1285+ HMAC_Final;
1286+ ERR_get_next_error_library;
1287+ EVP_PKEY_cmp_parameters;
1288+ HMAC_cleanup;
1289+ BIO_ptr_ctrl;
1290+ BIO_new_file_internal;
1291+ BIO_new_fp_internal;
1292+ BIO_s_file_internal;
1293+ BN_BLINDING_convert;
1294+ BN_BLINDING_invert;
1295+ BN_BLINDING_update;
1296+ RSA_blinding_on;
1297+ RSA_blinding_off;
1298+ i2t_ASN1_OBJECT;
1299+ BN_BLINDING_new;
1300+ BN_BLINDING_free;
1301+ EVP_cast5_cbc;
1302+ EVP_cast5_cfb64;
1303+ EVP_cast5_ecb;
1304+ EVP_cast5_ofb;
1305+ BF_decrypt;
1306+ CAST_set_key;
1307+ CAST_encrypt;
1308+ CAST_decrypt;
1309+ CAST_ecb_encrypt;
1310+ CAST_cbc_encrypt;
1311+ CAST_cfb64_encrypt;
1312+ CAST_ofb64_encrypt;
1313+ RC2_decrypt;
1314+ OBJ_create_objects;
1315+ BN_exp;
1316+ BN_mul_word;
1317+ BN_sub_word;
1318+ BN_dec2bn;
1319+ BN_bn2dec;
1320+ BIO_ghbn_ctrl;
1321+ CRYPTO_free_ex_data;
1322+ CRYPTO_get_ex_data;
1323+ CRYPTO_set_ex_data;
1324+ ERR_load_CRYPTO_strings;
1325+ ERR_load_CRYPTOlib_strings;
1326+ EVP_PKEY_bits;
1327+ MD5_Transform;
1328+ SHA1_Transform;
1329+ SHA_Transform;
1330+ X509_STORE_CTX_get_chain;
1331+ X509_STORE_CTX_get_current_cert;
1332+ X509_STORE_CTX_get_error;
1333+ X509_STORE_CTX_get_error_depth;
1334+ X509_STORE_CTX_get_ex_data;
1335+ X509_STORE_CTX_set_cert;
1336+ X509_STORE_CTX_set_chain;
1337+ X509_STORE_CTX_set_error;
1338+ X509_STORE_CTX_set_ex_data;
1339+ CRYPTO_dup_ex_data;
1340+ CRYPTO_get_new_lockid;
1341+ CRYPTO_new_ex_data;
1342+ RSA_set_ex_data;
1343+ RSA_get_ex_data;
1344+ RSA_get_ex_new_index;
1345+ RSA_padding_add_PKCS1_type_1;
1346+ RSA_padding_add_PKCS1_type_2;
1347+ RSA_padding_add_SSLv23;
1348+ RSA_padding_add_none;
1349+ RSA_padding_check_PKCS1_type_1;
1350+ RSA_padding_check_PKCS1_type_2;
1351+ RSA_padding_check_SSLv23;
1352+ RSA_padding_check_none;
1353+ bn_add_words;
1354+ d2i_Netscape_RSA_2;
1355+ CRYPTO_get_ex_new_index;
1356+ RIPEMD160_Init;
1357+ RIPEMD160_Update;
1358+ RIPEMD160_Final;
1359+ RIPEMD160;
1360+ RIPEMD160_Transform;
1361+ RC5_32_set_key;
1362+ RC5_32_ecb_encrypt;
1363+ RC5_32_encrypt;
1364+ RC5_32_decrypt;
1365+ RC5_32_cbc_encrypt;
1366+ RC5_32_cfb64_encrypt;
1367+ RC5_32_ofb64_encrypt;
1368+ BN_bn2mpi;
1369+ BN_mpi2bn;
1370+ ASN1_BIT_STRING_get_bit;
1371+ ASN1_BIT_STRING_set_bit;
1372+ BIO_get_ex_data;
1373+ BIO_get_ex_new_index;
1374+ BIO_set_ex_data;
1375+ X509v3_get_key_usage;
1376+ X509v3_set_key_usage;
1377+ a2i_X509v3_key_usage;
1378+ i2a_X509v3_key_usage;
1379+ EVP_PKEY_decrypt;
1380+ EVP_PKEY_encrypt;
1381+ PKCS7_RECIP_INFO_set;
1382+ PKCS7_add_recipient;
1383+ PKCS7_add_recipient_info;
1384+ PKCS7_set_cipher;
1385+ ASN1_TYPE_get_int_octetstring;
1386+ ASN1_TYPE_get_octetstring;
1387+ ASN1_TYPE_set_int_octetstring;
1388+ ASN1_TYPE_set_octetstring;
1389+ ASN1_UTCTIME_set_string;
1390+ ERR_add_error_data;
1391+ ERR_set_error_data;
1392+ EVP_CIPHER_asn1_to_param;
1393+ EVP_CIPHER_param_to_asn1;
1394+ EVP_CIPHER_get_asn1_iv;
1395+ EVP_CIPHER_set_asn1_iv;
1396+ EVP_rc5_32_12_16_cbc;
1397+ EVP_rc5_32_12_16_cfb64;
1398+ EVP_rc5_32_12_16_ecb;
1399+ EVP_rc5_32_12_16_ofb;
1400+ asn1_add_error;
1401+ d2i_ASN1_BMPSTRING;
1402+ i2d_ASN1_BMPSTRING;
1403+ BIO_f_ber;
1404+ BN_init;
1405+ COMP_CTX_new;
1406+ COMP_CTX_free;
1407+ COMP_CTX_compress_block;
1408+ COMP_CTX_expand_block;
1409+ X509_STORE_CTX_get_ex_new_index;
1410+ OBJ_NAME_add;
1411+ BIO_socket_nbio;
1412+ EVP_rc2_64_cbc;
1413+ OBJ_NAME_cleanup;
1414+ OBJ_NAME_get;
1415+ OBJ_NAME_init;
1416+ OBJ_NAME_new_index;
1417+ OBJ_NAME_remove;
1418+ BN_MONT_CTX_copy;
1419+ BIO_new_socks4a_connect;
1420+ BIO_s_socks4a_connect;
1421+ PROXY_set_connect_mode;
1422+ RAND_SSLeay;
1423+ RAND_set_rand_method;
1424+ RSA_memory_lock;
1425+ bn_sub_words;
1426+ bn_mul_normal;
1427+ bn_mul_comba8;
1428+ bn_mul_comba4;
1429+ bn_sqr_normal;
1430+ bn_sqr_comba8;
1431+ bn_sqr_comba4;
1432+ bn_cmp_words;
1433+ bn_mul_recursive;
1434+ bn_mul_part_recursive;
1435+ bn_sqr_recursive;
1436+ bn_mul_low_normal;
1437+ BN_RECP_CTX_init;
1438+ BN_RECP_CTX_new;
1439+ BN_RECP_CTX_free;
1440+ BN_RECP_CTX_set;
1441+ BN_mod_mul_reciprocal;
1442+ BN_mod_exp_recp;
1443+ BN_div_recp;
1444+ BN_CTX_init;
1445+ BN_MONT_CTX_init;
1446+ RAND_get_rand_method;
1447+ PKCS7_add_attribute;
1448+ PKCS7_add_signed_attribute;
1449+ PKCS7_digest_from_attributes;
1450+ PKCS7_get_attribute;
1451+ PKCS7_get_issuer_and_serial;
1452+ PKCS7_get_signed_attribute;
1453+ COMP_compress_block;
1454+ COMP_expand_block;
1455+ COMP_rle;
1456+ COMP_zlib;
1457+ ms_time_diff;
1458+ ms_time_new;
1459+ ms_time_free;
1460+ ms_time_cmp;
1461+ ms_time_get;
1462+ PKCS7_set_attributes;
1463+ PKCS7_set_signed_attributes;
1464+ X509_ATTRIBUTE_create;
1465+ X509_ATTRIBUTE_dup;
1466+ ASN1_GENERALIZEDTIME_check;
1467+ ASN1_GENERALIZEDTIME_print;
1468+ ASN1_GENERALIZEDTIME_set;
1469+ ASN1_GENERALIZEDTIME_set_string;
1470+ ASN1_TIME_print;
1471+ BASIC_CONSTRAINTS_free;
1472+ BASIC_CONSTRAINTS_new;
1473+ ERR_load_X509V3_strings;
1474+ NETSCAPE_CERT_SEQUENCE_free;
1475+ NETSCAPE_CERT_SEQUENCE_new;
1476+ OBJ_txt2obj;
1477+ PEM_read_NETSCAPE_CERT_SEQUENCE;
1478+ PEM_read_NS_CERT_SEQ;
1479+ PEM_read_bio_NETSCAPE_CERT_SEQUENCE;
1480+ PEM_read_bio_NS_CERT_SEQ;
1481+ PEM_write_NETSCAPE_CERT_SEQUENCE;
1482+ PEM_write_NS_CERT_SEQ;
1483+ PEM_write_bio_NETSCAPE_CERT_SEQUENCE;
1484+ PEM_write_bio_NS_CERT_SEQ;
1485+ X509V3_EXT_add;
1486+ X509V3_EXT_add_alias;
1487+ X509V3_EXT_add_conf;
1488+ X509V3_EXT_cleanup;
1489+ X509V3_EXT_conf;
1490+ X509V3_EXT_conf_nid;
1491+ X509V3_EXT_get;
1492+ X509V3_EXT_get_nid;
1493+ X509V3_EXT_print;
1494+ X509V3_EXT_print_fp;
1495+ X509V3_add_standard_extensions;
1496+ X509V3_add_value;
1497+ X509V3_add_value_bool;
1498+ X509V3_add_value_int;
1499+ X509V3_conf_free;
1500+ X509V3_get_value_bool;
1501+ X509V3_get_value_int;
1502+ X509V3_parse_list;
1503+ d2i_ASN1_GENERALIZEDTIME;
1504+ d2i_ASN1_TIME;
1505+ d2i_BASIC_CONSTRAINTS;
1506+ d2i_NETSCAPE_CERT_SEQUENCE;
1507+ d2i_ext_ku;
1508+ ext_ku_free;
1509+ ext_ku_new;
1510+ i2d_ASN1_GENERALIZEDTIME;
1511+ i2d_ASN1_TIME;
1512+ i2d_BASIC_CONSTRAINTS;
1513+ i2d_NETSCAPE_CERT_SEQUENCE;
1514+ i2d_ext_ku;
1515+ EVP_MD_CTX_copy;
1516+ i2d_ASN1_ENUMERATED;
1517+ d2i_ASN1_ENUMERATED;
1518+ ASN1_ENUMERATED_set;
1519+ ASN1_ENUMERATED_get;
1520+ BN_to_ASN1_ENUMERATED;
1521+ ASN1_ENUMERATED_to_BN;
1522+ i2a_ASN1_ENUMERATED;
1523+ a2i_ASN1_ENUMERATED;
1524+ i2d_GENERAL_NAME;
1525+ d2i_GENERAL_NAME;
1526+ GENERAL_NAME_new;
1527+ GENERAL_NAME_free;
1528+ GENERAL_NAMES_new;
1529+ GENERAL_NAMES_free;
1530+ d2i_GENERAL_NAMES;
1531+ i2d_GENERAL_NAMES;
1532+ i2v_GENERAL_NAMES;
1533+ i2s_ASN1_OCTET_STRING;
1534+ s2i_ASN1_OCTET_STRING;
1535+ X509V3_EXT_check_conf;
1536+ hex_to_string;
1537+ string_to_hex;
1538+ DES_ede3_cbcm_encrypt;
1539+ RSA_padding_add_PKCS1_OAEP;
1540+ RSA_padding_check_PKCS1_OAEP;
1541+ X509_CRL_print_fp;
1542+ X509_CRL_print;
1543+ i2v_GENERAL_NAME;
1544+ v2i_GENERAL_NAME;
1545+ i2d_PKEY_USAGE_PERIOD;
1546+ d2i_PKEY_USAGE_PERIOD;
1547+ PKEY_USAGE_PERIOD_new;
1548+ PKEY_USAGE_PERIOD_free;
1549+ v2i_GENERAL_NAMES;
1550+ i2s_ASN1_INTEGER;
1551+ X509V3_EXT_d2i;
1552+ name_cmp;
1553+ str_dup;
1554+ i2s_ASN1_ENUMERATED;
1555+ i2s_ASN1_ENUMERATED_TABLE;
1556+ BIO_s_log;
1557+ BIO_f_reliable;
1558+ PKCS7_dataFinal;
1559+ PKCS7_dataDecode;
1560+ X509V3_EXT_CRL_add_conf;
1561+ BN_set_params;
1562+ BN_get_params;
1563+ BIO_get_ex_num;
1564+ BIO_set_ex_free_func;
1565+ EVP_ripemd160;
1566+ ASN1_TIME_set;
1567+ i2d_AUTHORITY_KEYID;
1568+ d2i_AUTHORITY_KEYID;
1569+ AUTHORITY_KEYID_new;
1570+ AUTHORITY_KEYID_free;
1571+ ASN1_seq_unpack;
1572+ ASN1_seq_pack;
1573+ ASN1_unpack_string;
1574+ ASN1_pack_string;
1575+ PKCS12_pack_safebag;
1576+ PKCS12_MAKE_KEYBAG;
1577+ PKCS8_encrypt;
1578+ PKCS12_MAKE_SHKEYBAG;
1579+ PKCS12_pack_p7data;
1580+ PKCS12_pack_p7encdata;
1581+ PKCS12_add_localkeyid;
1582+ PKCS12_add_friendlyname_asc;
1583+ PKCS12_add_friendlyname_uni;
1584+ PKCS12_get_friendlyname;
1585+ PKCS12_pbe_crypt;
1586+ PKCS12_decrypt_d2i;
1587+ PKCS12_i2d_encrypt;
1588+ PKCS12_init;
1589+ PKCS12_key_gen_asc;
1590+ PKCS12_key_gen_uni;
1591+ PKCS12_gen_mac;
1592+ PKCS12_verify_mac;
1593+ PKCS12_set_mac;
1594+ PKCS12_setup_mac;
1595+ OPENSSL_asc2uni;
1596+ OPENSSL_uni2asc;
1597+ i2d_PKCS12_BAGS;
1598+ PKCS12_BAGS_new;
1599+ d2i_PKCS12_BAGS;
1600+ PKCS12_BAGS_free;
1601+ i2d_PKCS12;
1602+ d2i_PKCS12;
1603+ PKCS12_new;
1604+ PKCS12_free;
1605+ i2d_PKCS12_MAC_DATA;
1606+ PKCS12_MAC_DATA_new;
1607+ d2i_PKCS12_MAC_DATA;
1608+ PKCS12_MAC_DATA_free;
1609+ i2d_PKCS12_SAFEBAG;
1610+ PKCS12_SAFEBAG_new;
1611+ d2i_PKCS12_SAFEBAG;
1612+ PKCS12_SAFEBAG_free;
1613+ ERR_load_PKCS12_strings;
1614+ PKCS12_PBE_add;
1615+ PKCS8_add_keyusage;
1616+ PKCS12_get_attr_gen;
1617+ PKCS12_parse;
1618+ PKCS12_create;
1619+ i2d_PKCS12_bio;
1620+ i2d_PKCS12_fp;
1621+ d2i_PKCS12_bio;
1622+ d2i_PKCS12_fp;
1623+ i2d_PBEPARAM;
1624+ PBEPARAM_new;
1625+ d2i_PBEPARAM;
1626+ PBEPARAM_free;
1627+ i2d_PKCS8_PRIV_KEY_INFO;
1628+ PKCS8_PRIV_KEY_INFO_new;
1629+ d2i_PKCS8_PRIV_KEY_INFO;
1630+ PKCS8_PRIV_KEY_INFO_free;
1631+ EVP_PKCS82PKEY;
1632+ EVP_PKEY2PKCS8;
1633+ PKCS8_set_broken;
1634+ EVP_PBE_ALGOR_CipherInit;
1635+ EVP_PBE_alg_add;
1636+ PKCS5_pbe_set;
1637+ EVP_PBE_cleanup;
1638+ i2d_SXNET;
1639+ d2i_SXNET;
1640+ SXNET_new;
1641+ SXNET_free;
1642+ i2d_SXNETID;
1643+ d2i_SXNETID;
1644+ SXNETID_new;
1645+ SXNETID_free;
1646+ DSA_SIG_new;
1647+ DSA_SIG_free;
1648+ DSA_do_sign;
1649+ DSA_do_verify;
1650+ d2i_DSA_SIG;
1651+ i2d_DSA_SIG;
1652+ i2d_ASN1_VISIBLESTRING;
1653+ d2i_ASN1_VISIBLESTRING;
1654+ i2d_ASN1_UTF8STRING;
1655+ d2i_ASN1_UTF8STRING;
1656+ i2d_DIRECTORYSTRING;
1657+ d2i_DIRECTORYSTRING;
1658+ i2d_DISPLAYTEXT;
1659+ d2i_DISPLAYTEXT;
1660+ d2i_ASN1_SET_OF_X509;
1661+ i2d_ASN1_SET_OF_X509;
1662+ i2d_PBKDF2PARAM;
1663+ PBKDF2PARAM_new;
1664+ d2i_PBKDF2PARAM;
1665+ PBKDF2PARAM_free;
1666+ i2d_PBE2PARAM;
1667+ PBE2PARAM_new;
1668+ d2i_PBE2PARAM;
1669+ PBE2PARAM_free;
1670+ d2i_ASN1_SET_OF_GENERAL_NAME;
1671+ i2d_ASN1_SET_OF_GENERAL_NAME;
1672+ d2i_ASN1_SET_OF_SXNETID;
1673+ i2d_ASN1_SET_OF_SXNETID;
1674+ d2i_ASN1_SET_OF_POLICYQUALINFO;
1675+ i2d_ASN1_SET_OF_POLICYQUALINFO;
1676+ d2i_ASN1_SET_OF_POLICYINFO;
1677+ i2d_ASN1_SET_OF_POLICYINFO;
1678+ SXNET_add_id_asc;
1679+ SXNET_add_id_ulong;
1680+ SXNET_add_id_INTEGER;
1681+ SXNET_get_id_asc;
1682+ SXNET_get_id_ulong;
1683+ SXNET_get_id_INTEGER;
1684+ X509V3_set_conf_lhash;
1685+ i2d_CERTIFICATEPOLICIES;
1686+ CERTIFICATEPOLICIES_new;
1687+ CERTIFICATEPOLICIES_free;
1688+ d2i_CERTIFICATEPOLICIES;
1689+ i2d_POLICYINFO;
1690+ POLICYINFO_new;
1691+ d2i_POLICYINFO;
1692+ POLICYINFO_free;
1693+ i2d_POLICYQUALINFO;
1694+ POLICYQUALINFO_new;
1695+ d2i_POLICYQUALINFO;
1696+ POLICYQUALINFO_free;
1697+ i2d_USERNOTICE;
1698+ USERNOTICE_new;
1699+ d2i_USERNOTICE;
1700+ USERNOTICE_free;
1701+ i2d_NOTICEREF;
1702+ NOTICEREF_new;
1703+ d2i_NOTICEREF;
1704+ NOTICEREF_free;
1705+ X509V3_get_string;
1706+ X509V3_get_section;
1707+ X509V3_string_free;
1708+ X509V3_section_free;
1709+ X509V3_set_ctx;
1710+ s2i_ASN1_INTEGER;
1711+ CRYPTO_set_locked_mem_functions;
1712+ CRYPTO_get_locked_mem_functions;
1713+ CRYPTO_malloc_locked;
1714+ CRYPTO_free_locked;
1715+ BN_mod_exp2_mont;
1716+ ERR_get_error_line_data;
1717+ ERR_peek_error_line_data;
1718+ PKCS12_PBE_keyivgen;
1719+ X509_ALGOR_dup;
1720+ d2i_ASN1_SET_OF_DIST_POINT;
1721+ i2d_ASN1_SET_OF_DIST_POINT;
1722+ i2d_CRL_DIST_POINTS;
1723+ CRL_DIST_POINTS_new;
1724+ CRL_DIST_POINTS_free;
1725+ d2i_CRL_DIST_POINTS;
1726+ i2d_DIST_POINT;
1727+ DIST_POINT_new;
1728+ d2i_DIST_POINT;
1729+ DIST_POINT_free;
1730+ i2d_DIST_POINT_NAME;
1731+ DIST_POINT_NAME_new;
1732+ DIST_POINT_NAME_free;
1733+ d2i_DIST_POINT_NAME;
1734+ X509V3_add_value_uchar;
1735+ d2i_ASN1_SET_OF_X509_ATTRIBUTE;
1736+ i2d_ASN1_SET_OF_ASN1_TYPE;
1737+ d2i_ASN1_SET_OF_X509_EXTENSION;
1738+ d2i_ASN1_SET_OF_X509_NAME_ENTRY;
1739+ d2i_ASN1_SET_OF_ASN1_TYPE;
1740+ i2d_ASN1_SET_OF_X509_ATTRIBUTE;
1741+ i2d_ASN1_SET_OF_X509_EXTENSION;
1742+ i2d_ASN1_SET_OF_X509_NAME_ENTRY;
1743+ X509V3_EXT_i2d;
1744+ X509V3_EXT_val_prn;
1745+ X509V3_EXT_add_list;
1746+ EVP_CIPHER_type;
1747+ EVP_PBE_CipherInit;
1748+ X509V3_add_value_bool_nf;
1749+ d2i_ASN1_UINTEGER;
1750+ sk_value;
1751+ sk_num;
1752+ sk_set;
1753+ i2d_ASN1_SET_OF_X509_REVOKED;
1754+ sk_sort;
1755+ d2i_ASN1_SET_OF_X509_REVOKED;
1756+ i2d_ASN1_SET_OF_X509_ALGOR;
1757+ i2d_ASN1_SET_OF_X509_CRL;
1758+ d2i_ASN1_SET_OF_X509_ALGOR;
1759+ d2i_ASN1_SET_OF_X509_CRL;
1760+ i2d_ASN1_SET_OF_PKCS7_SIGNER_INFO;
1761+ i2d_ASN1_SET_OF_PKCS7_RECIP_INFO;
1762+ d2i_ASN1_SET_OF_PKCS7_SIGNER_INFO;
1763+ d2i_ASN1_SET_OF_PKCS7_RECIP_INFO;
1764+ PKCS5_PBE_add;
1765+ PEM_write_bio_PKCS8;
1766+ i2d_PKCS8_fp;
1767+ PEM_read_bio_PKCS8_PRIV_KEY_INFO;
1768+ PEM_read_bio_P8_PRIV_KEY_INFO;
1769+ d2i_PKCS8_bio;
1770+ d2i_PKCS8_PRIV_KEY_INFO_fp;
1771+ PEM_write_bio_PKCS8_PRIV_KEY_INFO;
1772+ PEM_write_bio_P8_PRIV_KEY_INFO;
1773+ PEM_read_PKCS8;
1774+ d2i_PKCS8_PRIV_KEY_INFO_bio;
1775+ d2i_PKCS8_fp;
1776+ PEM_write_PKCS8;
1777+ PEM_read_PKCS8_PRIV_KEY_INFO;
1778+ PEM_read_P8_PRIV_KEY_INFO;
1779+ PEM_read_bio_PKCS8;
1780+ PEM_write_PKCS8_PRIV_KEY_INFO;
1781+ PEM_write_P8_PRIV_KEY_INFO;
1782+ PKCS5_PBE_keyivgen;
1783+ i2d_PKCS8_bio;
1784+ i2d_PKCS8_PRIV_KEY_INFO_fp;
1785+ i2d_PKCS8_PRIV_KEY_INFO_bio;
1786+ BIO_s_bio;
1787+ PKCS5_pbe2_set;
1788+ PKCS5_PBKDF2_HMAC_SHA1;
1789+ PKCS5_v2_PBE_keyivgen;
1790+ PEM_write_bio_PKCS8PrivateKey;
1791+ PEM_write_PKCS8PrivateKey;
1792+ BIO_ctrl_get_read_request;
1793+ BIO_ctrl_pending;
1794+ BIO_ctrl_wpending;
1795+ BIO_new_bio_pair;
1796+ BIO_ctrl_get_write_guarantee;
1797+ CRYPTO_num_locks;
1798+ CONF_load_bio;
1799+ CONF_load_fp;
1800+ i2d_ASN1_SET_OF_ASN1_OBJECT;
1801+ d2i_ASN1_SET_OF_ASN1_OBJECT;
1802+ PKCS7_signatureVerify;
1803+ RSA_set_method;
1804+ RSA_get_method;
1805+ RSA_get_default_method;
1806+ RSA_check_key;
1807+ OBJ_obj2txt;
1808+ DSA_dup_DH;
1809+ X509_REQ_get_extensions;
1810+ X509_REQ_set_extension_nids;
1811+ BIO_nwrite;
1812+ X509_REQ_extension_nid;
1813+ BIO_nread;
1814+ X509_REQ_get_extension_nids;
1815+ BIO_nwrite0;
1816+ X509_REQ_add_extensions_nid;
1817+ BIO_nread0;
1818+ X509_REQ_add_extensions;
1819+ BIO_new_mem_buf;
1820+ DH_set_ex_data;
1821+ DH_set_method;
1822+ DSA_OpenSSL;
1823+ DH_get_ex_data;
1824+ DH_get_ex_new_index;
1825+ DSA_new_method;
1826+ DH_new_method;
1827+ DH_OpenSSL;
1828+ DSA_get_ex_new_index;
1829+ DH_get_default_method;
1830+ DSA_set_ex_data;
1831+ DH_set_default_method;
1832+ DSA_get_ex_data;
1833+ X509V3_EXT_REQ_add_conf;
1834+ NETSCAPE_SPKI_print;
1835+ NETSCAPE_SPKI_set_pubkey;
1836+ NETSCAPE_SPKI_b64_encode;
1837+ NETSCAPE_SPKI_get_pubkey;
1838+ NETSCAPE_SPKI_b64_decode;
1839+ UTF8_putc;
1840+ UTF8_getc;
1841+ RSA_null_method;
1842+ ASN1_tag2str;
1843+ BIO_ctrl_reset_read_request;
1844+ DISPLAYTEXT_new;
1845+ ASN1_GENERALIZEDTIME_free;
1846+ X509_REVOKED_get_ext_d2i;
1847+ X509_set_ex_data;
1848+ X509_reject_set_bit_asc;
1849+ X509_NAME_add_entry_by_txt;
1850+ X509_NAME_add_entry_by_NID;
1851+ X509_PURPOSE_get0;
1852+ PEM_read_X509_AUX;
1853+ d2i_AUTHORITY_INFO_ACCESS;
1854+ PEM_write_PUBKEY;
1855+ ACCESS_DESCRIPTION_new;
1856+ X509_CERT_AUX_free;
1857+ d2i_ACCESS_DESCRIPTION;
1858+ X509_trust_clear;
1859+ X509_TRUST_add;
1860+ ASN1_VISIBLESTRING_new;
1861+ X509_alias_set1;
1862+ ASN1_PRINTABLESTRING_free;
1863+ EVP_PKEY_get1_DSA;
1864+ ASN1_BMPSTRING_new;
1865+ ASN1_mbstring_copy;
1866+ ASN1_UTF8STRING_new;
1867+ DSA_get_default_method;
1868+ i2d_ASN1_SET_OF_ACCESS_DESCRIPTION;
1869+ ASN1_T61STRING_free;
1870+ DSA_set_method;
1871+ X509_get_ex_data;
1872+ ASN1_STRING_type;
1873+ X509_PURPOSE_get_by_sname;
1874+ ASN1_TIME_free;
1875+ ASN1_OCTET_STRING_cmp;
1876+ ASN1_BIT_STRING_new;
1877+ X509_get_ext_d2i;
1878+ PEM_read_bio_X509_AUX;
1879+ ASN1_STRING_set_default_mask_asc;
1880+ ASN1_STRING_set_def_mask_asc;
1881+ PEM_write_bio_RSA_PUBKEY;
1882+ ASN1_INTEGER_cmp;
1883+ d2i_RSA_PUBKEY_fp;
1884+ X509_trust_set_bit_asc;
1885+ PEM_write_bio_DSA_PUBKEY;
1886+ X509_STORE_CTX_free;
1887+ EVP_PKEY_set1_DSA;
1888+ i2d_DSA_PUBKEY_fp;
1889+ X509_load_cert_crl_file;
1890+ ASN1_TIME_new;
1891+ i2d_RSA_PUBKEY;
1892+ X509_STORE_CTX_purpose_inherit;
1893+ PEM_read_RSA_PUBKEY;
1894+ d2i_X509_AUX;
1895+ i2d_DSA_PUBKEY;
1896+ X509_CERT_AUX_print;
1897+ PEM_read_DSA_PUBKEY;
1898+ i2d_RSA_PUBKEY_bio;
1899+ ASN1_BIT_STRING_num_asc;
1900+ i2d_PUBKEY;
1901+ ASN1_UTCTIME_free;
1902+ DSA_set_default_method;
1903+ X509_PURPOSE_get_by_id;
1904+ ACCESS_DESCRIPTION_free;
1905+ PEM_read_bio_PUBKEY;
1906+ ASN1_STRING_set_by_NID;
1907+ X509_PURPOSE_get_id;
1908+ DISPLAYTEXT_free;
1909+ OTHERNAME_new;
1910+ X509_CERT_AUX_new;
1911+ X509_TRUST_cleanup;
1912+ X509_NAME_add_entry_by_OBJ;
1913+ X509_CRL_get_ext_d2i;
1914+ X509_PURPOSE_get0_name;
1915+ PEM_read_PUBKEY;
1916+ i2d_DSA_PUBKEY_bio;
1917+ i2d_OTHERNAME;
1918+ ASN1_OCTET_STRING_free;
1919+ ASN1_BIT_STRING_set_asc;
1920+ X509_get_ex_new_index;
1921+ ASN1_STRING_TABLE_cleanup;
1922+ X509_TRUST_get_by_id;
1923+ X509_PURPOSE_get_trust;
1924+ ASN1_STRING_length;
1925+ d2i_ASN1_SET_OF_ACCESS_DESCRIPTION;
1926+ ASN1_PRINTABLESTRING_new;
1927+ X509V3_get_d2i;
1928+ ASN1_ENUMERATED_free;
1929+ i2d_X509_CERT_AUX;
1930+ X509_STORE_CTX_set_trust;
1931+ ASN1_STRING_set_default_mask;
1932+ X509_STORE_CTX_new;
1933+ EVP_PKEY_get1_RSA;
1934+ DIRECTORYSTRING_free;
1935+ PEM_write_X509_AUX;
1936+ ASN1_OCTET_STRING_set;
1937+ d2i_DSA_PUBKEY_fp;
1938+ d2i_RSA_PUBKEY;
1939+ X509_TRUST_get0_name;
1940+ X509_TRUST_get0;
1941+ AUTHORITY_INFO_ACCESS_free;
1942+ ASN1_IA5STRING_new;
1943+ d2i_DSA_PUBKEY;
1944+ X509_check_purpose;
1945+ ASN1_ENUMERATED_new;
1946+ d2i_RSA_PUBKEY_bio;
1947+ d2i_PUBKEY;
1948+ X509_TRUST_get_trust;
1949+ X509_TRUST_get_flags;
1950+ ASN1_BMPSTRING_free;
1951+ ASN1_T61STRING_new;
1952+ ASN1_UTCTIME_new;
1953+ i2d_AUTHORITY_INFO_ACCESS;
1954+ EVP_PKEY_set1_RSA;
1955+ X509_STORE_CTX_set_purpose;
1956+ ASN1_IA5STRING_free;
1957+ PEM_write_bio_X509_AUX;
1958+ X509_PURPOSE_get_count;
1959+ CRYPTO_add_info;
1960+ X509_NAME_ENTRY_create_by_txt;
1961+ ASN1_STRING_get_default_mask;
1962+ X509_alias_get0;
1963+ ASN1_STRING_data;
1964+ i2d_ACCESS_DESCRIPTION;
1965+ X509_trust_set_bit;
1966+ ASN1_BIT_STRING_free;
1967+ PEM_read_bio_RSA_PUBKEY;
1968+ X509_add1_reject_object;
1969+ X509_check_trust;
1970+ PEM_read_bio_DSA_PUBKEY;
1971+ X509_PURPOSE_add;
1972+ ASN1_STRING_TABLE_get;
1973+ ASN1_UTF8STRING_free;
1974+ d2i_DSA_PUBKEY_bio;
1975+ PEM_write_RSA_PUBKEY;
1976+ d2i_OTHERNAME;
1977+ X509_reject_set_bit;
1978+ PEM_write_DSA_PUBKEY;
1979+ X509_PURPOSE_get0_sname;
1980+ EVP_PKEY_set1_DH;
1981+ ASN1_OCTET_STRING_dup;
1982+ ASN1_BIT_STRING_set;
1983+ X509_TRUST_get_count;
1984+ ASN1_INTEGER_free;
1985+ OTHERNAME_free;
1986+ i2d_RSA_PUBKEY_fp;
1987+ ASN1_INTEGER_dup;
1988+ d2i_X509_CERT_AUX;
1989+ PEM_write_bio_PUBKEY;
1990+ ASN1_VISIBLESTRING_free;
1991+ X509_PURPOSE_cleanup;
1992+ ASN1_mbstring_ncopy;
1993+ ASN1_GENERALIZEDTIME_new;
1994+ EVP_PKEY_get1_DH;
1995+ ASN1_OCTET_STRING_new;
1996+ ASN1_INTEGER_new;
1997+ i2d_X509_AUX;
1998+ ASN1_BIT_STRING_name_print;
1999+ X509_cmp;
2000+ ASN1_STRING_length_set;
2001+ DIRECTORYSTRING_new;
2002+ X509_add1_trust_object;
2003+ PKCS12_newpass;
2004+ SMIME_write_PKCS7;
2005+ SMIME_read_PKCS7;
2006+ DES_set_key_checked;
2007+ PKCS7_verify;
2008+ PKCS7_encrypt;
2009+ DES_set_key_unchecked;
2010+ SMIME_crlf_copy;
2011+ i2d_ASN1_PRINTABLESTRING;
2012+ PKCS7_get0_signers;
2013+ PKCS7_decrypt;
2014+ SMIME_text;
2015+ PKCS7_simple_smimecap;
2016+ PKCS7_get_smimecap;
2017+ PKCS7_sign;
2018+ PKCS7_add_attrib_smimecap;
2019+ CRYPTO_dbg_set_options;
2020+ CRYPTO_remove_all_info;
2021+ CRYPTO_get_mem_debug_functions;
2022+ CRYPTO_is_mem_check_on;
2023+ CRYPTO_set_mem_debug_functions;
2024+ CRYPTO_pop_info;
2025+ CRYPTO_push_info_;
2026+ CRYPTO_set_mem_debug_options;
2027+ PEM_write_PKCS8PrivateKey_nid;
2028+ PEM_write_bio_PKCS8PrivateKey_nid;
2029+ PEM_write_bio_PKCS8PrivKey_nid;
2030+ d2i_PKCS8PrivateKey_bio;
2031+ ASN1_NULL_free;
2032+ d2i_ASN1_NULL;
2033+ ASN1_NULL_new;
2034+ i2d_PKCS8PrivateKey_bio;
2035+ i2d_PKCS8PrivateKey_fp;
2036+ i2d_ASN1_NULL;
2037+ i2d_PKCS8PrivateKey_nid_fp;
2038+ d2i_PKCS8PrivateKey_fp;
2039+ i2d_PKCS8PrivateKey_nid_bio;
2040+ i2d_PKCS8PrivateKeyInfo_fp;
2041+ i2d_PKCS8PrivateKeyInfo_bio;
2042+ PEM_cb;
2043+ i2d_PrivateKey_fp;
2044+ d2i_PrivateKey_bio;
2045+ d2i_PrivateKey_fp;
2046+ i2d_PrivateKey_bio;
2047+ X509_reject_clear;
2048+ X509_TRUST_set_default;
2049+ d2i_AutoPrivateKey;
2050+ X509_ATTRIBUTE_get0_type;
2051+ X509_ATTRIBUTE_set1_data;
2052+ X509at_get_attr;
2053+ X509at_get_attr_count;
2054+ X509_ATTRIBUTE_create_by_NID;
2055+ X509_ATTRIBUTE_set1_object;
2056+ X509_ATTRIBUTE_count;
2057+ X509_ATTRIBUTE_create_by_OBJ;
2058+ X509_ATTRIBUTE_get0_object;
2059+ X509at_get_attr_by_NID;
2060+ X509at_add1_attr;
2061+ X509_ATTRIBUTE_get0_data;
2062+ X509at_delete_attr;
2063+ X509at_get_attr_by_OBJ;
2064+ RAND_add;
2065+ BIO_number_written;
2066+ BIO_number_read;
2067+ X509_STORE_CTX_get1_chain;
2068+ ERR_load_RAND_strings;
2069+ RAND_pseudo_bytes;
2070+ X509_REQ_get_attr_by_NID;
2071+ X509_REQ_get_attr;
2072+ X509_REQ_add1_attr_by_NID;
2073+ X509_REQ_get_attr_by_OBJ;
2074+ X509at_add1_attr_by_NID;
2075+ X509_REQ_add1_attr_by_OBJ;
2076+ X509_REQ_get_attr_count;
2077+ X509_REQ_add1_attr;
2078+ X509_REQ_delete_attr;
2079+ X509at_add1_attr_by_OBJ;
2080+ X509_REQ_add1_attr_by_txt;
2081+ X509_ATTRIBUTE_create_by_txt;
2082+ X509at_add1_attr_by_txt;
2083+ BN_pseudo_rand;
2084+ BN_is_prime_fasttest;
2085+ BN_CTX_end;
2086+ BN_CTX_start;
2087+ BN_CTX_get;
2088+ EVP_PKEY2PKCS8_broken;
2089+ ASN1_STRING_TABLE_add;
2090+ CRYPTO_dbg_get_options;
2091+ AUTHORITY_INFO_ACCESS_new;
2092+ CRYPTO_get_mem_debug_options;
2093+ DES_crypt;
2094+ PEM_write_bio_X509_REQ_NEW;
2095+ PEM_write_X509_REQ_NEW;
2096+ BIO_callback_ctrl;
2097+ RAND_egd;
2098+ RAND_status;
2099+ bn_dump1;
2100+ DES_check_key_parity;
2101+ lh_num_items;
2102+ RAND_event;
2103+ DSO_new;
2104+ DSO_new_method;
2105+ DSO_free;
2106+ DSO_flags;
2107+ DSO_up;
2108+ DSO_set_default_method;
2109+ DSO_get_default_method;
2110+ DSO_get_method;
2111+ DSO_set_method;
2112+ DSO_load;
2113+ DSO_bind_var;
2114+ DSO_METHOD_null;
2115+ DSO_METHOD_openssl;
2116+ DSO_METHOD_dlfcn;
2117+ DSO_METHOD_win32;
2118+ ERR_load_DSO_strings;
2119+ DSO_METHOD_dl;
2120+ NCONF_load;
2121+ NCONF_load_fp;
2122+ NCONF_new;
2123+ NCONF_get_string;
2124+ NCONF_free;
2125+ NCONF_get_number;
2126+ CONF_dump_fp;
2127+ NCONF_load_bio;
2128+ NCONF_dump_fp;
2129+ NCONF_get_section;
2130+ NCONF_dump_bio;
2131+ CONF_dump_bio;
2132+ NCONF_free_data;
2133+ CONF_set_default_method;
2134+ ERR_error_string_n;
2135+ BIO_snprintf;
2136+ DSO_ctrl;
2137+ i2d_ASN1_SET_OF_ASN1_INTEGER;
2138+ i2d_ASN1_SET_OF_PKCS12_SAFEBAG;
2139+ i2d_ASN1_SET_OF_PKCS7;
2140+ BIO_vfree;
2141+ d2i_ASN1_SET_OF_ASN1_INTEGER;
2142+ d2i_ASN1_SET_OF_PKCS12_SAFEBAG;
2143+ ASN1_UTCTIME_get;
2144+ X509_REQ_digest;
2145+ X509_CRL_digest;
2146+ d2i_ASN1_SET_OF_PKCS7;
2147+ EVP_CIPHER_CTX_set_key_length;
2148+ EVP_CIPHER_CTX_ctrl;
2149+ BN_mod_exp_mont_word;
2150+ RAND_egd_bytes;
2151+ X509_REQ_get1_email;
2152+ X509_get1_email;
2153+ X509_email_free;
2154+ i2d_RSA_NET;
2155+ d2i_RSA_NET_2;
2156+ d2i_RSA_NET;
2157+ DSO_bind_func;
2158+ CRYPTO_get_new_dynlockid;
2159+ sk_new_null;
2160+ CRYPTO_set_dynlock_destroy_callback;
2161+ CRYPTO_set_dynlock_destroy_cb;
2162+ CRYPTO_destroy_dynlockid;
2163+ CRYPTO_set_dynlock_size;
2164+ CRYPTO_set_dynlock_create_callback;
2165+ CRYPTO_set_dynlock_create_cb;
2166+ CRYPTO_set_dynlock_lock_callback;
2167+ CRYPTO_set_dynlock_lock_cb;
2168+ CRYPTO_get_dynlock_lock_callback;
2169+ CRYPTO_get_dynlock_lock_cb;
2170+ CRYPTO_get_dynlock_destroy_callback;
2171+ CRYPTO_get_dynlock_destroy_cb;
2172+ CRYPTO_get_dynlock_value;
2173+ CRYPTO_get_dynlock_create_callback;
2174+ CRYPTO_get_dynlock_create_cb;
2175+ c2i_ASN1_BIT_STRING;
2176+ i2c_ASN1_BIT_STRING;
2177+ RAND_poll;
2178+ c2i_ASN1_INTEGER;
2179+ i2c_ASN1_INTEGER;
2180+ BIO_dump_indent;
2181+ ASN1_parse_dump;
2182+ c2i_ASN1_OBJECT;
2183+ X509_NAME_print_ex_fp;
2184+ ASN1_STRING_print_ex_fp;
2185+ X509_NAME_print_ex;
2186+ ASN1_STRING_print_ex;
2187+ MD4;
2188+ MD4_Transform;
2189+ MD4_Final;
2190+ MD4_Update;
2191+ MD4_Init;
2192+ EVP_md4;
2193+ i2d_PUBKEY_bio;
2194+ i2d_PUBKEY_fp;
2195+ d2i_PUBKEY_bio;
2196+ ASN1_STRING_to_UTF8;
2197+ BIO_vprintf;
2198+ BIO_vsnprintf;
2199+ d2i_PUBKEY_fp;
2200+ X509_cmp_time;
2201+ X509_STORE_CTX_set_time;
2202+ X509_STORE_CTX_get1_issuer;
2203+ X509_OBJECT_retrieve_match;
2204+ X509_OBJECT_idx_by_subject;
2205+ X509_STORE_CTX_set_flags;
2206+ X509_STORE_CTX_trusted_stack;
2207+ X509_time_adj;
2208+ X509_check_issued;
2209+ ASN1_UTCTIME_cmp_time_t;
2210+ DES_set_weak_key_flag;
2211+ DES_check_key;
2212+ DES_rw_mode;
2213+ RSA_PKCS1_RSAref;
2214+ X509_keyid_set1;
2215+ BIO_next;
2216+ DSO_METHOD_vms;
2217+ BIO_f_linebuffer;
2218+ BN_bntest_rand;
2219+ OPENSSL_issetugid;
2220+ BN_rand_range;
2221+ ERR_load_ENGINE_strings;
2222+ ENGINE_set_DSA;
2223+ ENGINE_get_finish_function;
2224+ ENGINE_get_default_RSA;
2225+ ENGINE_get_BN_mod_exp;
2226+ DSA_get_default_openssl_method;
2227+ ENGINE_set_DH;
2228+ ENGINE_set_def_BN_mod_exp_crt;
2229+ ENGINE_set_default_BN_mod_exp_crt;
2230+ ENGINE_init;
2231+ DH_get_default_openssl_method;
2232+ RSA_set_default_openssl_method;
2233+ ENGINE_finish;
2234+ ENGINE_load_public_key;
2235+ ENGINE_get_DH;
2236+ ENGINE_ctrl;
2237+ ENGINE_get_init_function;
2238+ ENGINE_set_init_function;
2239+ ENGINE_set_default_DSA;
2240+ ENGINE_get_name;
2241+ ENGINE_get_last;
2242+ ENGINE_get_prev;
2243+ ENGINE_get_default_DH;
2244+ ENGINE_get_RSA;
2245+ ENGINE_set_default;
2246+ ENGINE_get_RAND;
2247+ ENGINE_get_first;
2248+ ENGINE_by_id;
2249+ ENGINE_set_finish_function;
2250+ ENGINE_get_def_BN_mod_exp_crt;
2251+ ENGINE_get_default_BN_mod_exp_crt;
2252+ RSA_get_default_openssl_method;
2253+ ENGINE_set_RSA;
2254+ ENGINE_load_private_key;
2255+ ENGINE_set_default_RAND;
2256+ ENGINE_set_BN_mod_exp;
2257+ ENGINE_remove;
2258+ ENGINE_free;
2259+ ENGINE_get_BN_mod_exp_crt;
2260+ ENGINE_get_next;
2261+ ENGINE_set_name;
2262+ ENGINE_get_default_DSA;
2263+ ENGINE_set_default_BN_mod_exp;
2264+ ENGINE_set_default_RSA;
2265+ ENGINE_get_default_RAND;
2266+ ENGINE_get_default_BN_mod_exp;
2267+ ENGINE_set_RAND;
2268+ ENGINE_set_id;
2269+ ENGINE_set_BN_mod_exp_crt;
2270+ ENGINE_set_default_DH;
2271+ ENGINE_new;
2272+ ENGINE_get_id;
2273+ DSA_set_default_openssl_method;
2274+ ENGINE_add;
2275+ DH_set_default_openssl_method;
2276+ ENGINE_get_DSA;
2277+ ENGINE_get_ctrl_function;
2278+ ENGINE_set_ctrl_function;
2279+ BN_pseudo_rand_range;
2280+ X509_STORE_CTX_set_verify_cb;
2281+ ERR_load_COMP_strings;
2282+ PKCS12_item_decrypt_d2i;
2283+ ASN1_UTF8STRING_it;
2284+ ASN1_UTF8STRING_it;
2285+ ENGINE_unregister_ciphers;
2286+ ENGINE_get_ciphers;
2287+ d2i_OCSP_BASICRESP;
2288+ KRB5_CHECKSUM_it;
2289+ KRB5_CHECKSUM_it;
2290+ EC_POINT_add;
2291+ ASN1_item_ex_i2d;
2292+ OCSP_CERTID_it;
2293+ OCSP_CERTID_it;
2294+ d2i_OCSP_RESPBYTES;
2295+ X509V3_add1_i2d;
2296+ PKCS7_ENVELOPE_it;
2297+ PKCS7_ENVELOPE_it;
2298+ UI_add_input_boolean;
2299+ ENGINE_unregister_RSA;
2300+ X509V3_EXT_nconf;
2301+ ASN1_GENERALSTRING_free;
2302+ d2i_OCSP_CERTSTATUS;
2303+ X509_REVOKED_set_serialNumber;
2304+ X509_print_ex;
2305+ OCSP_ONEREQ_get1_ext_d2i;
2306+ ENGINE_register_all_RAND;
2307+ ENGINE_load_dynamic;
2308+ PBKDF2PARAM_it;
2309+ PBKDF2PARAM_it;
2310+ EXTENDED_KEY_USAGE_new;
2311+ EC_GROUP_clear_free;
2312+ OCSP_sendreq_bio;
2313+ ASN1_item_digest;
2314+ OCSP_BASICRESP_delete_ext;
2315+ OCSP_SIGNATURE_it;
2316+ OCSP_SIGNATURE_it;
2317+ X509_CRL_it;
2318+ X509_CRL_it;
2319+ OCSP_BASICRESP_add_ext;
2320+ KRB5_ENCKEY_it;
2321+ KRB5_ENCKEY_it;
2322+ UI_method_set_closer;
2323+ X509_STORE_set_purpose;
2324+ i2d_ASN1_GENERALSTRING;
2325+ OCSP_response_status;
2326+ i2d_OCSP_SERVICELOC;
2327+ ENGINE_get_digest_engine;
2328+ EC_GROUP_set_curve_GFp;
2329+ OCSP_REQUEST_get_ext_by_OBJ;
2330+ _ossl_old_des_random_key;
2331+ ASN1_T61STRING_it;
2332+ ASN1_T61STRING_it;
2333+ EC_GROUP_method_of;
2334+ i2d_KRB5_APREQ;
2335+ _ossl_old_des_encrypt;
2336+ ASN1_PRINTABLE_new;
2337+ HMAC_Init_ex;
2338+ d2i_KRB5_AUTHENT;
2339+ OCSP_archive_cutoff_new;
2340+ EC_POINT_set_Jprojective_coordinates_GFp;
2341+ EC_POINT_set_Jproj_coords_GFp;
2342+ _ossl_old_des_is_weak_key;
2343+ OCSP_BASICRESP_get_ext_by_OBJ;
2344+ EC_POINT_oct2point;
2345+ OCSP_SINGLERESP_get_ext_count;
2346+ UI_ctrl;
2347+ _shadow_DES_rw_mode;
2348+ _shadow_DES_rw_mode;
2349+ asn1_do_adb;
2350+ ASN1_template_i2d;
2351+ ENGINE_register_DH;
2352+ UI_construct_prompt;
2353+ X509_STORE_set_trust;
2354+ UI_dup_input_string;
2355+ d2i_KRB5_APREQ;
2356+ EVP_MD_CTX_copy_ex;
2357+ OCSP_request_is_signed;
2358+ i2d_OCSP_REQINFO;
2359+ KRB5_ENCKEY_free;
2360+ OCSP_resp_get0;
2361+ GENERAL_NAME_it;
2362+ GENERAL_NAME_it;
2363+ ASN1_GENERALIZEDTIME_it;
2364+ ASN1_GENERALIZEDTIME_it;
2365+ X509_STORE_set_flags;
2366+ EC_POINT_set_compressed_coordinates_GFp;
2367+ EC_POINT_set_compr_coords_GFp;
2368+ OCSP_response_status_str;
2369+ d2i_OCSP_REVOKEDINFO;
2370+ OCSP_basic_add1_cert;
2371+ ERR_get_implementation;
2372+ EVP_CipherFinal_ex;
2373+ OCSP_CERTSTATUS_new;
2374+ CRYPTO_cleanup_all_ex_data;
2375+ OCSP_resp_find;
2376+ BN_nnmod;
2377+ X509_CRL_sort;
2378+ X509_REVOKED_set_revocationDate;
2379+ ENGINE_register_RAND;
2380+ OCSP_SERVICELOC_new;
2381+ EC_POINT_set_affine_coordinates_GFp;
2382+ EC_POINT_set_affine_coords_GFp;
2383+ _ossl_old_des_options;
2384+ SXNET_it;
2385+ SXNET_it;
2386+ UI_dup_input_boolean;
2387+ PKCS12_add_CSPName_asc;
2388+ EC_POINT_is_at_infinity;
2389+ ENGINE_load_cryptodev;
2390+ DSO_convert_filename;
2391+ POLICYQUALINFO_it;
2392+ POLICYQUALINFO_it;
2393+ ENGINE_register_ciphers;
2394+ BN_mod_lshift_quick;
2395+ DSO_set_filename;
2396+ ASN1_item_free;
2397+ KRB5_TKTBODY_free;
2398+ AUTHORITY_KEYID_it;
2399+ AUTHORITY_KEYID_it;
2400+ KRB5_APREQBODY_new;
2401+ X509V3_EXT_REQ_add_nconf;
2402+ ENGINE_ctrl_cmd_string;
2403+ i2d_OCSP_RESPDATA;
2404+ EVP_MD_CTX_init;
2405+ EXTENDED_KEY_USAGE_free;
2406+ PKCS7_ATTR_SIGN_it;
2407+ PKCS7_ATTR_SIGN_it;
2408+ UI_add_error_string;
2409+ KRB5_CHECKSUM_free;
2410+ OCSP_REQUEST_get_ext;
2411+ ENGINE_load_ubsec;
2412+ ENGINE_register_all_digests;
2413+ PKEY_USAGE_PERIOD_it;
2414+ PKEY_USAGE_PERIOD_it;
2415+ PKCS12_unpack_authsafes;
2416+ ASN1_item_unpack;
2417+ NETSCAPE_SPKAC_it;
2418+ NETSCAPE_SPKAC_it;
2419+ X509_REVOKED_it;
2420+ X509_REVOKED_it;
2421+ ASN1_STRING_encode;
2422+ EVP_aes_128_ecb;
2423+ KRB5_AUTHENT_free;
2424+ OCSP_BASICRESP_get_ext_by_critical;
2425+ OCSP_BASICRESP_get_ext_by_crit;
2426+ OCSP_cert_status_str;
2427+ d2i_OCSP_REQUEST;
2428+ UI_dup_info_string;
2429+ _ossl_old_des_xwhite_in2out;
2430+ PKCS12_it;
2431+ PKCS12_it;
2432+ OCSP_SINGLERESP_get_ext_by_critical;
2433+ OCSP_SINGLERESP_get_ext_by_crit;
2434+ OCSP_CERTSTATUS_free;
2435+ _ossl_old_des_crypt;
2436+ ASN1_item_i2d;
2437+ EVP_DecryptFinal_ex;
2438+ ENGINE_load_openssl;
2439+ ENGINE_get_cmd_defns;
2440+ ENGINE_set_load_privkey_function;
2441+ ENGINE_set_load_privkey_fn;
2442+ EVP_EncryptFinal_ex;
2443+ ENGINE_set_default_digests;
2444+ X509_get0_pubkey_bitstr;
2445+ asn1_ex_i2c;
2446+ ENGINE_register_RSA;
2447+ ENGINE_unregister_DSA;
2448+ _ossl_old_des_key_sched;
2449+ X509_EXTENSION_it;
2450+ X509_EXTENSION_it;
2451+ i2d_KRB5_AUTHENT;
2452+ SXNETID_it;
2453+ SXNETID_it;
2454+ d2i_OCSP_SINGLERESP;
2455+ EDIPARTYNAME_new;
2456+ PKCS12_certbag2x509;
2457+ _ossl_old_des_ofb64_encrypt;
2458+ d2i_EXTENDED_KEY_USAGE;
2459+ ERR_print_errors_cb;
2460+ ENGINE_set_ciphers;
2461+ d2i_KRB5_APREQBODY;
2462+ UI_method_get_flusher;
2463+ X509_PUBKEY_it;
2464+ X509_PUBKEY_it;
2465+ _ossl_old_des_enc_read;
2466+ PKCS7_ENCRYPT_it;
2467+ PKCS7_ENCRYPT_it;
2468+ i2d_OCSP_RESPONSE;
2469+ EC_GROUP_get_cofactor;
2470+ PKCS12_unpack_p7data;
2471+ d2i_KRB5_AUTHDATA;
2472+ OCSP_copy_nonce;
2473+ KRB5_AUTHDATA_new;
2474+ OCSP_RESPDATA_new;
2475+ EC_GFp_mont_method;
2476+ OCSP_REVOKEDINFO_free;
2477+ UI_get_ex_data;
2478+ KRB5_APREQBODY_free;
2479+ EC_GROUP_get0_generator;
2480+ UI_get_default_method;
2481+ X509V3_set_nconf;
2482+ PKCS12_item_i2d_encrypt;
2483+ X509_add1_ext_i2d;
2484+ PKCS7_SIGNER_INFO_it;
2485+ PKCS7_SIGNER_INFO_it;
2486+ KRB5_PRINCNAME_new;
2487+ PKCS12_SAFEBAG_it;
2488+ PKCS12_SAFEBAG_it;
2489+ EC_GROUP_get_order;
2490+ d2i_OCSP_RESPID;
2491+ OCSP_request_verify;
2492+ NCONF_get_number_e;
2493+ _ossl_old_des_decrypt3;
2494+ X509_signature_print;
2495+ OCSP_SINGLERESP_free;
2496+ ENGINE_load_builtin_engines;
2497+ i2d_OCSP_ONEREQ;
2498+ OCSP_REQUEST_add_ext;
2499+ OCSP_RESPBYTES_new;
2500+ EVP_MD_CTX_create;
2501+ OCSP_resp_find_status;
2502+ X509_ALGOR_it;
2503+ X509_ALGOR_it;
2504+ ASN1_TIME_it;
2505+ ASN1_TIME_it;
2506+ OCSP_request_set1_name;
2507+ OCSP_ONEREQ_get_ext_count;
2508+ UI_get0_result;
2509+ PKCS12_AUTHSAFES_it;
2510+ PKCS12_AUTHSAFES_it;
2511+ EVP_aes_256_ecb;
2512+ PKCS12_pack_authsafes;
2513+ ASN1_IA5STRING_it;
2514+ ASN1_IA5STRING_it;
2515+ UI_get_input_flags;
2516+ EC_GROUP_set_generator;
2517+ _ossl_old_des_string_to_2keys;
2518+ OCSP_CERTID_free;
2519+ X509_CERT_AUX_it;
2520+ X509_CERT_AUX_it;
2521+ CERTIFICATEPOLICIES_it;
2522+ CERTIFICATEPOLICIES_it;
2523+ _ossl_old_des_ede3_cbc_encrypt;
2524+ RAND_set_rand_engine;
2525+ DSO_get_loaded_filename;
2526+ X509_ATTRIBUTE_it;
2527+ X509_ATTRIBUTE_it;
2528+ OCSP_ONEREQ_get_ext_by_NID;
2529+ PKCS12_decrypt_skey;
2530+ KRB5_AUTHENT_it;
2531+ KRB5_AUTHENT_it;
2532+ UI_dup_error_string;
2533+ RSAPublicKey_it;
2534+ RSAPublicKey_it;
2535+ i2d_OCSP_REQUEST;
2536+ PKCS12_x509crl2certbag;
2537+ OCSP_SERVICELOC_it;
2538+ OCSP_SERVICELOC_it;
2539+ ASN1_item_sign;
2540+ X509_CRL_set_issuer_name;
2541+ OBJ_NAME_do_all_sorted;
2542+ i2d_OCSP_BASICRESP;
2543+ i2d_OCSP_RESPBYTES;
2544+ PKCS12_unpack_p7encdata;
2545+ HMAC_CTX_init;
2546+ ENGINE_get_digest;
2547+ OCSP_RESPONSE_print;
2548+ KRB5_TKTBODY_it;
2549+ KRB5_TKTBODY_it;
2550+ ACCESS_DESCRIPTION_it;
2551+ ACCESS_DESCRIPTION_it;
2552+ PKCS7_ISSUER_AND_SERIAL_it;
2553+ PKCS7_ISSUER_AND_SERIAL_it;
2554+ PBE2PARAM_it;
2555+ PBE2PARAM_it;
2556+ PKCS12_certbag2x509crl;
2557+ PKCS7_SIGNED_it;
2558+ PKCS7_SIGNED_it;
2559+ ENGINE_get_cipher;
2560+ i2d_OCSP_CRLID;
2561+ OCSP_SINGLERESP_new;
2562+ ENGINE_cmd_is_executable;
2563+ RSA_up_ref;
2564+ ASN1_GENERALSTRING_it;
2565+ ASN1_GENERALSTRING_it;
2566+ ENGINE_register_DSA;
2567+ X509V3_EXT_add_nconf_sk;
2568+ ENGINE_set_load_pubkey_function;
2569+ PKCS8_decrypt;
2570+ PEM_bytes_read_bio;
2571+ DIRECTORYSTRING_it;
2572+ DIRECTORYSTRING_it;
2573+ d2i_OCSP_CRLID;
2574+ EC_POINT_is_on_curve;
2575+ CRYPTO_set_locked_mem_ex_functions;
2576+ CRYPTO_set_locked_mem_ex_funcs;
2577+ d2i_KRB5_CHECKSUM;
2578+ ASN1_item_dup;
2579+ X509_it;
2580+ X509_it;
2581+ BN_mod_add;
2582+ KRB5_AUTHDATA_free;
2583+ _ossl_old_des_cbc_cksum;
2584+ ASN1_item_verify;
2585+ CRYPTO_set_mem_ex_functions;
2586+ EC_POINT_get_Jprojective_coordinates_GFp;
2587+ EC_POINT_get_Jproj_coords_GFp;
2588+ ZLONG_it;
2589+ ZLONG_it;
2590+ CRYPTO_get_locked_mem_ex_functions;
2591+ CRYPTO_get_locked_mem_ex_funcs;
2592+ ASN1_TIME_check;
2593+ UI_get0_user_data;
2594+ HMAC_CTX_cleanup;
2595+ DSA_up_ref;
2596+ _ossl_old_des_ede3_cfb64_encrypt;
2597+ _ossl_odes_ede3_cfb64_encrypt;
2598+ ASN1_BMPSTRING_it;
2599+ ASN1_BMPSTRING_it;
2600+ ASN1_tag2bit;
2601+ UI_method_set_flusher;
2602+ X509_ocspid_print;
2603+ KRB5_ENCDATA_it;
2604+ KRB5_ENCDATA_it;
2605+ ENGINE_get_load_pubkey_function;
2606+ UI_add_user_data;
2607+ OCSP_REQUEST_delete_ext;
2608+ UI_get_method;
2609+ OCSP_ONEREQ_free;
2610+ ASN1_PRINTABLESTRING_it;
2611+ ASN1_PRINTABLESTRING_it;
2612+ X509_CRL_set_nextUpdate;
2613+ OCSP_REQUEST_it;
2614+ OCSP_REQUEST_it;
2615+ OCSP_BASICRESP_it;
2616+ OCSP_BASICRESP_it;
2617+ AES_ecb_encrypt;
2618+ BN_mod_sqr;
2619+ NETSCAPE_CERT_SEQUENCE_it;
2620+ NETSCAPE_CERT_SEQUENCE_it;
2621+ GENERAL_NAMES_it;
2622+ GENERAL_NAMES_it;
2623+ AUTHORITY_INFO_ACCESS_it;
2624+ AUTHORITY_INFO_ACCESS_it;
2625+ ASN1_FBOOLEAN_it;
2626+ ASN1_FBOOLEAN_it;
2627+ UI_set_ex_data;
2628+ _ossl_old_des_string_to_key;
2629+ ENGINE_register_all_RSA;
2630+ d2i_KRB5_PRINCNAME;
2631+ OCSP_RESPBYTES_it;
2632+ OCSP_RESPBYTES_it;
2633+ X509_CINF_it;
2634+ X509_CINF_it;
2635+ ENGINE_unregister_digests;
2636+ d2i_EDIPARTYNAME;
2637+ d2i_OCSP_SERVICELOC;
2638+ ENGINE_get_digests;
2639+ _ossl_old_des_set_odd_parity;
2640+ OCSP_RESPDATA_free;
2641+ d2i_KRB5_TICKET;
2642+ OTHERNAME_it;
2643+ OTHERNAME_it;
2644+ EVP_MD_CTX_cleanup;
2645+ d2i_ASN1_GENERALSTRING;
2646+ X509_CRL_set_version;
2647+ BN_mod_sub;
2648+ OCSP_SINGLERESP_get_ext_by_NID;
2649+ ENGINE_get_ex_new_index;
2650+ OCSP_REQUEST_free;
2651+ OCSP_REQUEST_add1_ext_i2d;
2652+ X509_VAL_it;
2653+ X509_VAL_it;
2654+ EC_POINTs_make_affine;
2655+ EC_POINT_mul;
2656+ X509V3_EXT_add_nconf;
2657+ X509_TRUST_set;
2658+ X509_CRL_add1_ext_i2d;
2659+ _ossl_old_des_fcrypt;
2660+ DISPLAYTEXT_it;
2661+ DISPLAYTEXT_it;
2662+ X509_CRL_set_lastUpdate;
2663+ OCSP_BASICRESP_free;
2664+ OCSP_BASICRESP_add1_ext_i2d;
2665+ d2i_KRB5_AUTHENTBODY;
2666+ CRYPTO_set_ex_data_implementation;
2667+ CRYPTO_set_ex_data_impl;
2668+ KRB5_ENCDATA_new;
2669+ DSO_up_ref;
2670+ OCSP_crl_reason_str;
2671+ UI_get0_result_string;
2672+ ASN1_GENERALSTRING_new;
2673+ X509_SIG_it;
2674+ X509_SIG_it;
2675+ ERR_set_implementation;
2676+ ERR_load_EC_strings;
2677+ UI_get0_action_string;
2678+ OCSP_ONEREQ_get_ext;
2679+ EC_POINT_method_of;
2680+ i2d_KRB5_APREQBODY;
2681+ _ossl_old_des_ecb3_encrypt;
2682+ CRYPTO_get_mem_ex_functions;
2683+ ENGINE_get_ex_data;
2684+ UI_destroy_method;
2685+ ASN1_item_i2d_bio;
2686+ OCSP_ONEREQ_get_ext_by_OBJ;
2687+ ASN1_primitive_new;
2688+ ASN1_PRINTABLE_it;
2689+ ASN1_PRINTABLE_it;
2690+ EVP_aes_192_ecb;
2691+ OCSP_SIGNATURE_new;
2692+ LONG_it;
2693+ LONG_it;
2694+ ASN1_VISIBLESTRING_it;
2695+ ASN1_VISIBLESTRING_it;
2696+ OCSP_SINGLERESP_add1_ext_i2d;
2697+ d2i_OCSP_CERTID;
2698+ ASN1_item_d2i_fp;
2699+ CRL_DIST_POINTS_it;
2700+ CRL_DIST_POINTS_it;
2701+ GENERAL_NAME_print;
2702+ OCSP_SINGLERESP_delete_ext;
2703+ PKCS12_SAFEBAGS_it;
2704+ PKCS12_SAFEBAGS_it;
2705+ d2i_OCSP_SIGNATURE;
2706+ OCSP_request_add1_nonce;
2707+ ENGINE_set_cmd_defns;
2708+ OCSP_SERVICELOC_free;
2709+ EC_GROUP_free;
2710+ ASN1_BIT_STRING_it;
2711+ ASN1_BIT_STRING_it;
2712+ X509_REQ_it;
2713+ X509_REQ_it;
2714+ _ossl_old_des_cbc_encrypt;
2715+ ERR_unload_strings;
2716+ PKCS7_SIGN_ENVELOPE_it;
2717+ PKCS7_SIGN_ENVELOPE_it;
2718+ EDIPARTYNAME_free;
2719+ OCSP_REQINFO_free;
2720+ EC_GROUP_new_curve_GFp;
2721+ OCSP_REQUEST_get1_ext_d2i;
2722+ PKCS12_item_pack_safebag;
2723+ asn1_ex_c2i;
2724+ ENGINE_register_digests;
2725+ i2d_OCSP_REVOKEDINFO;
2726+ asn1_enc_restore;
2727+ UI_free;
2728+ UI_new_method;
2729+ EVP_EncryptInit_ex;
2730+ X509_pubkey_digest;
2731+ EC_POINT_invert;
2732+ OCSP_basic_sign;
2733+ i2d_OCSP_RESPID;
2734+ OCSP_check_nonce;
2735+ ENGINE_ctrl_cmd;
2736+ d2i_KRB5_ENCKEY;
2737+ OCSP_parse_url;
2738+ OCSP_SINGLERESP_get_ext;
2739+ OCSP_CRLID_free;
2740+ OCSP_BASICRESP_get1_ext_d2i;
2741+ RSAPrivateKey_it;
2742+ RSAPrivateKey_it;
2743+ ENGINE_register_all_DH;
2744+ i2d_EDIPARTYNAME;
2745+ EC_POINT_get_affine_coordinates_GFp;
2746+ EC_POINT_get_affine_coords_GFp;
2747+ OCSP_CRLID_new;
2748+ ENGINE_get_flags;
2749+ OCSP_ONEREQ_it;
2750+ OCSP_ONEREQ_it;
2751+ UI_process;
2752+ ASN1_INTEGER_it;
2753+ ASN1_INTEGER_it;
2754+ EVP_CipherInit_ex;
2755+ UI_get_string_type;
2756+ ENGINE_unregister_DH;
2757+ ENGINE_register_all_DSA;
2758+ OCSP_ONEREQ_get_ext_by_critical;
2759+ bn_dup_expand;
2760+ OCSP_cert_id_new;
2761+ BASIC_CONSTRAINTS_it;
2762+ BASIC_CONSTRAINTS_it;
2763+ BN_mod_add_quick;
2764+ EC_POINT_new;
2765+ EVP_MD_CTX_destroy;
2766+ OCSP_RESPBYTES_free;
2767+ EVP_aes_128_cbc;
2768+ OCSP_SINGLERESP_get1_ext_d2i;
2769+ EC_POINT_free;
2770+ DH_up_ref;
2771+ X509_NAME_ENTRY_it;
2772+ X509_NAME_ENTRY_it;
2773+ UI_get_ex_new_index;
2774+ BN_mod_sub_quick;
2775+ OCSP_ONEREQ_add_ext;
2776+ OCSP_request_sign;
2777+ EVP_DigestFinal_ex;
2778+ ENGINE_set_digests;
2779+ OCSP_id_issuer_cmp;
2780+ OBJ_NAME_do_all;
2781+ EC_POINTs_mul;
2782+ ENGINE_register_complete;
2783+ X509V3_EXT_nconf_nid;
2784+ ASN1_SEQUENCE_it;
2785+ ASN1_SEQUENCE_it;
2786+ UI_set_default_method;
2787+ RAND_query_egd_bytes;
2788+ UI_method_get_writer;
2789+ UI_OpenSSL;
2790+ PEM_def_callback;
2791+ ENGINE_cleanup;
2792+ DIST_POINT_it;
2793+ DIST_POINT_it;
2794+ OCSP_SINGLERESP_it;
2795+ OCSP_SINGLERESP_it;
2796+ d2i_KRB5_TKTBODY;
2797+ EC_POINT_cmp;
2798+ OCSP_REVOKEDINFO_new;
2799+ i2d_OCSP_CERTSTATUS;
2800+ OCSP_basic_add1_nonce;
2801+ ASN1_item_ex_d2i;
2802+ BN_mod_lshift1_quick;
2803+ UI_set_method;
2804+ OCSP_id_get0_info;
2805+ BN_mod_sqrt;
2806+ EC_GROUP_copy;
2807+ KRB5_ENCDATA_free;
2808+ _ossl_old_des_cfb_encrypt;
2809+ OCSP_SINGLERESP_get_ext_by_OBJ;
2810+ OCSP_cert_to_id;
2811+ OCSP_RESPID_new;
2812+ OCSP_RESPDATA_it;
2813+ OCSP_RESPDATA_it;
2814+ d2i_OCSP_RESPDATA;
2815+ ENGINE_register_all_complete;
2816+ OCSP_check_validity;
2817+ PKCS12_BAGS_it;
2818+ PKCS12_BAGS_it;
2819+ OCSP_url_svcloc_new;
2820+ ASN1_template_free;
2821+ OCSP_SINGLERESP_add_ext;
2822+ KRB5_AUTHENTBODY_it;
2823+ KRB5_AUTHENTBODY_it;
2824+ X509_supported_extension;
2825+ i2d_KRB5_AUTHDATA;
2826+ UI_method_get_opener;
2827+ ENGINE_set_ex_data;
2828+ OCSP_REQUEST_print;
2829+ CBIGNUM_it;
2830+ CBIGNUM_it;
2831+ KRB5_TICKET_new;
2832+ KRB5_APREQ_new;
2833+ EC_GROUP_get_curve_GFp;
2834+ KRB5_ENCKEY_new;
2835+ ASN1_template_d2i;
2836+ _ossl_old_des_quad_cksum;
2837+ OCSP_single_get0_status;
2838+ BN_swap;
2839+ POLICYINFO_it;
2840+ POLICYINFO_it;
2841+ ENGINE_set_destroy_function;
2842+ asn1_enc_free;
2843+ OCSP_RESPID_it;
2844+ OCSP_RESPID_it;
2845+ EC_GROUP_new;
2846+ EVP_aes_256_cbc;
2847+ i2d_KRB5_PRINCNAME;
2848+ _ossl_old_des_encrypt2;
2849+ _ossl_old_des_encrypt3;
2850+ PKCS8_PRIV_KEY_INFO_it;
2851+ PKCS8_PRIV_KEY_INFO_it;
2852+ OCSP_REQINFO_it;
2853+ OCSP_REQINFO_it;
2854+ PBEPARAM_it;
2855+ PBEPARAM_it;
2856+ KRB5_AUTHENTBODY_new;
2857+ X509_CRL_add0_revoked;
2858+ EDIPARTYNAME_it;
2859+ EDIPARTYNAME_it;
2860+ NETSCAPE_SPKI_it;
2861+ NETSCAPE_SPKI_it;
2862+ UI_get0_test_string;
2863+ ENGINE_get_cipher_engine;
2864+ ENGINE_register_all_ciphers;
2865+ EC_POINT_copy;
2866+ BN_kronecker;
2867+ _ossl_old_des_ede3_ofb64_encrypt;
2868+ _ossl_odes_ede3_ofb64_encrypt;
2869+ UI_method_get_reader;
2870+ OCSP_BASICRESP_get_ext_count;
2871+ ASN1_ENUMERATED_it;
2872+ ASN1_ENUMERATED_it;
2873+ UI_set_result;
2874+ i2d_KRB5_TICKET;
2875+ X509_print_ex_fp;
2876+ EVP_CIPHER_CTX_set_padding;
2877+ d2i_OCSP_RESPONSE;
2878+ ASN1_UTCTIME_it;
2879+ ASN1_UTCTIME_it;
2880+ _ossl_old_des_enc_write;
2881+ OCSP_RESPONSE_new;
2882+ AES_set_encrypt_key;
2883+ OCSP_resp_count;
2884+ KRB5_CHECKSUM_new;
2885+ ENGINE_load_cswift;
2886+ OCSP_onereq_get0_id;
2887+ ENGINE_set_default_ciphers;
2888+ NOTICEREF_it;
2889+ NOTICEREF_it;
2890+ X509V3_EXT_CRL_add_nconf;
2891+ OCSP_REVOKEDINFO_it;
2892+ OCSP_REVOKEDINFO_it;
2893+ AES_encrypt;
2894+ OCSP_REQUEST_new;
2895+ ASN1_ANY_it;
2896+ ASN1_ANY_it;
2897+ CRYPTO_ex_data_new_class;
2898+ _ossl_old_des_ncbc_encrypt;
2899+ i2d_KRB5_TKTBODY;
2900+ EC_POINT_clear_free;
2901+ AES_decrypt;
2902+ asn1_enc_init;
2903+ UI_get_result_maxsize;
2904+ OCSP_CERTID_new;
2905+ ENGINE_unregister_RAND;
2906+ UI_method_get_closer;
2907+ d2i_KRB5_ENCDATA;
2908+ OCSP_request_onereq_count;
2909+ OCSP_basic_verify;
2910+ KRB5_AUTHENTBODY_free;
2911+ ASN1_item_d2i;
2912+ ASN1_primitive_free;
2913+ i2d_EXTENDED_KEY_USAGE;
2914+ i2d_OCSP_SIGNATURE;
2915+ asn1_enc_save;
2916+ ENGINE_load_nuron;
2917+ _ossl_old_des_pcbc_encrypt;
2918+ PKCS12_MAC_DATA_it;
2919+ PKCS12_MAC_DATA_it;
2920+ OCSP_accept_responses_new;
2921+ asn1_do_lock;
2922+ PKCS7_ATTR_VERIFY_it;
2923+ PKCS7_ATTR_VERIFY_it;
2924+ KRB5_APREQBODY_it;
2925+ KRB5_APREQBODY_it;
2926+ i2d_OCSP_SINGLERESP;
2927+ ASN1_item_ex_new;
2928+ UI_add_verify_string;
2929+ _ossl_old_des_set_key;
2930+ KRB5_PRINCNAME_it;
2931+ KRB5_PRINCNAME_it;
2932+ EVP_DecryptInit_ex;
2933+ i2d_OCSP_CERTID;
2934+ ASN1_item_d2i_bio;
2935+ EC_POINT_dbl;
2936+ asn1_get_choice_selector;
2937+ i2d_KRB5_CHECKSUM;
2938+ ENGINE_set_table_flags;
2939+ AES_options;
2940+ ENGINE_load_chil;
2941+ OCSP_id_cmp;
2942+ OCSP_BASICRESP_new;
2943+ OCSP_REQUEST_get_ext_by_NID;
2944+ KRB5_APREQ_it;
2945+ KRB5_APREQ_it;
2946+ ENGINE_get_destroy_function;
2947+ CONF_set_nconf;
2948+ ASN1_PRINTABLE_free;
2949+ OCSP_BASICRESP_get_ext_by_NID;
2950+ DIST_POINT_NAME_it;
2951+ DIST_POINT_NAME_it;
2952+ X509V3_extensions_print;
2953+ _ossl_old_des_cfb64_encrypt;
2954+ X509_REVOKED_add1_ext_i2d;
2955+ _ossl_old_des_ofb_encrypt;
2956+ KRB5_TKTBODY_new;
2957+ ASN1_OCTET_STRING_it;
2958+ ASN1_OCTET_STRING_it;
2959+ ERR_load_UI_strings;
2960+ i2d_KRB5_ENCKEY;
2961+ ASN1_template_new;
2962+ OCSP_SIGNATURE_free;
2963+ ASN1_item_i2d_fp;
2964+ KRB5_PRINCNAME_free;
2965+ PKCS7_RECIP_INFO_it;
2966+ PKCS7_RECIP_INFO_it;
2967+ EXTENDED_KEY_USAGE_it;
2968+ EXTENDED_KEY_USAGE_it;
2969+ EC_GFp_simple_method;
2970+ EC_GROUP_precompute_mult;
2971+ OCSP_request_onereq_get0;
2972+ UI_method_set_writer;
2973+ KRB5_AUTHENT_new;
2974+ X509_CRL_INFO_it;
2975+ X509_CRL_INFO_it;
2976+ DSO_set_name_converter;
2977+ AES_set_decrypt_key;
2978+ PKCS7_DIGEST_it;
2979+ PKCS7_DIGEST_it;
2980+ PKCS12_x5092certbag;
2981+ EVP_DigestInit_ex;
2982+ i2a_ACCESS_DESCRIPTION;
2983+ OCSP_RESPONSE_it;
2984+ OCSP_RESPONSE_it;
2985+ PKCS7_ENC_CONTENT_it;
2986+ PKCS7_ENC_CONTENT_it;
2987+ OCSP_request_add0_id;
2988+ EC_POINT_make_affine;
2989+ DSO_get_filename;
2990+ OCSP_CERTSTATUS_it;
2991+ OCSP_CERTSTATUS_it;
2992+ OCSP_request_add1_cert;
2993+ UI_get0_output_string;
2994+ UI_dup_verify_string;
2995+ BN_mod_lshift;
2996+ KRB5_AUTHDATA_it;
2997+ KRB5_AUTHDATA_it;
2998+ asn1_set_choice_selector;
2999+ OCSP_basic_add1_status;
3000+ OCSP_RESPID_free;
3001+ asn1_get_field_ptr;
3002+ UI_add_input_string;
3003+ OCSP_CRLID_it;
3004+ OCSP_CRLID_it;
3005+ i2d_KRB5_AUTHENTBODY;
3006+ OCSP_REQUEST_get_ext_count;
3007+ ENGINE_load_atalla;
3008+ X509_NAME_it;
3009+ X509_NAME_it;
3010+ USERNOTICE_it;
3011+ USERNOTICE_it;
3012+ OCSP_REQINFO_new;
3013+ OCSP_BASICRESP_get_ext;
3014+ CRYPTO_get_ex_data_implementation;
3015+ CRYPTO_get_ex_data_impl;
3016+ ASN1_item_pack;
3017+ i2d_KRB5_ENCDATA;
3018+ X509_PURPOSE_set;
3019+ X509_REQ_INFO_it;
3020+ X509_REQ_INFO_it;
3021+ UI_method_set_opener;
3022+ ASN1_item_ex_free;
3023+ ASN1_BOOLEAN_it;
3024+ ASN1_BOOLEAN_it;
3025+ ENGINE_get_table_flags;
3026+ UI_create_method;
3027+ OCSP_ONEREQ_add1_ext_i2d;
3028+ _shadow_DES_check_key;
3029+ _shadow_DES_check_key;
3030+ d2i_OCSP_REQINFO;
3031+ UI_add_info_string;
3032+ UI_get_result_minsize;
3033+ ASN1_NULL_it;
3034+ ASN1_NULL_it;
3035+ BN_mod_lshift1;
3036+ d2i_OCSP_ONEREQ;
3037+ OCSP_ONEREQ_new;
3038+ KRB5_TICKET_it;
3039+ KRB5_TICKET_it;
3040+ EVP_aes_192_cbc;
3041+ KRB5_TICKET_free;
3042+ UI_new;
3043+ OCSP_response_create;
3044+ _ossl_old_des_xcbc_encrypt;
3045+ PKCS7_it;
3046+ PKCS7_it;
3047+ OCSP_REQUEST_get_ext_by_critical;
3048+ OCSP_REQUEST_get_ext_by_crit;
3049+ ENGINE_set_flags;
3050+ _ossl_old_des_ecb_encrypt;
3051+ OCSP_response_get1_basic;
3052+ EVP_Digest;
3053+ OCSP_ONEREQ_delete_ext;
3054+ ASN1_TBOOLEAN_it;
3055+ ASN1_TBOOLEAN_it;
3056+ ASN1_item_new;
3057+ ASN1_TIME_to_generalizedtime;
3058+ BIGNUM_it;
3059+ BIGNUM_it;
3060+ AES_cbc_encrypt;
3061+ ENGINE_get_load_privkey_function;
3062+ ENGINE_get_load_privkey_fn;
3063+ OCSP_RESPONSE_free;
3064+ UI_method_set_reader;
3065+ i2d_ASN1_T61STRING;
3066+ EC_POINT_set_to_infinity;
3067+ ERR_load_OCSP_strings;
3068+ EC_POINT_point2oct;
3069+ KRB5_APREQ_free;
3070+ ASN1_OBJECT_it;
3071+ ASN1_OBJECT_it;
3072+ OCSP_crlID_new;
3073+ OCSP_crlID2_new;
3074+ CONF_modules_load_file;
3075+ CONF_imodule_set_usr_data;
3076+ ENGINE_set_default_string;
3077+ CONF_module_get_usr_data;
3078+ ASN1_add_oid_module;
3079+ CONF_modules_finish;
3080+ OPENSSL_config;
3081+ CONF_modules_unload;
3082+ CONF_imodule_get_value;
3083+ CONF_module_set_usr_data;
3084+ CONF_parse_list;
3085+ CONF_module_add;
3086+ CONF_get1_default_config_file;
3087+ CONF_imodule_get_flags;
3088+ CONF_imodule_get_module;
3089+ CONF_modules_load;
3090+ CONF_imodule_get_name;
3091+ ERR_peek_top_error;
3092+ CONF_imodule_get_usr_data;
3093+ CONF_imodule_set_flags;
3094+ ENGINE_add_conf_module;
3095+ ERR_peek_last_error_line;
3096+ ERR_peek_last_error_line_data;
3097+ ERR_peek_last_error;
3098+ DES_read_2passwords;
3099+ DES_read_password;
3100+ UI_UTIL_read_pw;
3101+ UI_UTIL_read_pw_string;
3102+ ENGINE_load_aep;
3103+ ENGINE_load_sureware;
3104+ OPENSSL_add_all_algorithms_noconf;
3105+ OPENSSL_add_all_algo_noconf;
3106+ OPENSSL_add_all_algorithms_conf;
3107+ OPENSSL_add_all_algo_conf;
3108+ OPENSSL_load_builtin_modules;
3109+ AES_ofb128_encrypt;
3110+ AES_ctr128_encrypt;
3111+ AES_cfb128_encrypt;
3112+ ENGINE_load_4758cca;
3113+ _ossl_096_des_random_seed;
3114+ EVP_aes_256_ofb;
3115+ EVP_aes_192_ofb;
3116+ EVP_aes_128_cfb128;
3117+ EVP_aes_256_cfb128;
3118+ EVP_aes_128_ofb;
3119+ EVP_aes_192_cfb128;
3120+ CONF_modules_free;
3121+ NCONF_default;
3122+ OPENSSL_no_config;
3123+ NCONF_WIN32;
3124+ ASN1_UNIVERSALSTRING_new;
3125+ EVP_des_ede_ecb;
3126+ i2d_ASN1_UNIVERSALSTRING;
3127+ ASN1_UNIVERSALSTRING_free;
3128+ ASN1_UNIVERSALSTRING_it;
3129+ ASN1_UNIVERSALSTRING_it;
3130+ d2i_ASN1_UNIVERSALSTRING;
3131+ EVP_des_ede3_ecb;
3132+ X509_REQ_print_ex;
3133+ ENGINE_up_ref;
3134+ BUF_MEM_grow_clean;
3135+ CRYPTO_realloc_clean;
3136+ BUF_strlcat;
3137+ BIO_indent;
3138+ BUF_strlcpy;
3139+ OpenSSLDie;
3140+ OPENSSL_cleanse;
3141+ ENGINE_setup_bsd_cryptodev;
3142+ ERR_release_err_state_table;
3143+ EVP_aes_128_cfb8;
3144+ FIPS_corrupt_rsa;
3145+ FIPS_selftest_des;
3146+ EVP_aes_128_cfb1;
3147+ EVP_aes_192_cfb8;
3148+ FIPS_mode_set;
3149+ FIPS_selftest_dsa;
3150+ EVP_aes_256_cfb8;
3151+ FIPS_allow_md5;
3152+ DES_ede3_cfb_encrypt;
3153+ EVP_des_ede3_cfb8;
3154+ FIPS_rand_seeded;
3155+ AES_cfbr_encrypt_block;
3156+ AES_cfb8_encrypt;
3157+ FIPS_rand_seed;
3158+ FIPS_corrupt_des;
3159+ EVP_aes_192_cfb1;
3160+ FIPS_selftest_aes;
3161+ FIPS_set_prng_key;
3162+ EVP_des_cfb8;
3163+ FIPS_corrupt_dsa;
3164+ FIPS_test_mode;
3165+ FIPS_rand_method;
3166+ EVP_aes_256_cfb1;
3167+ ERR_load_FIPS_strings;
3168+ FIPS_corrupt_aes;
3169+ FIPS_selftest_sha1;
3170+ FIPS_selftest_rsa;
3171+ FIPS_corrupt_sha1;
3172+ EVP_des_cfb1;
3173+ FIPS_dsa_check;
3174+ AES_cfb1_encrypt;
3175+ EVP_des_ede3_cfb1;
3176+ FIPS_rand_check;
3177+ FIPS_md5_allowed;
3178+ FIPS_mode;
3179+ FIPS_selftest_failed;
3180+ sk_is_sorted;
3181+ X509_check_ca;
3182+ HMAC_CTX_set_flags;
3183+ d2i_PROXY_CERT_INFO_EXTENSION;
3184+ PROXY_POLICY_it;
3185+ PROXY_POLICY_it;
3186+ i2d_PROXY_POLICY;
3187+ i2d_PROXY_CERT_INFO_EXTENSION;
3188+ d2i_PROXY_POLICY;
3189+ PROXY_CERT_INFO_EXTENSION_new;
3190+ PROXY_CERT_INFO_EXTENSION_free;
3191+ PROXY_CERT_INFO_EXTENSION_it;
3192+ PROXY_CERT_INFO_EXTENSION_it;
3193+ PROXY_POLICY_free;
3194+ PROXY_POLICY_new;
3195+ BN_MONT_CTX_set_locked;
3196+ FIPS_selftest_rng;
3197+ EVP_sha384;
3198+ EVP_sha512;
3199+ EVP_sha224;
3200+ EVP_sha256;
3201+ FIPS_selftest_hmac;
3202+ FIPS_corrupt_rng;
3203+ BN_mod_exp_mont_consttime;
3204+ RSA_X931_hash_id;
3205+ RSA_padding_check_X931;
3206+ RSA_verify_PKCS1_PSS;
3207+ RSA_padding_add_X931;
3208+ RSA_padding_add_PKCS1_PSS;
3209+ PKCS1_MGF1;
3210+ BN_X931_generate_Xpq;
3211+ RSA_X931_generate_key;
3212+ BN_X931_derive_prime;
3213+ BN_X931_generate_prime;
3214+ RSA_X931_derive;
3215+ BIO_new_dgram;
3216+ BN_get0_nist_prime_384;
3217+ ERR_set_mark;
3218+ X509_STORE_CTX_set0_crls;
3219+ ENGINE_set_STORE;
3220+ ENGINE_register_ECDSA;
3221+ STORE_meth_set_list_start_fn;
3222+ STORE_method_set_list_start_function;
3223+ BN_BLINDING_invert_ex;
3224+ NAME_CONSTRAINTS_free;
3225+ STORE_ATTR_INFO_set_number;
3226+ BN_BLINDING_get_thread_id;
3227+ X509_STORE_CTX_set0_param;
3228+ POLICY_MAPPING_it;
3229+ POLICY_MAPPING_it;
3230+ STORE_parse_attrs_start;
3231+ POLICY_CONSTRAINTS_free;
3232+ EVP_PKEY_add1_attr_by_NID;
3233+ BN_nist_mod_192;
3234+ EC_GROUP_get_trinomial_basis;
3235+ STORE_set_method;
3236+ GENERAL_SUBTREE_free;
3237+ NAME_CONSTRAINTS_it;
3238+ NAME_CONSTRAINTS_it;
3239+ ECDH_get_default_method;
3240+ PKCS12_add_safe;
3241+ EC_KEY_new_by_curve_name;
3242+ STORE_meth_get_update_store_fn;
3243+ STORE_method_get_update_store_function;
3244+ ENGINE_register_ECDH;
3245+ SHA512_Update;
3246+ i2d_ECPrivateKey;
3247+ BN_get0_nist_prime_192;
3248+ STORE_modify_certificate;
3249+ EC_POINT_set_affine_coordinates_GF2m;
3250+ EC_POINT_set_affine_coords_GF2m;
3251+ BN_GF2m_mod_exp_arr;
3252+ STORE_ATTR_INFO_modify_number;
3253+ X509_keyid_get0;
3254+ ENGINE_load_gmp;
3255+ pitem_new;
3256+ BN_GF2m_mod_mul_arr;
3257+ STORE_list_public_key_endp;
3258+ o2i_ECPublicKey;
3259+ EC_KEY_copy;
3260+ BIO_dump_fp;
3261+ X509_policy_node_get0_parent;
3262+ EC_GROUP_check_discriminant;
3263+ i2o_ECPublicKey;
3264+ EC_KEY_precompute_mult;
3265+ a2i_IPADDRESS;
3266+ STORE_meth_set_initialise_fn;
3267+ STORE_method_set_initialise_function;
3268+ X509_STORE_CTX_set_depth;
3269+ X509_VERIFY_PARAM_inherit;
3270+ EC_POINT_point2bn;
3271+ STORE_ATTR_INFO_set_dn;
3272+ X509_policy_tree_get0_policies;
3273+ EC_GROUP_new_curve_GF2m;
3274+ STORE_destroy_method;
3275+ ENGINE_unregister_STORE;
3276+ EVP_PKEY_get1_EC_KEY;
3277+ STORE_ATTR_INFO_get0_number;
3278+ ENGINE_get_default_ECDH;
3279+ EC_KEY_get_conv_form;
3280+ ASN1_OCTET_STRING_NDEF_it;
3281+ ASN1_OCTET_STRING_NDEF_it;
3282+ STORE_delete_public_key;
3283+ STORE_get_public_key;
3284+ STORE_modify_arbitrary;
3285+ ENGINE_get_static_state;
3286+ pqueue_iterator;
3287+ ECDSA_SIG_new;
3288+ OPENSSL_DIR_end;
3289+ BN_GF2m_mod_sqr;
3290+ EC_POINT_bn2point;
3291+ X509_VERIFY_PARAM_set_depth;
3292+ EC_KEY_set_asn1_flag;
3293+ STORE_get_method;
3294+ EC_KEY_get_key_method_data;
3295+ ECDSA_sign_ex;
3296+ STORE_parse_attrs_end;
3297+ EC_GROUP_get_point_conversion_form;
3298+ EC_GROUP_get_point_conv_form;
3299+ STORE_method_set_store_function;
3300+ STORE_ATTR_INFO_in;
3301+ PEM_read_bio_ECPKParameters;
3302+ EC_GROUP_get_pentanomial_basis;
3303+ EVP_PKEY_add1_attr_by_txt;
3304+ BN_BLINDING_set_flags;
3305+ X509_VERIFY_PARAM_set1_policies;
3306+ X509_VERIFY_PARAM_set1_name;
3307+ X509_VERIFY_PARAM_set_purpose;
3308+ STORE_get_number;
3309+ ECDSA_sign_setup;
3310+ BN_GF2m_mod_solve_quad_arr;
3311+ EC_KEY_up_ref;
3312+ POLICY_MAPPING_free;
3313+ BN_GF2m_mod_div;
3314+ X509_VERIFY_PARAM_set_flags;
3315+ EC_KEY_free;
3316+ STORE_meth_set_list_next_fn;
3317+ STORE_method_set_list_next_function;
3318+ PEM_write_bio_ECPrivateKey;
3319+ d2i_EC_PUBKEY;
3320+ STORE_meth_get_generate_fn;
3321+ STORE_method_get_generate_function;
3322+ STORE_meth_set_list_end_fn;
3323+ STORE_method_set_list_end_function;
3324+ pqueue_print;
3325+ EC_GROUP_have_precompute_mult;
3326+ EC_KEY_print_fp;
3327+ BN_GF2m_mod_arr;
3328+ PEM_write_bio_X509_CERT_PAIR;
3329+ EVP_PKEY_cmp;
3330+ X509_policy_level_node_count;
3331+ STORE_new_engine;
3332+ STORE_list_public_key_start;
3333+ X509_VERIFY_PARAM_new;
3334+ ECDH_get_ex_data;
3335+ EVP_PKEY_get_attr;
3336+ ECDSA_do_sign;
3337+ ENGINE_unregister_ECDH;
3338+ ECDH_OpenSSL;
3339+ EC_KEY_set_conv_form;
3340+ EC_POINT_dup;
3341+ GENERAL_SUBTREE_new;
3342+ STORE_list_crl_endp;
3343+ EC_get_builtin_curves;
3344+ X509_policy_node_get0_qualifiers;
3345+ X509_pcy_node_get0_qualifiers;
3346+ STORE_list_crl_end;
3347+ EVP_PKEY_set1_EC_KEY;
3348+ BN_GF2m_mod_sqrt_arr;
3349+ i2d_ECPrivateKey_bio;
3350+ ECPKParameters_print_fp;
3351+ pqueue_find;
3352+ ECDSA_SIG_free;
3353+ PEM_write_bio_ECPKParameters;
3354+ STORE_method_set_ctrl_function;
3355+ STORE_list_public_key_end;
3356+ EC_KEY_set_private_key;
3357+ pqueue_peek;
3358+ STORE_get_arbitrary;
3359+ STORE_store_crl;
3360+ X509_policy_node_get0_policy;
3361+ PKCS12_add_safes;
3362+ BN_BLINDING_convert_ex;
3363+ X509_policy_tree_free;
3364+ OPENSSL_ia32cap_loc;
3365+ BN_GF2m_poly2arr;
3366+ STORE_ctrl;
3367+ STORE_ATTR_INFO_compare;
3368+ BN_get0_nist_prime_224;
3369+ i2d_ECParameters;
3370+ i2d_ECPKParameters;
3371+ BN_GENCB_call;
3372+ d2i_ECPKParameters;
3373+ STORE_meth_set_generate_fn;
3374+ STORE_method_set_generate_function;
3375+ ENGINE_set_ECDH;
3376+ NAME_CONSTRAINTS_new;
3377+ SHA256_Init;
3378+ EC_KEY_get0_public_key;
3379+ PEM_write_bio_EC_PUBKEY;
3380+ STORE_ATTR_INFO_set_cstr;
3381+ STORE_list_crl_next;
3382+ STORE_ATTR_INFO_in_range;
3383+ ECParameters_print;
3384+ STORE_meth_set_delete_fn;
3385+ STORE_method_set_delete_function;
3386+ STORE_list_certificate_next;
3387+ ASN1_generate_nconf;
3388+ BUF_memdup;
3389+ BN_GF2m_mod_mul;
3390+ STORE_meth_get_list_next_fn;
3391+ STORE_method_get_list_next_function;
3392+ STORE_ATTR_INFO_get0_dn;
3393+ STORE_list_private_key_next;
3394+ EC_GROUP_set_seed;
3395+ X509_VERIFY_PARAM_set_trust;
3396+ STORE_ATTR_INFO_free;
3397+ STORE_get_private_key;
3398+ EVP_PKEY_get_attr_count;
3399+ STORE_ATTR_INFO_new;
3400+ EC_GROUP_get_curve_GF2m;
3401+ STORE_meth_set_revoke_fn;
3402+ STORE_method_set_revoke_function;
3403+ STORE_store_number;
3404+ BN_is_prime_ex;
3405+ STORE_revoke_public_key;
3406+ X509_STORE_CTX_get0_param;
3407+ STORE_delete_arbitrary;
3408+ PEM_read_X509_CERT_PAIR;
3409+ X509_STORE_set_depth;
3410+ ECDSA_get_ex_data;
3411+ SHA224;
3412+ BIO_dump_indent_fp;
3413+ EC_KEY_set_group;
3414+ BUF_strndup;
3415+ STORE_list_certificate_start;
3416+ BN_GF2m_mod;
3417+ X509_REQ_check_private_key;
3418+ EC_GROUP_get_seed_len;
3419+ ERR_load_STORE_strings;
3420+ PEM_read_bio_EC_PUBKEY;
3421+ STORE_list_private_key_end;
3422+ i2d_EC_PUBKEY;
3423+ ECDSA_get_default_method;
3424+ ASN1_put_eoc;
3425+ X509_STORE_CTX_get_explicit_policy;
3426+ X509_STORE_CTX_get_expl_policy;
3427+ X509_VERIFY_PARAM_table_cleanup;
3428+ STORE_modify_private_key;
3429+ X509_VERIFY_PARAM_free;
3430+ EC_METHOD_get_field_type;
3431+ EC_GFp_nist_method;
3432+ STORE_meth_set_modify_fn;
3433+ STORE_method_set_modify_function;
3434+ STORE_parse_attrs_next;
3435+ ENGINE_load_padlock;
3436+ EC_GROUP_set_curve_name;
3437+ X509_CERT_PAIR_it;
3438+ X509_CERT_PAIR_it;
3439+ STORE_meth_get_revoke_fn;
3440+ STORE_method_get_revoke_function;
3441+ STORE_method_set_get_function;
3442+ STORE_modify_number;
3443+ STORE_method_get_store_function;
3444+ STORE_store_private_key;
3445+ BN_GF2m_mod_sqr_arr;
3446+ RSA_setup_blinding;
3447+ BIO_s_datagram;
3448+ STORE_Memory;
3449+ sk_find_ex;
3450+ EC_GROUP_set_curve_GF2m;
3451+ ENGINE_set_default_ECDSA;
3452+ POLICY_CONSTRAINTS_new;
3453+ BN_GF2m_mod_sqrt;
3454+ ECDH_set_default_method;
3455+ EC_KEY_generate_key;
3456+ SHA384_Update;
3457+ BN_GF2m_arr2poly;
3458+ STORE_method_get_get_function;
3459+ STORE_meth_set_cleanup_fn;
3460+ STORE_method_set_cleanup_function;
3461+ EC_GROUP_check;
3462+ d2i_ECPrivateKey_bio;
3463+ EC_KEY_insert_key_method_data;
3464+ STORE_meth_get_lock_store_fn;
3465+ STORE_method_get_lock_store_function;
3466+ X509_VERIFY_PARAM_get_depth;
3467+ SHA224_Final;
3468+ STORE_meth_set_update_store_fn;
3469+ STORE_method_set_update_store_function;
3470+ SHA224_Update;
3471+ d2i_ECPrivateKey;
3472+ ASN1_item_ndef_i2d;
3473+ STORE_delete_private_key;
3474+ ERR_pop_to_mark;
3475+ ENGINE_register_all_STORE;
3476+ X509_policy_level_get0_node;
3477+ i2d_PKCS7_NDEF;
3478+ EC_GROUP_get_degree;
3479+ ASN1_generate_v3;
3480+ STORE_ATTR_INFO_modify_cstr;
3481+ X509_policy_tree_level_count;
3482+ BN_GF2m_add;
3483+ EC_KEY_get0_group;
3484+ STORE_generate_crl;
3485+ STORE_store_public_key;
3486+ X509_CERT_PAIR_free;
3487+ STORE_revoke_private_key;
3488+ BN_nist_mod_224;
3489+ SHA512_Final;
3490+ STORE_ATTR_INFO_modify_dn;
3491+ STORE_meth_get_initialise_fn;
3492+ STORE_method_get_initialise_function;
3493+ STORE_delete_number;
3494+ i2d_EC_PUBKEY_bio;
3495+ BIO_dgram_non_fatal_error;
3496+ EC_GROUP_get_asn1_flag;
3497+ STORE_ATTR_INFO_in_ex;
3498+ STORE_list_crl_start;
3499+ ECDH_get_ex_new_index;
3500+ STORE_meth_get_modify_fn;
3501+ STORE_method_get_modify_function;
3502+ v2i_ASN1_BIT_STRING;
3503+ STORE_store_certificate;
3504+ OBJ_bsearch_ex;
3505+ X509_STORE_CTX_set_default;
3506+ STORE_ATTR_INFO_set_sha1str;
3507+ BN_GF2m_mod_inv;
3508+ BN_GF2m_mod_exp;
3509+ STORE_modify_public_key;
3510+ STORE_meth_get_list_start_fn;
3511+ STORE_method_get_list_start_function;
3512+ EC_GROUP_get0_seed;
3513+ STORE_store_arbitrary;
3514+ STORE_meth_set_unlock_store_fn;
3515+ STORE_method_set_unlock_store_function;
3516+ BN_GF2m_mod_div_arr;
3517+ ENGINE_set_ECDSA;
3518+ STORE_create_method;
3519+ ECPKParameters_print;
3520+ EC_KEY_get0_private_key;
3521+ PEM_write_EC_PUBKEY;
3522+ X509_VERIFY_PARAM_set1;
3523+ ECDH_set_method;
3524+ v2i_GENERAL_NAME_ex;
3525+ ECDH_set_ex_data;
3526+ STORE_generate_key;
3527+ BN_nist_mod_521;
3528+ X509_policy_tree_get0_level;
3529+ EC_GROUP_set_point_conversion_form;
3530+ EC_GROUP_set_point_conv_form;
3531+ PEM_read_EC_PUBKEY;
3532+ i2d_ECDSA_SIG;
3533+ ECDSA_OpenSSL;
3534+ STORE_delete_crl;
3535+ EC_KEY_get_enc_flags;
3536+ ASN1_const_check_infinite_end;
3537+ EVP_PKEY_delete_attr;
3538+ ECDSA_set_default_method;
3539+ EC_POINT_set_compressed_coordinates_GF2m;
3540+ EC_POINT_set_compr_coords_GF2m;
3541+ EC_GROUP_cmp;
3542+ STORE_revoke_certificate;
3543+ BN_get0_nist_prime_256;
3544+ STORE_meth_get_delete_fn;
3545+ STORE_method_get_delete_function;
3546+ SHA224_Init;
3547+ PEM_read_ECPrivateKey;
3548+ SHA512_Init;
3549+ STORE_parse_attrs_endp;
3550+ BN_set_negative;
3551+ ERR_load_ECDSA_strings;
3552+ EC_GROUP_get_basis_type;
3553+ STORE_list_public_key_next;
3554+ i2v_ASN1_BIT_STRING;
3555+ STORE_OBJECT_free;
3556+ BN_nist_mod_384;
3557+ i2d_X509_CERT_PAIR;
3558+ PEM_write_ECPKParameters;
3559+ ECDH_compute_key;
3560+ STORE_ATTR_INFO_get0_sha1str;
3561+ ENGINE_register_all_ECDH;
3562+ pqueue_pop;
3563+ STORE_ATTR_INFO_get0_cstr;
3564+ POLICY_CONSTRAINTS_it;
3565+ POLICY_CONSTRAINTS_it;
3566+ STORE_get_ex_new_index;
3567+ EVP_PKEY_get_attr_by_OBJ;
3568+ X509_VERIFY_PARAM_add0_policy;
3569+ BN_GF2m_mod_solve_quad;
3570+ SHA256;
3571+ i2d_ECPrivateKey_fp;
3572+ X509_policy_tree_get0_user_policies;
3573+ X509_pcy_tree_get0_usr_policies;
3574+ OPENSSL_DIR_read;
3575+ ENGINE_register_all_ECDSA;
3576+ X509_VERIFY_PARAM_lookup;
3577+ EC_POINT_get_affine_coordinates_GF2m;
3578+ EC_POINT_get_affine_coords_GF2m;
3579+ EC_GROUP_dup;
3580+ ENGINE_get_default_ECDSA;
3581+ EC_KEY_new;
3582+ SHA256_Transform;
3583+ EC_KEY_set_enc_flags;
3584+ ECDSA_verify;
3585+ EC_POINT_point2hex;
3586+ ENGINE_get_STORE;
3587+ SHA512;
3588+ STORE_get_certificate;
3589+ ECDSA_do_sign_ex;
3590+ ECDSA_do_verify;
3591+ d2i_ECPrivateKey_fp;
3592+ STORE_delete_certificate;
3593+ SHA512_Transform;
3594+ X509_STORE_set1_param;
3595+ STORE_method_get_ctrl_function;
3596+ STORE_free;
3597+ PEM_write_ECPrivateKey;
3598+ STORE_meth_get_unlock_store_fn;
3599+ STORE_method_get_unlock_store_function;
3600+ STORE_get_ex_data;
3601+ EC_KEY_set_public_key;
3602+ PEM_read_ECPKParameters;
3603+ X509_CERT_PAIR_new;
3604+ ENGINE_register_STORE;
3605+ RSA_generate_key_ex;
3606+ DSA_generate_parameters_ex;
3607+ ECParameters_print_fp;
3608+ X509V3_NAME_from_section;
3609+ EVP_PKEY_add1_attr;
3610+ STORE_modify_crl;
3611+ STORE_list_private_key_start;
3612+ POLICY_MAPPINGS_it;
3613+ POLICY_MAPPINGS_it;
3614+ GENERAL_SUBTREE_it;
3615+ GENERAL_SUBTREE_it;
3616+ EC_GROUP_get_curve_name;
3617+ PEM_write_X509_CERT_PAIR;
3618+ BIO_dump_indent_cb;
3619+ d2i_X509_CERT_PAIR;
3620+ STORE_list_private_key_endp;
3621+ asn1_const_Finish;
3622+ i2d_EC_PUBKEY_fp;
3623+ BN_nist_mod_256;
3624+ X509_VERIFY_PARAM_add0_table;
3625+ pqueue_free;
3626+ BN_BLINDING_create_param;
3627+ ECDSA_size;
3628+ d2i_EC_PUBKEY_bio;
3629+ BN_get0_nist_prime_521;
3630+ STORE_ATTR_INFO_modify_sha1str;
3631+ BN_generate_prime_ex;
3632+ EC_GROUP_new_by_curve_name;
3633+ SHA256_Final;
3634+ DH_generate_parameters_ex;
3635+ PEM_read_bio_ECPrivateKey;
3636+ STORE_meth_get_cleanup_fn;
3637+ STORE_method_get_cleanup_function;
3638+ ENGINE_get_ECDH;
3639+ d2i_ECDSA_SIG;
3640+ BN_is_prime_fasttest_ex;
3641+ ECDSA_sign;
3642+ X509_policy_check;
3643+ EVP_PKEY_get_attr_by_NID;
3644+ STORE_set_ex_data;
3645+ ENGINE_get_ECDSA;
3646+ EVP_ecdsa;
3647+ BN_BLINDING_get_flags;
3648+ PKCS12_add_cert;
3649+ STORE_OBJECT_new;
3650+ ERR_load_ECDH_strings;
3651+ EC_KEY_dup;
3652+ EVP_CIPHER_CTX_rand_key;
3653+ ECDSA_set_method;
3654+ a2i_IPADDRESS_NC;
3655+ d2i_ECParameters;
3656+ STORE_list_certificate_end;
3657+ STORE_get_crl;
3658+ X509_POLICY_NODE_print;
3659+ SHA384_Init;
3660+ EC_GF2m_simple_method;
3661+ ECDSA_set_ex_data;
3662+ SHA384_Final;
3663+ PKCS7_set_digest;
3664+ EC_KEY_print;
3665+ STORE_meth_set_lock_store_fn;
3666+ STORE_method_set_lock_store_function;
3667+ ECDSA_get_ex_new_index;
3668+ SHA384;
3669+ POLICY_MAPPING_new;
3670+ STORE_list_certificate_endp;
3671+ X509_STORE_CTX_get0_policy_tree;
3672+ EC_GROUP_set_asn1_flag;
3673+ EC_KEY_check_key;
3674+ d2i_EC_PUBKEY_fp;
3675+ PKCS7_set0_type_other;
3676+ PEM_read_bio_X509_CERT_PAIR;
3677+ pqueue_next;
3678+ STORE_meth_get_list_end_fn;
3679+ STORE_method_get_list_end_function;
3680+ EVP_PKEY_add1_attr_by_OBJ;
3681+ X509_VERIFY_PARAM_set_time;
3682+ pqueue_new;
3683+ ENGINE_set_default_ECDH;
3684+ STORE_new_method;
3685+ PKCS12_add_key;
3686+ DSO_merge;
3687+ EC_POINT_hex2point;
3688+ BIO_dump_cb;
3689+ SHA256_Update;
3690+ pqueue_insert;
3691+ pitem_free;
3692+ BN_GF2m_mod_inv_arr;
3693+ ENGINE_unregister_ECDSA;
3694+ BN_BLINDING_set_thread_id;
3695+ get_rfc3526_prime_8192;
3696+ X509_VERIFY_PARAM_clear_flags;
3697+ get_rfc2409_prime_1024;
3698+ DH_check_pub_key;
3699+ get_rfc3526_prime_2048;
3700+ get_rfc3526_prime_6144;
3701+ get_rfc3526_prime_1536;
3702+ get_rfc3526_prime_3072;
3703+ get_rfc3526_prime_4096;
3704+ get_rfc2409_prime_768;
3705+ X509_VERIFY_PARAM_get_flags;
3706+ EVP_CIPHER_CTX_new;
3707+ EVP_CIPHER_CTX_free;
3708+ Camellia_cbc_encrypt;
3709+ Camellia_cfb128_encrypt;
3710+ Camellia_cfb1_encrypt;
3711+ Camellia_cfb8_encrypt;
3712+ Camellia_ctr128_encrypt;
3713+ Camellia_cfbr_encrypt_block;
3714+ Camellia_decrypt;
3715+ Camellia_ecb_encrypt;
3716+ Camellia_encrypt;
3717+ Camellia_ofb128_encrypt;
3718+ Camellia_set_key;
3719+ EVP_camellia_128_cbc;
3720+ EVP_camellia_128_cfb128;
3721+ EVP_camellia_128_cfb1;
3722+ EVP_camellia_128_cfb8;
3723+ EVP_camellia_128_ecb;
3724+ EVP_camellia_128_ofb;
3725+ EVP_camellia_192_cbc;
3726+ EVP_camellia_192_cfb128;
3727+ EVP_camellia_192_cfb1;
3728+ EVP_camellia_192_cfb8;
3729+ EVP_camellia_192_ecb;
3730+ EVP_camellia_192_ofb;
3731+ EVP_camellia_256_cbc;
3732+ EVP_camellia_256_cfb128;
3733+ EVP_camellia_256_cfb1;
3734+ EVP_camellia_256_cfb8;
3735+ EVP_camellia_256_ecb;
3736+ EVP_camellia_256_ofb;
3737+ a2i_ipadd;
3738+ ASIdentifiers_free;
3739+ i2d_ASIdOrRange;
3740+ EVP_CIPHER_block_size;
3741+ v3_asid_is_canonical;
3742+ IPAddressChoice_free;
3743+ EVP_CIPHER_CTX_set_app_data;
3744+ BIO_set_callback_arg;
3745+ v3_addr_add_prefix;
3746+ IPAddressOrRange_it;
3747+ IPAddressOrRange_it;
3748+ BIO_set_flags;
3749+ ASIdentifiers_it;
3750+ ASIdentifiers_it;
3751+ v3_addr_get_range;
3752+ BIO_method_type;
3753+ v3_addr_inherits;
3754+ IPAddressChoice_it;
3755+ IPAddressChoice_it;
3756+ AES_ige_encrypt;
3757+ v3_addr_add_range;
3758+ EVP_CIPHER_CTX_nid;
3759+ d2i_ASRange;
3760+ v3_addr_add_inherit;
3761+ v3_asid_add_id_or_range;
3762+ v3_addr_validate_resource_set;
3763+ EVP_CIPHER_iv_length;
3764+ EVP_MD_type;
3765+ v3_asid_canonize;
3766+ IPAddressRange_free;
3767+ v3_asid_add_inherit;
3768+ EVP_CIPHER_CTX_key_length;
3769+ IPAddressRange_new;
3770+ ASIdOrRange_new;
3771+ EVP_MD_size;
3772+ EVP_MD_CTX_test_flags;
3773+ BIO_clear_flags;
3774+ i2d_ASRange;
3775+ IPAddressRange_it;
3776+ IPAddressRange_it;
3777+ IPAddressChoice_new;
3778+ ASIdentifierChoice_new;
3779+ ASRange_free;
3780+ EVP_MD_pkey_type;
3781+ EVP_MD_CTX_clear_flags;
3782+ IPAddressFamily_free;
3783+ i2d_IPAddressFamily;
3784+ IPAddressOrRange_new;
3785+ EVP_CIPHER_flags;
3786+ v3_asid_validate_resource_set;
3787+ d2i_IPAddressRange;
3788+ AES_bi_ige_encrypt;
3789+ BIO_get_callback;
3790+ IPAddressOrRange_free;
3791+ v3_addr_subset;
3792+ d2i_IPAddressFamily;
3793+ v3_asid_subset;
3794+ BIO_test_flags;
3795+ i2d_ASIdentifierChoice;
3796+ ASRange_it;
3797+ ASRange_it;
3798+ d2i_ASIdentifiers;
3799+ ASRange_new;
3800+ d2i_IPAddressChoice;
3801+ v3_addr_get_afi;
3802+ EVP_CIPHER_key_length;
3803+ EVP_Cipher;
3804+ i2d_IPAddressOrRange;
3805+ ASIdOrRange_it;
3806+ ASIdOrRange_it;
3807+ EVP_CIPHER_nid;
3808+ i2d_IPAddressChoice;
3809+ EVP_CIPHER_CTX_block_size;
3810+ ASIdentifiers_new;
3811+ v3_addr_validate_path;
3812+ IPAddressFamily_new;
3813+ EVP_MD_CTX_set_flags;
3814+ v3_addr_is_canonical;
3815+ i2d_IPAddressRange;
3816+ IPAddressFamily_it;
3817+ IPAddressFamily_it;
3818+ v3_asid_inherits;
3819+ EVP_CIPHER_CTX_cipher;
3820+ EVP_CIPHER_CTX_get_app_data;
3821+ EVP_MD_block_size;
3822+ EVP_CIPHER_CTX_flags;
3823+ v3_asid_validate_path;
3824+ d2i_IPAddressOrRange;
3825+ v3_addr_canonize;
3826+ ASIdentifierChoice_it;
3827+ ASIdentifierChoice_it;
3828+ EVP_MD_CTX_md;
3829+ d2i_ASIdentifierChoice;
3830+ BIO_method_name;
3831+ EVP_CIPHER_CTX_iv_length;
3832+ ASIdOrRange_free;
3833+ ASIdentifierChoice_free;
3834+ BIO_get_callback_arg;
3835+ BIO_set_callback;
3836+ d2i_ASIdOrRange;
3837+ i2d_ASIdentifiers;
3838+ SEED_decrypt;
3839+ SEED_encrypt;
3840+ SEED_cbc_encrypt;
3841+ EVP_seed_ofb;
3842+ SEED_cfb128_encrypt;
3843+ SEED_ofb128_encrypt;
3844+ EVP_seed_cbc;
3845+ SEED_ecb_encrypt;
3846+ EVP_seed_ecb;
3847+ SEED_set_key;
3848+ EVP_seed_cfb128;
3849+ X509_EXTENSIONS_it;
3850+ X509_EXTENSIONS_it;
3851+ X509_get1_ocsp;
3852+ OCSP_REQ_CTX_free;
3853+ i2d_X509_EXTENSIONS;
3854+ OCSP_sendreq_nbio;
3855+ OCSP_sendreq_new;
3856+ d2i_X509_EXTENSIONS;
3857+ X509_ALGORS_it;
3858+ X509_ALGORS_it;
3859+ X509_ALGOR_get0;
3860+ X509_ALGOR_set0;
3861+ AES_unwrap_key;
3862+ AES_wrap_key;
3863+ X509at_get0_data_by_OBJ;
3864+ ASN1_TYPE_set1;
3865+ ASN1_STRING_set0;
3866+ i2d_X509_ALGORS;
3867+ BIO_f_zlib;
3868+ COMP_zlib_cleanup;
3869+ d2i_X509_ALGORS;
3870+ CMS_ReceiptRequest_free;
3871+ PEM_write_CMS;
3872+ CMS_add0_CertificateChoices;
3873+ CMS_unsigned_add1_attr_by_OBJ;
3874+ ERR_load_CMS_strings;
3875+ CMS_sign_receipt;
3876+ i2d_CMS_ContentInfo;
3877+ CMS_signed_delete_attr;
3878+ d2i_CMS_bio;
3879+ CMS_unsigned_get_attr_by_NID;
3880+ CMS_verify;
3881+ SMIME_read_CMS;
3882+ CMS_decrypt_set1_key;
3883+ CMS_SignerInfo_get0_algs;
3884+ CMS_add1_cert;
3885+ CMS_set_detached;
3886+ CMS_encrypt;
3887+ CMS_EnvelopedData_create;
3888+ CMS_uncompress;
3889+ CMS_add0_crl;
3890+ CMS_SignerInfo_verify_content;
3891+ CMS_unsigned_get0_data_by_OBJ;
3892+ PEM_write_bio_CMS;
3893+ CMS_unsigned_get_attr;
3894+ CMS_RecipientInfo_ktri_cert_cmp;
3895+ CMS_RecipientInfo_ktri_get0_algs;
3896+ CMS_RecipInfo_ktri_get0_algs;
3897+ CMS_ContentInfo_free;
3898+ CMS_final;
3899+ CMS_add_simple_smimecap;
3900+ CMS_SignerInfo_verify;
3901+ CMS_data;
3902+ CMS_ContentInfo_it;
3903+ CMS_ContentInfo_it;
3904+ d2i_CMS_ReceiptRequest;
3905+ CMS_compress;
3906+ CMS_digest_create;
3907+ CMS_SignerInfo_cert_cmp;
3908+ CMS_SignerInfo_sign;
3909+ CMS_data_create;
3910+ i2d_CMS_bio;
3911+ CMS_EncryptedData_set1_key;
3912+ CMS_decrypt;
3913+ int_smime_write_ASN1;
3914+ CMS_unsigned_delete_attr;
3915+ CMS_unsigned_get_attr_count;
3916+ CMS_add_smimecap;
3917+ PEM_read_CMS;
3918+ CMS_signed_get_attr_by_OBJ;
3919+ d2i_CMS_ContentInfo;
3920+ CMS_add_standard_smimecap;
3921+ CMS_ContentInfo_new;
3922+ CMS_RecipientInfo_type;
3923+ CMS_get0_type;
3924+ CMS_is_detached;
3925+ CMS_sign;
3926+ CMS_signed_add1_attr;
3927+ CMS_unsigned_get_attr_by_OBJ;
3928+ SMIME_write_CMS;
3929+ CMS_EncryptedData_decrypt;
3930+ CMS_get0_RecipientInfos;
3931+ CMS_add0_RevocationInfoChoice;
3932+ CMS_decrypt_set1_pkey;
3933+ CMS_SignerInfo_set1_signer_cert;
3934+ CMS_get0_signers;
3935+ CMS_ReceiptRequest_get0_values;
3936+ CMS_signed_get0_data_by_OBJ;
3937+ CMS_get0_SignerInfos;
3938+ CMS_add0_cert;
3939+ CMS_EncryptedData_encrypt;
3940+ CMS_digest_verify;
3941+ CMS_set1_signers_certs;
3942+ CMS_signed_get_attr;
3943+ CMS_RecipientInfo_set0_key;
3944+ CMS_SignedData_init;
3945+ CMS_RecipientInfo_kekri_get0_id;
3946+ CMS_verify_receipt;
3947+ CMS_ReceiptRequest_it;
3948+ CMS_ReceiptRequest_it;
3949+ PEM_read_bio_CMS;
3950+ CMS_get1_crls;
3951+ CMS_add0_recipient_key;
3952+ SMIME_read_ASN1;
3953+ CMS_ReceiptRequest_new;
3954+ CMS_get0_content;
3955+ CMS_get1_ReceiptRequest;
3956+ CMS_signed_add1_attr_by_OBJ;
3957+ CMS_RecipientInfo_kekri_id_cmp;
3958+ CMS_add1_ReceiptRequest;
3959+ CMS_SignerInfo_get0_signer_id;
3960+ CMS_unsigned_add1_attr_by_NID;
3961+ CMS_unsigned_add1_attr;
3962+ CMS_signed_get_attr_by_NID;
3963+ CMS_get1_certs;
3964+ CMS_signed_add1_attr_by_NID;
3965+ CMS_unsigned_add1_attr_by_txt;
3966+ CMS_dataFinal;
3967+ CMS_RecipientInfo_ktri_get0_signer_id;
3968+ CMS_RecipInfo_ktri_get0_sigr_id;
3969+ i2d_CMS_ReceiptRequest;
3970+ CMS_add1_recipient_cert;
3971+ CMS_dataInit;
3972+ CMS_signed_add1_attr_by_txt;
3973+ CMS_RecipientInfo_decrypt;
3974+ CMS_signed_get_attr_count;
3975+ CMS_get0_eContentType;
3976+ CMS_set1_eContentType;
3977+ CMS_ReceiptRequest_create0;
3978+ CMS_add1_signer;
3979+ CMS_RecipientInfo_set0_pkey;
3980+ ENGINE_set_load_ssl_client_cert_function;
3981+ ENGINE_set_ld_ssl_clnt_cert_fn;
3982+ ENGINE_get_ssl_client_cert_function;
3983+ ENGINE_get_ssl_client_cert_fn;
3984+ ENGINE_load_ssl_client_cert;
3985+ ENGINE_load_capi;
3986+ OPENSSL_isservice;
3987+ FIPS_dsa_sig_decode;
3988+ EVP_CIPHER_CTX_clear_flags;
3989+ FIPS_rand_status;
3990+ FIPS_rand_set_key;
3991+ CRYPTO_set_mem_info_functions;
3992+ RSA_X931_generate_key_ex;
3993+ int_ERR_set_state_func;
3994+ int_EVP_MD_set_engine_callbacks;
3995+ int_CRYPTO_set_do_dynlock_callback;
3996+ FIPS_rng_stick;
3997+ EVP_CIPHER_CTX_set_flags;
3998+ BN_X931_generate_prime_ex;
3999+ FIPS_selftest_check;
4000+ FIPS_rand_set_dt;
4001+ CRYPTO_dbg_pop_info;
4002+ FIPS_dsa_free;
4003+ RSA_X931_derive_ex;
4004+ FIPS_rsa_new;
4005+ FIPS_rand_bytes;
4006+ fips_cipher_test;
4007+ EVP_CIPHER_CTX_test_flags;
4008+ CRYPTO_malloc_debug_init;
4009+ CRYPTO_dbg_push_info;
4010+ FIPS_corrupt_rsa_keygen;
4011+ FIPS_dh_new;
4012+ FIPS_corrupt_dsa_keygen;
4013+ FIPS_dh_free;
4014+ fips_pkey_signature_test;
4015+ EVP_add_alg_module;
4016+ int_RAND_init_engine_callbacks;
4017+ int_EVP_CIPHER_set_engine_callbacks;
4018+ int_EVP_MD_init_engine_callbacks;
4019+ FIPS_rand_test_mode;
4020+ FIPS_rand_reset;
4021+ FIPS_dsa_new;
4022+ int_RAND_set_callbacks;
4023+ BN_X931_derive_prime_ex;
4024+ int_ERR_lib_init;
4025+ int_EVP_CIPHER_init_engine_callbacks;
4026+ FIPS_rsa_free;
4027+ FIPS_dsa_sig_encode;
4028+ CRYPTO_dbg_remove_all_info;
4029+ OPENSSL_init;
4030+ CRYPTO_strdup;
4031+ JPAKE_STEP3A_process;
4032+ JPAKE_STEP1_release;
4033+ JPAKE_get_shared_key;
4034+ JPAKE_STEP3B_init;
4035+ JPAKE_STEP1_generate;
4036+ JPAKE_STEP1_init;
4037+ JPAKE_STEP3B_process;
4038+ JPAKE_STEP2_generate;
4039+ JPAKE_CTX_new;
4040+ JPAKE_CTX_free;
4041+ JPAKE_STEP3B_release;
4042+ JPAKE_STEP3A_release;
4043+ JPAKE_STEP2_process;
4044+ JPAKE_STEP3B_generate;
4045+ JPAKE_STEP1_process;
4046+ JPAKE_STEP3A_generate;
4047+ JPAKE_STEP2_release;
4048+ JPAKE_STEP3A_init;
4049+ ERR_load_JPAKE_strings;
4050+ JPAKE_STEP2_init;
4051+ pqueue_size;
4052+ i2d_TS_ACCURACY;
4053+ i2d_TS_MSG_IMPRINT_fp;
4054+ i2d_TS_MSG_IMPRINT;
4055+ EVP_PKEY_print_public;
4056+ EVP_PKEY_CTX_new;
4057+ i2d_TS_TST_INFO;
4058+ EVP_PKEY_asn1_find;
4059+ DSO_METHOD_beos;
4060+ TS_CONF_load_cert;
4061+ TS_REQ_get_ext;
4062+ EVP_PKEY_sign_init;
4063+ ASN1_item_print;
4064+ TS_TST_INFO_set_nonce;
4065+ TS_RESP_dup;
4066+ ENGINE_register_pkey_meths;
4067+ EVP_PKEY_asn1_add0;
4068+ PKCS7_add0_attrib_signing_time;
4069+ i2d_TS_TST_INFO_fp;
4070+ BIO_asn1_get_prefix;
4071+ TS_TST_INFO_set_time;
4072+ EVP_PKEY_meth_set_decrypt;
4073+ EVP_PKEY_set_type_str;
4074+ EVP_PKEY_CTX_get_keygen_info;
4075+ TS_REQ_set_policy_id;
4076+ d2i_TS_RESP_fp;
4077+ ENGINE_get_pkey_asn1_meth_engine;
4078+ ENGINE_get_pkey_asn1_meth_eng;
4079+ WHIRLPOOL_Init;
4080+ TS_RESP_set_status_info;
4081+ EVP_PKEY_keygen;
4082+ EVP_DigestSignInit;
4083+ TS_ACCURACY_set_millis;
4084+ TS_REQ_dup;
4085+ GENERAL_NAME_dup;
4086+ ASN1_SEQUENCE_ANY_it;
4087+ ASN1_SEQUENCE_ANY_it;
4088+ WHIRLPOOL;
4089+ X509_STORE_get1_crls;
4090+ ENGINE_get_pkey_asn1_meth;
4091+ EVP_PKEY_asn1_new;
4092+ BIO_new_NDEF;
4093+ ENGINE_get_pkey_meth;
4094+ TS_MSG_IMPRINT_set_algo;
4095+ i2d_TS_TST_INFO_bio;
4096+ TS_TST_INFO_set_ordering;
4097+ TS_TST_INFO_get_ext_by_OBJ;
4098+ CRYPTO_THREADID_set_pointer;
4099+ TS_CONF_get_tsa_section;
4100+ SMIME_write_ASN1;
4101+ TS_RESP_CTX_set_signer_key;
4102+ EVP_PKEY_encrypt_old;
4103+ EVP_PKEY_encrypt_init;
4104+ CRYPTO_THREADID_cpy;
4105+ ASN1_PCTX_get_cert_flags;
4106+ i2d_ESS_SIGNING_CERT;
4107+ TS_CONF_load_key;
4108+ i2d_ASN1_SEQUENCE_ANY;
4109+ d2i_TS_MSG_IMPRINT_bio;
4110+ EVP_PKEY_asn1_set_public;
4111+ b2i_PublicKey_bio;
4112+ BIO_asn1_set_prefix;
4113+ EVP_PKEY_new_mac_key;
4114+ BIO_new_CMS;
4115+ CRYPTO_THREADID_cmp;
4116+ TS_REQ_ext_free;
4117+ EVP_PKEY_asn1_set_free;
4118+ EVP_PKEY_get0_asn1;
4119+ d2i_NETSCAPE_X509;
4120+ EVP_PKEY_verify_recover_init;
4121+ EVP_PKEY_CTX_set_data;
4122+ EVP_PKEY_keygen_init;
4123+ TS_RESP_CTX_set_status_info;
4124+ TS_MSG_IMPRINT_get_algo;
4125+ TS_REQ_print_bio;
4126+ EVP_PKEY_CTX_ctrl_str;
4127+ EVP_PKEY_get_default_digest_nid;
4128+ PEM_write_bio_PKCS7_stream;
4129+ TS_MSG_IMPRINT_print_bio;
4130+ BN_asc2bn;
4131+ TS_REQ_get_policy_id;
4132+ ENGINE_set_default_pkey_asn1_meths;
4133+ ENGINE_set_def_pkey_asn1_meths;
4134+ d2i_TS_ACCURACY;
4135+ DSO_global_lookup;
4136+ TS_CONF_set_tsa_name;
4137+ i2d_ASN1_SET_ANY;
4138+ ENGINE_load_gost;
4139+ WHIRLPOOL_BitUpdate;
4140+ ASN1_PCTX_get_flags;
4141+ TS_TST_INFO_get_ext_by_NID;
4142+ TS_RESP_new;
4143+ ESS_CERT_ID_dup;
4144+ TS_STATUS_INFO_dup;
4145+ TS_REQ_delete_ext;
4146+ EVP_DigestVerifyFinal;
4147+ EVP_PKEY_print_params;
4148+ i2d_CMS_bio_stream;
4149+ TS_REQ_get_msg_imprint;
4150+ OBJ_find_sigid_by_algs;
4151+ TS_TST_INFO_get_serial;
4152+ TS_REQ_get_nonce;
4153+ X509_PUBKEY_set0_param;
4154+ EVP_PKEY_CTX_set0_keygen_info;
4155+ DIST_POINT_set_dpname;
4156+ i2d_ISSUING_DIST_POINT;
4157+ ASN1_SET_ANY_it;
4158+ ASN1_SET_ANY_it;
4159+ EVP_PKEY_CTX_get_data;
4160+ TS_STATUS_INFO_print_bio;
4161+ EVP_PKEY_derive_init;
4162+ d2i_TS_TST_INFO;
4163+ EVP_PKEY_asn1_add_alias;
4164+ d2i_TS_RESP_bio;
4165+ OTHERNAME_cmp;
4166+ GENERAL_NAME_set0_value;
4167+ PKCS7_RECIP_INFO_get0_alg;
4168+ TS_RESP_CTX_new;
4169+ TS_RESP_set_tst_info;
4170+ PKCS7_final;
4171+ EVP_PKEY_base_id;
4172+ TS_RESP_CTX_set_signer_cert;
4173+ TS_REQ_set_msg_imprint;
4174+ EVP_PKEY_CTX_ctrl;
4175+ TS_CONF_set_digests;
4176+ d2i_TS_MSG_IMPRINT;
4177+ EVP_PKEY_meth_set_ctrl;
4178+ TS_REQ_get_ext_by_NID;
4179+ PKCS5_pbe_set0_algor;
4180+ BN_BLINDING_thread_id;
4181+ TS_ACCURACY_new;
4182+ X509_CRL_METHOD_free;
4183+ ASN1_PCTX_get_nm_flags;
4184+ EVP_PKEY_meth_set_sign;
4185+ CRYPTO_THREADID_current;
4186+ EVP_PKEY_decrypt_init;
4187+ NETSCAPE_X509_free;
4188+ i2b_PVK_bio;
4189+ EVP_PKEY_print_private;
4190+ GENERAL_NAME_get0_value;
4191+ b2i_PVK_bio;
4192+ ASN1_UTCTIME_adj;
4193+ TS_TST_INFO_new;
4194+ EVP_MD_do_all_sorted;
4195+ TS_CONF_set_default_engine;
4196+ TS_ACCURACY_set_seconds;
4197+ TS_TST_INFO_get_time;
4198+ PKCS8_pkey_get0;
4199+ EVP_PKEY_asn1_get0;
4200+ OBJ_add_sigid;
4201+ PKCS7_SIGNER_INFO_sign;
4202+ EVP_PKEY_paramgen_init;
4203+ EVP_PKEY_sign;
4204+ OBJ_sigid_free;
4205+ EVP_PKEY_meth_set_init;
4206+ d2i_ESS_ISSUER_SERIAL;
4207+ ISSUING_DIST_POINT_new;
4208+ ASN1_TIME_adj;
4209+ TS_OBJ_print_bio;
4210+ EVP_PKEY_meth_set_verify_recover;
4211+ EVP_PKEY_meth_set_vrfy_recover;
4212+ TS_RESP_get_status_info;
4213+ CMS_stream;
4214+ EVP_PKEY_CTX_set_cb;
4215+ PKCS7_to_TS_TST_INFO;
4216+ ASN1_PCTX_get_oid_flags;
4217+ TS_TST_INFO_add_ext;
4218+ EVP_PKEY_meth_set_derive;
4219+ i2d_TS_RESP_fp;
4220+ i2d_TS_MSG_IMPRINT_bio;
4221+ TS_RESP_CTX_set_accuracy;
4222+ TS_REQ_set_nonce;
4223+ ESS_CERT_ID_new;
4224+ ENGINE_pkey_asn1_find_str;
4225+ TS_REQ_get_ext_count;
4226+ BUF_reverse;
4227+ TS_TST_INFO_print_bio;
4228+ d2i_ISSUING_DIST_POINT;
4229+ ENGINE_get_pkey_meths;
4230+ i2b_PrivateKey_bio;
4231+ i2d_TS_RESP;
4232+ b2i_PublicKey;
4233+ TS_VERIFY_CTX_cleanup;
4234+ TS_STATUS_INFO_free;
4235+ TS_RESP_verify_token;
4236+ OBJ_bsearch_ex_;
4237+ ASN1_bn_print;
4238+ EVP_PKEY_asn1_get_count;
4239+ ENGINE_register_pkey_asn1_meths;
4240+ ASN1_PCTX_set_nm_flags;
4241+ EVP_DigestVerifyInit;
4242+ ENGINE_set_default_pkey_meths;
4243+ TS_TST_INFO_get_policy_id;
4244+ TS_REQ_get_cert_req;
4245+ X509_CRL_set_meth_data;
4246+ PKCS8_pkey_set0;
4247+ ASN1_STRING_copy;
4248+ d2i_TS_TST_INFO_fp;
4249+ X509_CRL_match;
4250+ EVP_PKEY_asn1_set_private;
4251+ TS_TST_INFO_get_ext_d2i;
4252+ TS_RESP_CTX_add_policy;
4253+ d2i_TS_RESP;
4254+ TS_CONF_load_certs;
4255+ TS_TST_INFO_get_msg_imprint;
4256+ ERR_load_TS_strings;
4257+ TS_TST_INFO_get_version;
4258+ EVP_PKEY_CTX_dup;
4259+ EVP_PKEY_meth_set_verify;
4260+ i2b_PublicKey_bio;
4261+ TS_CONF_set_certs;
4262+ EVP_PKEY_asn1_get0_info;
4263+ TS_VERIFY_CTX_free;
4264+ TS_REQ_get_ext_by_critical;
4265+ TS_RESP_CTX_set_serial_cb;
4266+ X509_CRL_get_meth_data;
4267+ TS_RESP_CTX_set_time_cb;
4268+ TS_MSG_IMPRINT_get_msg;
4269+ TS_TST_INFO_ext_free;
4270+ TS_REQ_get_version;
4271+ TS_REQ_add_ext;
4272+ EVP_PKEY_CTX_set_app_data;
4273+ OBJ_bsearch_;
4274+ EVP_PKEY_meth_set_verifyctx;
4275+ i2d_PKCS7_bio_stream;
4276+ CRYPTO_THREADID_set_numeric;
4277+ PKCS7_sign_add_signer;
4278+ d2i_TS_TST_INFO_bio;
4279+ TS_TST_INFO_get_ordering;
4280+ TS_RESP_print_bio;
4281+ TS_TST_INFO_get_exts;
4282+ HMAC_CTX_copy;
4283+ PKCS5_pbe2_set_iv;
4284+ ENGINE_get_pkey_asn1_meths;
4285+ b2i_PrivateKey;
4286+ EVP_PKEY_CTX_get_app_data;
4287+ TS_REQ_set_cert_req;
4288+ CRYPTO_THREADID_set_callback;
4289+ TS_CONF_set_serial;
4290+ TS_TST_INFO_free;
4291+ d2i_TS_REQ_fp;
4292+ TS_RESP_verify_response;
4293+ i2d_ESS_ISSUER_SERIAL;
4294+ TS_ACCURACY_get_seconds;
4295+ EVP_CIPHER_do_all;
4296+ b2i_PrivateKey_bio;
4297+ OCSP_CERTID_dup;
4298+ X509_PUBKEY_get0_param;
4299+ TS_MSG_IMPRINT_dup;
4300+ PKCS7_print_ctx;
4301+ i2d_TS_REQ_bio;
4302+ EVP_whirlpool;
4303+ EVP_PKEY_asn1_set_param;
4304+ EVP_PKEY_meth_set_encrypt;
4305+ ASN1_PCTX_set_flags;
4306+ i2d_ESS_CERT_ID;
4307+ TS_VERIFY_CTX_new;
4308+ TS_RESP_CTX_set_extension_cb;
4309+ ENGINE_register_all_pkey_meths;
4310+ TS_RESP_CTX_set_status_info_cond;
4311+ TS_RESP_CTX_set_stat_info_cond;
4312+ EVP_PKEY_verify;
4313+ WHIRLPOOL_Final;
4314+ X509_CRL_METHOD_new;
4315+ EVP_DigestSignFinal;
4316+ TS_RESP_CTX_set_def_policy;
4317+ NETSCAPE_X509_it;
4318+ NETSCAPE_X509_it;
4319+ TS_RESP_create_response;
4320+ PKCS7_SIGNER_INFO_get0_algs;
4321+ TS_TST_INFO_get_nonce;
4322+ EVP_PKEY_decrypt_old;
4323+ TS_TST_INFO_set_policy_id;
4324+ TS_CONF_set_ess_cert_id_chain;
4325+ EVP_PKEY_CTX_get0_pkey;
4326+ d2i_TS_REQ;
4327+ EVP_PKEY_asn1_find_str;
4328+ BIO_f_asn1;
4329+ ESS_SIGNING_CERT_new;
4330+ EVP_PBE_find;
4331+ X509_CRL_get0_by_cert;
4332+ EVP_PKEY_derive;
4333+ i2d_TS_REQ;
4334+ TS_TST_INFO_delete_ext;
4335+ ESS_ISSUER_SERIAL_free;
4336+ ASN1_PCTX_set_str_flags;
4337+ ENGINE_get_pkey_asn1_meth_str;
4338+ TS_CONF_set_signer_key;
4339+ TS_ACCURACY_get_millis;
4340+ TS_RESP_get_token;
4341+ TS_ACCURACY_dup;
4342+ ENGINE_register_all_pkey_asn1_meths;
4343+ ENGINE_reg_all_pkey_asn1_meths;
4344+ X509_CRL_set_default_method;
4345+ CRYPTO_THREADID_hash;
4346+ CMS_ContentInfo_print_ctx;
4347+ TS_RESP_free;
4348+ ISSUING_DIST_POINT_free;
4349+ ESS_ISSUER_SERIAL_new;
4350+ CMS_add1_crl;
4351+ PKCS7_add1_attrib_digest;
4352+ TS_RESP_CTX_add_md;
4353+ TS_TST_INFO_dup;
4354+ ENGINE_set_pkey_asn1_meths;
4355+ PEM_write_bio_Parameters;
4356+ TS_TST_INFO_get_accuracy;
4357+ X509_CRL_get0_by_serial;
4358+ TS_TST_INFO_set_version;
4359+ TS_RESP_CTX_get_tst_info;
4360+ TS_RESP_verify_signature;
4361+ CRYPTO_THREADID_get_callback;
4362+ TS_TST_INFO_get_tsa;
4363+ TS_STATUS_INFO_new;
4364+ EVP_PKEY_CTX_get_cb;
4365+ TS_REQ_get_ext_d2i;
4366+ GENERAL_NAME_set0_othername;
4367+ TS_TST_INFO_get_ext_count;
4368+ TS_RESP_CTX_get_request;
4369+ i2d_NETSCAPE_X509;
4370+ ENGINE_get_pkey_meth_engine;
4371+ EVP_PKEY_meth_set_signctx;
4372+ EVP_PKEY_asn1_copy;
4373+ ASN1_TYPE_cmp;
4374+ EVP_CIPHER_do_all_sorted;
4375+ EVP_PKEY_CTX_free;
4376+ ISSUING_DIST_POINT_it;
4377+ ISSUING_DIST_POINT_it;
4378+ d2i_TS_MSG_IMPRINT_fp;
4379+ X509_STORE_get1_certs;
4380+ EVP_PKEY_CTX_get_operation;
4381+ d2i_ESS_SIGNING_CERT;
4382+ TS_CONF_set_ordering;
4383+ EVP_PBE_alg_add_type;
4384+ TS_REQ_set_version;
4385+ EVP_PKEY_get0;
4386+ BIO_asn1_set_suffix;
4387+ i2d_TS_STATUS_INFO;
4388+ EVP_MD_do_all;
4389+ TS_TST_INFO_set_accuracy;
4390+ PKCS7_add_attrib_content_type;
4391+ ERR_remove_thread_state;
4392+ EVP_PKEY_meth_add0;
4393+ TS_TST_INFO_set_tsa;
4394+ EVP_PKEY_meth_new;
4395+ WHIRLPOOL_Update;
4396+ TS_CONF_set_accuracy;
4397+ ASN1_PCTX_set_oid_flags;
4398+ ESS_SIGNING_CERT_dup;
4399+ d2i_TS_REQ_bio;
4400+ X509_time_adj_ex;
4401+ TS_RESP_CTX_add_flags;
4402+ d2i_TS_STATUS_INFO;
4403+ TS_MSG_IMPRINT_set_msg;
4404+ BIO_asn1_get_suffix;
4405+ TS_REQ_free;
4406+ EVP_PKEY_meth_free;
4407+ TS_REQ_get_exts;
4408+ TS_RESP_CTX_set_clock_precision_digits;
4409+ TS_RESP_CTX_set_clk_prec_digits;
4410+ TS_RESP_CTX_add_failure_info;
4411+ i2d_TS_RESP_bio;
4412+ EVP_PKEY_CTX_get0_peerkey;
4413+ PEM_write_bio_CMS_stream;
4414+ TS_REQ_new;
4415+ TS_MSG_IMPRINT_new;
4416+ EVP_PKEY_meth_find;
4417+ EVP_PKEY_id;
4418+ TS_TST_INFO_set_serial;
4419+ a2i_GENERAL_NAME;
4420+ TS_CONF_set_crypto_device;
4421+ EVP_PKEY_verify_init;
4422+ TS_CONF_set_policies;
4423+ ASN1_PCTX_new;
4424+ ESS_CERT_ID_free;
4425+ ENGINE_unregister_pkey_meths;
4426+ TS_MSG_IMPRINT_free;
4427+ TS_VERIFY_CTX_init;
4428+ PKCS7_stream;
4429+ TS_RESP_CTX_set_certs;
4430+ TS_CONF_set_def_policy;
4431+ ASN1_GENERALIZEDTIME_adj;
4432+ NETSCAPE_X509_new;
4433+ TS_ACCURACY_free;
4434+ TS_RESP_get_tst_info;
4435+ EVP_PKEY_derive_set_peer;
4436+ PEM_read_bio_Parameters;
4437+ TS_CONF_set_clock_precision_digits;
4438+ TS_CONF_set_clk_prec_digits;
4439+ ESS_ISSUER_SERIAL_dup;
4440+ TS_ACCURACY_get_micros;
4441+ ASN1_PCTX_get_str_flags;
4442+ NAME_CONSTRAINTS_check;
4443+ ASN1_BIT_STRING_check;
4444+ X509_check_akid;
4445+ ENGINE_unregister_pkey_asn1_meths;
4446+ ENGINE_unreg_pkey_asn1_meths;
4447+ ASN1_PCTX_free;
4448+ PEM_write_bio_ASN1_stream;
4449+ i2d_ASN1_bio_stream;
4450+ TS_X509_ALGOR_print_bio;
4451+ EVP_PKEY_meth_set_cleanup;
4452+ EVP_PKEY_asn1_free;
4453+ ESS_SIGNING_CERT_free;
4454+ TS_TST_INFO_set_msg_imprint;
4455+ GENERAL_NAME_cmp;
4456+ d2i_ASN1_SET_ANY;
4457+ ENGINE_set_pkey_meths;
4458+ i2d_TS_REQ_fp;
4459+ d2i_ASN1_SEQUENCE_ANY;
4460+ GENERAL_NAME_get0_otherName;
4461+ d2i_ESS_CERT_ID;
4462+ OBJ_find_sigid_algs;
4463+ EVP_PKEY_meth_set_keygen;
4464+ PKCS5_PBKDF2_HMAC;
4465+ EVP_PKEY_paramgen;
4466+ EVP_PKEY_meth_set_paramgen;
4467+ BIO_new_PKCS7;
4468+ EVP_PKEY_verify_recover;
4469+ TS_ext_print_bio;
4470+ TS_ASN1_INTEGER_print_bio;
4471+ check_defer;
4472+ DSO_pathbyaddr;
4473+ EVP_PKEY_set_type;
4474+ TS_ACCURACY_set_micros;
4475+ TS_REQ_to_TS_VERIFY_CTX;
4476+ EVP_PKEY_meth_set_copy;
4477+ ASN1_PCTX_set_cert_flags;
4478+ TS_TST_INFO_get_ext;
4479+ EVP_PKEY_asn1_set_ctrl;
4480+ TS_TST_INFO_get_ext_by_critical;
4481+ EVP_PKEY_CTX_new_id;
4482+ TS_REQ_get_ext_by_OBJ;
4483+ TS_CONF_set_signer_cert;
4484+ X509_NAME_hash_old;
4485+ ASN1_TIME_set_string;
4486+ EVP_MD_flags;
4487+ TS_RESP_CTX_free;
4488+ DSAparams_dup;
4489+ DHparams_dup;
4490+ OCSP_REQ_CTX_add1_header;
4491+ OCSP_REQ_CTX_set1_req;
4492+ X509_STORE_set_verify_cb;
4493+ X509_STORE_CTX_get0_current_crl;
4494+ X509_STORE_CTX_get0_parent_ctx;
4495+ X509_STORE_CTX_get0_current_issuer;
4496+ X509_STORE_CTX_get0_cur_issuer;
4497+ X509_issuer_name_hash_old;
4498+ X509_subject_name_hash_old;
4499+ EVP_CIPHER_CTX_copy;
4500+ UI_method_get_prompt_constructor;
4501+ UI_method_get_prompt_constructr;
4502+ UI_method_set_prompt_constructor;
4503+ UI_method_set_prompt_constructr;
4504+ EVP_read_pw_string_min;
4505+ CRYPTO_cts128_encrypt;
4506+ CRYPTO_cts128_decrypt_block;
4507+ CRYPTO_cfb128_1_encrypt;
4508+ CRYPTO_cbc128_encrypt;
4509+ CRYPTO_ctr128_encrypt;
4510+ CRYPTO_ofb128_encrypt;
4511+ CRYPTO_cts128_decrypt;
4512+ CRYPTO_cts128_encrypt_block;
4513+ CRYPTO_cbc128_decrypt;
4514+ CRYPTO_cfb128_encrypt;
4515+ CRYPTO_cfb128_8_encrypt;
4516+
4517+ local:
4518+ *;
4519+};
4520+
4521+
4522+OPENSSL_1.0.1 {
4523+ global:
4524+ SSL_renegotiate_abbreviated;
4525+ TLSv1_1_method;
4526+ TLSv1_1_client_method;
4527+ TLSv1_1_server_method;
4528+ SSL_CTX_set_srp_client_pwd_callback;
4529+ SSL_CTX_set_srp_client_pwd_cb;
4530+ SSL_get_srp_g;
4531+ SSL_CTX_set_srp_username_callback;
4532+ SSL_CTX_set_srp_un_cb;
4533+ SSL_get_srp_userinfo;
4534+ SSL_set_srp_server_param;
4535+ SSL_set_srp_server_param_pw;
4536+ SSL_get_srp_N;
4537+ SSL_get_srp_username;
4538+ SSL_CTX_set_srp_password;
4539+ SSL_CTX_set_srp_strength;
4540+ SSL_CTX_set_srp_verify_param_callback;
4541+ SSL_CTX_set_srp_vfy_param_cb;
4542+ SSL_CTX_set_srp_cb_arg;
4543+ SSL_CTX_set_srp_username;
4544+ SSL_CTX_SRP_CTX_init;
4545+ SSL_SRP_CTX_init;
4546+ SRP_Calc_A_param;
4547+ SRP_generate_server_master_secret;
4548+ SRP_gen_server_master_secret;
4549+ SSL_CTX_SRP_CTX_free;
4550+ SRP_generate_client_master_secret;
4551+ SRP_gen_client_master_secret;
4552+ SSL_srp_server_param_with_username;
4553+ SSL_srp_server_param_with_un;
4554+ SSL_SRP_CTX_free;
4555+ SSL_set_debug;
4556+ SSL_SESSION_get0_peer;
4557+ TLSv1_2_client_method;
4558+ SSL_SESSION_set1_id_context;
4559+ TLSv1_2_server_method;
4560+ SSL_cache_hit;
4561+ SSL_get0_kssl_ctx;
4562+ SSL_set0_kssl_ctx;
4563+ SSL_set_state;
4564+ SSL_CIPHER_get_id;
4565+ TLSv1_2_method;
4566+ kssl_ctx_get0_client_princ;
4567+ SSL_export_keying_material;
4568+ SSL_set_tlsext_use_srtp;
4569+ SSL_CTX_set_next_protos_advertised_cb;
4570+ SSL_CTX_set_next_protos_adv_cb;
4571+ SSL_get0_next_proto_negotiated;
4572+ SSL_get_selected_srtp_profile;
4573+ SSL_CTX_set_tlsext_use_srtp;
4574+ SSL_select_next_proto;
4575+ SSL_get_srtp_profiles;
4576+ SSL_CTX_set_next_proto_select_cb;
4577+ SSL_CTX_set_next_proto_sel_cb;
4578+ SSL_SESSION_get_compress_id;
4579+
4580+ SRP_VBASE_get_by_user;
4581+ SRP_Calc_server_key;
4582+ SRP_create_verifier;
4583+ SRP_create_verifier_BN;
4584+ SRP_Calc_u;
4585+ SRP_VBASE_free;
4586+ SRP_Calc_client_key;
4587+ SRP_get_default_gN;
4588+ SRP_Calc_x;
4589+ SRP_Calc_B;
4590+ SRP_VBASE_new;
4591+ SRP_check_known_gN_param;
4592+ SRP_Calc_A;
4593+ SRP_Verify_A_mod_N;
4594+ SRP_VBASE_init;
4595+ SRP_Verify_B_mod_N;
4596+ EC_KEY_set_public_key_affine_coordinates;
4597+ EC_KEY_set_pub_key_aff_coords;
4598+ EVP_aes_192_ctr;
4599+ EVP_PKEY_meth_get0_info;
4600+ EVP_PKEY_meth_copy;
4601+ ERR_add_error_vdata;
4602+ EVP_aes_128_ctr;
4603+ EVP_aes_256_ctr;
4604+ EC_GFp_nistp224_method;
4605+ EC_KEY_get_flags;
4606+ RSA_padding_add_PKCS1_PSS_mgf1;
4607+ EVP_aes_128_xts;
4608+ EVP_aes_256_xts;
4609+ EVP_aes_128_gcm;
4610+ EC_KEY_clear_flags;
4611+ EC_KEY_set_flags;
4612+ EVP_aes_256_ccm;
4613+ RSA_verify_PKCS1_PSS_mgf1;
4614+ EVP_aes_128_ccm;
4615+ EVP_aes_192_gcm;
4616+ X509_ALGOR_set_md;
4617+ RAND_init_fips;
4618+ EVP_aes_256_gcm;
4619+ EVP_aes_192_ccm;
4620+ CMAC_CTX_copy;
4621+ CMAC_CTX_free;
4622+ CMAC_CTX_get0_cipher_ctx;
4623+ CMAC_CTX_cleanup;
4624+ CMAC_Init;
4625+ CMAC_Update;
4626+ CMAC_resume;
4627+ CMAC_CTX_new;
4628+ CMAC_Final;
4629+ CRYPTO_ctr128_encrypt_ctr32;
4630+ CRYPTO_gcm128_release;
4631+ CRYPTO_ccm128_decrypt_ccm64;
4632+ CRYPTO_ccm128_encrypt;
4633+ CRYPTO_gcm128_encrypt;
4634+ CRYPTO_xts128_encrypt;
4635+ EVP_rc4_hmac_md5;
4636+ CRYPTO_nistcts128_decrypt_block;
4637+ CRYPTO_gcm128_setiv;
4638+ CRYPTO_nistcts128_encrypt;
4639+ EVP_aes_128_cbc_hmac_sha1;
4640+ CRYPTO_gcm128_tag;
4641+ CRYPTO_ccm128_encrypt_ccm64;
4642+ ENGINE_load_rdrand;
4643+ CRYPTO_ccm128_setiv;
4644+ CRYPTO_nistcts128_encrypt_block;
4645+ CRYPTO_gcm128_aad;
4646+ CRYPTO_ccm128_init;
4647+ CRYPTO_nistcts128_decrypt;
4648+ CRYPTO_gcm128_new;
4649+ CRYPTO_ccm128_tag;
4650+ CRYPTO_ccm128_decrypt;
4651+ CRYPTO_ccm128_aad;
4652+ CRYPTO_gcm128_init;
4653+ CRYPTO_gcm128_decrypt;
4654+ ENGINE_load_rsax;
4655+ CRYPTO_gcm128_decrypt_ctr32;
4656+ CRYPTO_gcm128_encrypt_ctr32;
4657+ CRYPTO_gcm128_finish;
4658+ EVP_aes_256_cbc_hmac_sha1;
4659+ PKCS5_pbkdf2_set;
4660+ CMS_add0_recipient_password;
4661+ CMS_decrypt_set1_password;
4662+ CMS_RecipientInfo_set0_password;
4663+ RAND_set_fips_drbg_type;
4664+ X509_REQ_sign_ctx;
4665+ RSA_PSS_PARAMS_new;
4666+ X509_CRL_sign_ctx;
4667+ X509_signature_dump;
4668+ d2i_RSA_PSS_PARAMS;
4669+ RSA_PSS_PARAMS_it;
4670+ RSA_PSS_PARAMS_it;
4671+ RSA_PSS_PARAMS_free;
4672+ X509_sign_ctx;
4673+ i2d_RSA_PSS_PARAMS;
4674+ ASN1_item_sign_ctx;
4675+ EC_GFp_nistp521_method;
4676+ EC_GFp_nistp256_method;
4677+ OPENSSL_stderr;
4678+ OPENSSL_cpuid_setup;
4679+ OPENSSL_showfatal;
4680+ BIO_new_dgram_sctp;
4681+ BIO_dgram_sctp_msg_waiting;
4682+ BIO_dgram_sctp_wait_for_dry;
4683+ BIO_s_datagram_sctp;
4684+ BIO_dgram_is_sctp;
4685+ BIO_dgram_sctp_notification_cb;
4686+} OPENSSL_1.0.0;
4687+
4688+OPENSSL_1.0.1d {
4689+ global:
4690+ CRYPTO_memcmp;
4691+} OPENSSL_1.0.1;
4692+
4693--
46941.7.9.5
4695
diff --git a/meta-qat/recipes-extended/openssl-qat/openssl-qat/openssl_qat-build-qat_mem-ko-against-yocto-kernel.patch b/meta-qat/recipes-extended/openssl-qat/openssl-qat/openssl_qat-build-qat_mem-ko-against-yocto-kernel.patch
new file mode 100644
index 0000000..7c43b56
--- /dev/null
+++ b/meta-qat/recipes-extended/openssl-qat/openssl-qat/openssl_qat-build-qat_mem-ko-against-yocto-kernel.patch
@@ -0,0 +1,62 @@
1From 3927de1c19b48a031b27b2635928cd6f9650d02e Mon Sep 17 00:00:00 2001
2From: Anuj Mittal <anujx.mittal@intel.com>
3Date: Wed, 8 Jul 2015 17:49:09 +0800
4Subject: [PATCH] openssl-qat: build qat_mem ko against yocto kernel
5
6Upstream-Status: Inappropriate [Configuration]
7
8Signed-off-by: Anuj Mittal <anujx.mittal@intel.com>
9---
10 engines/qat_engine/qat_mem/Makefile | 23 +++++++----------------
11 1 file changed, 7 insertions(+), 16 deletions(-)
12
13diff --git a/engines/qat_engine/qat_mem/Makefile b/engines/qat_engine/qat_mem/Makefile
14index 3d9a19f..4369503 100644
15--- a/engines/qat_engine/qat_mem/Makefile
16+++ b/engines/qat_engine/qat_mem/Makefile
17@@ -9,23 +9,10 @@
18 MODULENAME := qat_mem
19 ### should not need to change stuff below ######################
20
21-
22-KDIR := /lib/modules/$(shell uname -r)/build
23-#KDIR := /exports/linux-2.6.12.2/
24+KDIR := $(KERNEL_SOURCE_ROOT)
25 PWD := $(shell pwd)
26
27-ifeq ($(shell uname -r|grep -c grsec-WR), 1)
28-AUTO_CONF=/lib/modules/$(shell uname -r)/build/include/generated/autoconf.h
29-else
30-AUTO_CONF=/usr/src/kernels/$(shell uname -r)/include/linux/autoconf.h
31-endif
32-
33-ifdef KERNEL_SOURCE_ROOT
34-AUTO_CONF=$(KERNEL_SOURCE_ROOT)/include/linux/autoconf.h
35-KDIR=$(KERNEL_SOURCE_ROOT)
36-endif
37-
38-CC := gcc -Wall -imacros $(AUTO_CONF)
39+CC := ${CC} -Wall -imacros $(KERNEL_BUILDDIR)/include/generated/autoconf.h
40
41 ifeq ($(KERNELRELEASE),)
42 all: $(MODULENAME)_test
43@@ -38,6 +25,11 @@ endif
44 $(MODULENAME)_test: $(MODULENAME)_test.c
45 $(CC) -g -o $(MODULENAME)_test $(MODULENAME)_test.c
46
47+install: modules_install
48+ cp $(MODULENAME)_test $(DESTDIR)
49+
50+modules_install:
51+ $(MAKE) -C $(KDIR) M=$(PWD) modules_install
52
53 load:
54 insmod ./$(MODULENAME).ko
55@@ -50,4 +42,3 @@ test: all
56
57 clean:
58 rm -f *.o *.ko Modules.symvers *.mod.c .*.cmd $(MODULENAME)_test
59-
60--
611.7.9.5
62
diff --git a/meta-qat/recipes-extended/openssl-qat/openssl-qat/openssl_qat-environment-variables-to-have-precedence.patch b/meta-qat/recipes-extended/openssl-qat/openssl-qat/openssl_qat-environment-variables-to-have-precedence.patch
new file mode 100644
index 0000000..82c9965
--- /dev/null
+++ b/meta-qat/recipes-extended/openssl-qat/openssl-qat/openssl_qat-environment-variables-to-have-precedence.patch
@@ -0,0 +1,59 @@
1From dde5f7d6603d875b1d871498ae95a6837ccd591d Mon Sep 17 00:00:00 2001
2From: Anuj Mittal <anujx.mittal@intel.com>
3Date: Sat, 20 Jun 2015 00:25:27 +0800
4Subject: [PATCH] openssl_qat: environment variables to have precedence
5
6Upstream-Status: Inappropriate [configuration]
7
8(From meta/recipes-connectivity/openssl/openssl/shared-libs.patch
9 rev: 5dd1d7566964c90d33c0c44f569d9336fb0724ce)
10
11Signed-off-by: Anuj Mittal <anujx.mittal@intel.com>
12---
13 Makefile.org | 2 +-
14 crypto/Makefile | 2 +-
15 ssl/Makefile | 2 +-
16 3 files changed, 3 insertions(+), 3 deletions(-)
17
18diff --git a/Makefile.org b/Makefile.org
19index 1f2f5e1..679c884 100644
20--- a/Makefile.org
21+++ b/Makefile.org
22@@ -311,7 +311,7 @@ libcrypto$(SHLIB_EXT): libcrypto.a fips_premain_dso$(EXE_EXT)
23
24 libssl$(SHLIB_EXT): libcrypto$(SHLIB_EXT) libssl.a
25 @if [ "$(SHLIB_TARGET)" != "" ]; then \
26- $(MAKE) SHLIBDIRS=ssl SHLIBDEPS='-lcrypto' build-shared; \
27+ $(MAKE) -e SHLIBDIRS=ssl SHLIBDEPS='-lcrypto' build-shared; \
28 else \
29 echo "There's no support for shared libraries on this platform" >&2; \
30 exit 1; \
31diff --git a/crypto/Makefile b/crypto/Makefile
32index 2355661..1b0c324 100644
33--- a/crypto/Makefile
34+++ b/crypto/Makefile
35@@ -107,7 +107,7 @@ $(LIB): $(LIBOBJ)
36
37 shared: buildinf.h lib subdirs
38 if [ -n "$(SHARED_LIBS)" ]; then \
39- (cd ..; $(MAKE) $(SHARED_LIB)); \
40+ (cd ..; $(MAKE) -e $(SHARED_LIB)); \
41 fi
42
43 libs:
44diff --git a/ssl/Makefile b/ssl/Makefile
45index e05ada2..6f51862 100644
46--- a/ssl/Makefile
47+++ b/ssl/Makefile
48@@ -64,7 +64,7 @@ lib: $(LIBOBJ)
49
50 shared: lib
51 if [ -n "$(SHARED_LIBS)" ]; then \
52- (cd ..; $(MAKE) $(SHARED_LIB)); \
53+ (cd ..; $(MAKE) -e $(SHARED_LIB)); \
54 fi
55
56 files:
57--
581.7.9.5
59
diff --git a/meta-qat/recipes-extended/openssl-qat/openssl-qat/openssl_qat-install-engines-in-libdir-ssl.patch b/meta-qat/recipes-extended/openssl-qat/openssl-qat/openssl_qat-install-engines-in-libdir-ssl.patch
new file mode 100644
index 0000000..a5eea33
--- /dev/null
+++ b/meta-qat/recipes-extended/openssl-qat/openssl-qat/openssl_qat-install-engines-in-libdir-ssl.patch
@@ -0,0 +1,72 @@
1From 9ca66b344a9e9cb3345281496793a74ef01c548f Mon Sep 17 00:00:00 2001
2From: Anuj Mittal <anujx.mittal@intel.com>
3Date: Sat, 20 Jun 2015 00:28:55 +0800
4Subject: [PATCH] openssl_qat: install engines in ${libdir}/ssl
5
6Upstream-Status: Inappropriate [configuration]
7
8(Taken from meta/recipes-connectivity/openssl/openssl
9 rev: 5dd1d7566964c90d33c0c44f569d9336fb0724ce)
10
11Signed-off-by: Anuj Mittal <anujx.mittal@intel.com>
12---
13 engines/Makefile | 10 +++++-----
14 engines/ccgost/Makefile | 8 ++++----
15 2 files changed, 9 insertions(+), 9 deletions(-)
16
17diff --git a/engines/Makefile b/engines/Makefile
18index 5240c07..721f1e0 100644
19--- a/engines/Makefile
20+++ b/engines/Makefile
21@@ -108,7 +108,7 @@ install:
22 @[ -n "$(INSTALLTOP)" ] # should be set by top Makefile...
23 @if [ -n "$(SHARED_LIBS)" ]; then \
24 set -e; \
25- $(PERL) $(TOP)/util/mkdir-p.pl $(INSTALL_PREFIX)$(INSTALLTOP)/$(LIBDIR)/engines; \
26+ $(PERL) $(TOP)/util/mkdir-p.pl $(INSTALL_PREFIX)$(INSTALLTOP)/$(LIBDIR)/ssl/engines; \
27 for l in $(LIBNAMES); do \
28 ( echo installing $$l; \
29 pfx=lib; \
30@@ -120,13 +120,13 @@ install:
31 *DSO_WIN32*) sfx="eay32.dll"; pfx=;; \
32 *) sfx=".bad";; \
33 esac; \
34- cp $$pfx$$l$$sfx $(INSTALL_PREFIX)$(INSTALLTOP)/$(LIBDIR)/engines/$$pfx$$l$$sfx.new; \
35+ cp $$pfx$$l$$sfx $(INSTALL_PREFIX)$(INSTALLTOP)/$(LIBDIR)/ssl/engines/$$pfx$$l$$sfx.new; \
36 else \
37 sfx=".so"; \
38- cp cyg$$l.dll $(INSTALL_PREFIX)$(INSTALLTOP)/$(LIBDIR)/engines/$$pfx$$l$$sfx.new; \
39+ cp cyg$$l.dll $(INSTALL_PREFIX)$(INSTALLTOP)/$(LIBDIR)/ssl/engines/$$pfx$$l$$sfx.new; \
40 fi; \
41- chmod 555 $(INSTALL_PREFIX)$(INSTALLTOP)/$(LIBDIR)/engines/$$pfx$$l$$sfx.new; \
42- mv -f $(INSTALL_PREFIX)$(INSTALLTOP)/$(LIBDIR)/engines/$$pfx$$l$$sfx.new $(INSTALL_PREFIX)$(INSTALLTOP)/$(LIBDIR)/engines/$$pfx$$l$$sfx ); \
43+ chmod 555 $(INSTALL_PREFIX)$(INSTALLTOP)/$(LIBDIR)/ssl/engines/$$pfx$$l$$sfx.new; \
44+ mv -f $(INSTALL_PREFIX)$(INSTALLTOP)/$(LIBDIR)/ssl/engines/$$pfx$$l$$sfx.new $(INSTALL_PREFIX)$(INSTALLTOP)/$(LIBDIR)/ssl/engines/$$pfx$$l$$sfx ); \
45 done; \
46 fi
47 @target=install; $(RECURSIVE_MAKE)
48diff --git a/engines/ccgost/Makefile b/engines/ccgost/Makefile
49index d661c10..e137b37 100644
50--- a/engines/ccgost/Makefile
51+++ b/engines/ccgost/Makefile
52@@ -53,13 +53,13 @@ install:
53 *DSO_WIN32*) sfx="eay32.dll"; pfx=;; \
54 *) sfx=".bad";; \
55 esac; \
56- cp $${pfx}$(LIBNAME)$$sfx $(INSTALL_PREFIX)$(INSTALLTOP)/$(LIBDIR)/engines/$${pfx}$(LIBNAME)$$sfx.new; \
57+ cp $${pfx}$(LIBNAME)$$sfx $(INSTALL_PREFIX)$(INSTALLTOP)/$(LIBDIR)/ssl/engines/$${pfx}$(LIBNAME)$$sfx.new; \
58 else \
59 sfx=".so"; \
60- cp cyg$(LIBNAME).dll $(INSTALL_PREFIX)$(INSTALLTOP)/$(LIBDIR)/engines/$${pfx}$(LIBNAME)$$sfx.new; \
61+ cp cyg$(LIBNAME).dll $(INSTALL_PREFIX)$(INSTALLTOP)/$(LIBDIR)/ssl/engines/$${pfx}$(LIBNAME)$$sfx.new; \
62 fi; \
63- chmod 555 $(INSTALL_PREFIX)$(INSTALLTOP)/$(LIBDIR)/engines/$${pfx}$(LIBNAME)$$sfx.new; \
64- mv -f $(INSTALL_PREFIX)$(INSTALLTOP)/$(LIBDIR)/engines/$${pfx}$(LIBNAME)$$sfx.new $(INSTALL_PREFIX)$(INSTALLTOP)/$(LIBDIR)/engines/$${pfx}$(LIBNAME)$$sfx; \
65+ chmod 555 $(INSTALL_PREFIX)$(INSTALLTOP)/$(LIBDIR)/ssl/engines/$${pfx}$(LIBNAME)$$sfx.new; \
66+ mv -f $(INSTALL_PREFIX)$(INSTALLTOP)/$(LIBDIR)/ssl/engines/$${pfx}$(LIBNAME)$$sfx.new $(INSTALL_PREFIX)$(INSTALLTOP)/$(LIBDIR)/ssl/engines/$${pfx}$(LIBNAME)$$sfx; \
67 fi
68
69 links:
70--
711.7.9.5
72
diff --git a/meta-qat/recipes-extended/openssl-qat/openssl-qat/openssl_qat-pass-oe_ldflags-to-linker.patch b/meta-qat/recipes-extended/openssl-qat/openssl-qat/openssl_qat-pass-oe_ldflags-to-linker.patch
new file mode 100644
index 0000000..59a54ce
--- /dev/null
+++ b/meta-qat/recipes-extended/openssl-qat/openssl-qat/openssl_qat-pass-oe_ldflags-to-linker.patch
@@ -0,0 +1,40 @@
1From accc6c251cafdb3332db946d543952e2cf0698cd Mon Sep 17 00:00:00 2001
2From: Anuj Mittal <anujx.mittal@intel.com>
3Date: Sat, 20 Jun 2015 00:31:31 +0800
4Subject: [PATCH] openssl_qat: pass oe_ldflags to linker
5
6Upstream-Status: Inappropriate [open-embedded]
7
8(Taken from meta/recipes-connectivity/openssl/openssl/oe-ldflags.patch
9 rev: 5dd1d7566964c90d33c0c44f569d9336fb0724ce)
10
11Signed-off-by: Anuj Mittal <anujx.mittal@intel.com>
12---
13 Makefile.shared | 4 ++--
14 1 file changed, 2 insertions(+), 2 deletions(-)
15
16diff --git a/Makefile.shared b/Makefile.shared
17index e753f44..fcdcb9e 100644
18--- a/Makefile.shared
19+++ b/Makefile.shared
20@@ -92,7 +92,7 @@ CALC_VERSIONS= \
21 LINK_APP= \
22 ( $(SET_X); \
23 LIBDEPS="$${LIBDEPS:-$(LIBDEPS)}"; \
24- LDCMD="$${LDCMD:-$(CC)}"; LDFLAGS="$${LDFLAGS:-$(CFLAGS)}"; \
25+ LDCMD="$${LDCMD:-$(CC)}"; LDFLAGS="$(OE_LDFLAGS) $${LDFLAGS:-$(CFLAGS)}"; \
26 LIBPATH=`for x in $$LIBDEPS; do echo $$x; done | sed -e 's/^ *-L//;t' -e d | uniq`; \
27 LIBPATH=`echo $$LIBPATH | sed -e 's/ /:/g'`; \
28 LD_LIBRARY_PATH=$$LIBPATH:$$LD_LIBRARY_PATH \
29@@ -102,7 +102,7 @@ LINK_SO= \
30 ( $(SET_X); \
31 LIBDEPS="$${LIBDEPS:-$(LIBDEPS)}"; \
32 SHAREDCMD="$${SHAREDCMD:-$(CC)}"; \
33- SHAREDFLAGS="$${SHAREDFLAGS:-$(CFLAGS) $(SHARED_LDFLAGS)}"; \
34+ SHAREDFLAGS="$(OE_LDFLAGS) $${SHAREDFLAGS:-$(CFLAGS) $(SHARED_LDFLAGS)}"; \
35 LIBPATH=`for x in $$LIBDEPS; do echo $$x; done | sed -e 's/^ *-L//;t' -e d | uniq`; \
36 LIBPATH=`echo $$LIBPATH | sed -e 's/ /:/g'`; \
37 LD_LIBRARY_PATH=$$LIBPATH:$$LD_LIBRARY_PATH \
38--
391.7.9.5
40
diff --git a/meta-qat/recipes-extended/openssl-qat/openssl-qat/openssl_qat-remove-redundant-rpaths.patch b/meta-qat/recipes-extended/openssl-qat/openssl-qat/openssl_qat-remove-redundant-rpaths.patch
new file mode 100644
index 0000000..06d706f
--- /dev/null
+++ b/meta-qat/recipes-extended/openssl-qat/openssl-qat/openssl_qat-remove-redundant-rpaths.patch
@@ -0,0 +1,31 @@
1From ed93d22846a1859ba3ab4584a1358b9325bf2e93 Mon Sep 17 00:00:00 2001
2From: Anuj Mittal <anujx.mittal@intel.com>
3Date: Tue, 23 Jun 2015 13:59:52 +0800
4Subject: [PATCH] openssl_qat: remove redundant rpaths
5
6Upstream-Status: Inappropriate [Configuration]
7
8This is not required and introduces bad rpath errors when
9building with bitbake.
10
11Signed-off-by: Anuj Mittal <anujx.mittal@intel.com>
12---
13 engines/qat_engine/Makefile | 2 +-
14 1 file changed, 1 insertion(+), 1 deletion(-)
15
16diff --git a/engines/qat_engine/Makefile b/engines/qat_engine/Makefile
17index 02cfd15..e96e66a 100644
18--- a/engines/qat_engine/Makefile
19+++ b/engines/qat_engine/Makefile
20@@ -99,7 +99,7 @@ endif
21 SRC=$(QATLIBSRC)
22 QATLIBTARGET=$(TOP)/libcrypto.a
23 ifdef ICP_BUILD_OUTPUT
24-QATSHAREDLIBDEPS=-Wl,-rpath,$(ICP_BUILD_OUTPUT) -L$(ICP_BUILD_OUTPUT) -l$(DRIVER)_s
25+QATSHAREDLIBDEPS=-L$(ICP_BUILD_OUTPUT) -l$(DRIVER)_s
26 else
27 QATSHAREDLIBDEPS=-l$(DRIVER)_s
28 endif
29--
301.7.9.5
31
diff --git a/meta-qat/recipes-extended/openssl-qat/openssl-qat_0.4.9-009.bb b/meta-qat/recipes-extended/openssl-qat/openssl-qat_0.4.9-009.bb
new file mode 100644
index 0000000..e3d8ccc
--- /dev/null
+++ b/meta-qat/recipes-extended/openssl-qat/openssl-qat_0.4.9-009.bb
@@ -0,0 +1,14 @@
1include openssl-qat.inc
2
3OPENSSL_VERSION = "1.0.1async"
4
5SRC_URI += "git://opensslfoundation.com/openssl-async.git;branch=OpenSSL_1_0_1-async;rev=asynch_v0.4.9-009 \
6 file://openssl-qat_0.4.9-009-openssl_qat-add-version-script.patch \
7 file://openssl-qat_0.4.9-009-openssl_qat-add-openssl-async-specific-symbols.patch \
8 "
9
10SRC_URI_append_libc-musl = " file://0001-Use_sched_yield_api.patch"
11
12SRC_URI[openssl_qat.md5sum]="8e2b45cf9b345356bdff0956845c6103"
13SRC_URI[openssl_qat.sha256sum]="c2334b4d1fc8498e06f0554ef155041a6bf441de134cfdd3635e5a449a34bf81"
14
diff --git a/meta-qat/recipes-extended/qat/qat16.inc b/meta-qat/recipes-extended/qat/qat16.inc
new file mode 100644
index 0000000..ad117ba
--- /dev/null
+++ b/meta-qat/recipes-extended/qat/qat16.inc
@@ -0,0 +1,123 @@
1DESCRIPTION = "Intel(r) QuickAssist Technology API"
2HOMEPAGE = "https://01.org/packet-processing/intel%C2%AE-quickassist-technology-drivers-and-patches"
3
4#Dual BSD and GPLv2 License
5LICENSE = "BSD & GPLv2"
6LIC_FILES_CHKSUM = "\
7 file://${COMMON_LICENSE_DIR}/GPL-2.0;md5=801f80980d171dd6425610833a22dbe6 \
8 file://${COMMON_LICENSE_DIR}/BSD;md5=3775480a712fc46a69647678acb234cb \
9 "
10
11DEPENDS += "zlib openssl"
12PROVIDES += "virtual/qat"
13
14SRC_URI="file://qat16_2.3.0-34-qat-fix-for-cross-compilation-issue.patch \
15 file://qat16_2.3.0-34-qat-remove-local-path-from-makefile.patch \
16 file://qat16_2.3.0-34-make-sure-CFLAGS-are-correct.patch \
17 file://qat16_2.5.0-80-qat-change-in-return-type-of-func-in-kernel-v4.4.patch \
18 file://qat16_2.5.0-80-qat-Added-include-dir-path.patch \
19 "
20
21COMPATIBLE_MACHINE = "null"
22COMPATIBLE_HOST_linux-gnux32 = "null"
23
24S = "${WORKDIR}/${ICP_DRIVER_TYPE}"
25ICP_TOOLS = "accelcomp"
26SAMPLE_CODE_DIR = "${S}/quickassist/lookaside/access_layer/src/sample_code"
27TARGET_CC_ARCH += "$(LDFLAGS)"
28
29export ICP_DRIVER_TYPE = "QAT1.6"
30export ICP_FIRMWARE_DIR="dh895xcc"
31export ICP_ROOT = "${S}"
32export ICP_ENV_DIR = "${S}/quickassist/build_system/build_files/env_files"
33export ICP_BUILDSYSTEM_PATH = "${S}/quickassist/build_system"
34export ICP_TOOLS_TARGET = "${ICP_TOOLS}"
35export FUNC_PATH = "${ICP_ROOT}/quickassist/lookaside/access_layer/src/sample_code/functional"
36export KERNEL_SOURCE_ROOT = "${STAGING_KERNEL_DIR}"
37export ICP_BUILD_OUTPUT = "${D}"
38export DEST_LIBDIR = "${libdir}"
39export DEST_BINDIR = "${bindir}"
40export QAT_KERNEL_VER = "${KERNEL_VERSION}"
41export SAMPLE_BUILD_OUTPUT = "${D}"
42export MODULE_DIR = "${base_libdir}/modules/${KERNEL_VERSION}/kernel/drivers"
43
44inherit module
45inherit update-rc.d
46INITSCRIPT_NAME = "qat_service"
47
48PARALLEL_MAKE = ""
49
50#To get around the double slashes in paths in QAT makefiles
51PACKAGE_DEBUG_SPLIT_STYLE = "debug-without-src"
52
53EXTRA_OEMAKE_append = " CFLAGS+='-fgnu89-inline -fPIC'"
54EXTRA_OEMAKE = "-e MAKEFLAGS="
55do_unpack2() {
56 cd ${S}/
57 tar xzvf ${ICP_DRIVER_TYPE}.L.${PV}.tar.gz
58}
59
60addtask unpack2 after do_unpack before do_patch
61
62do_compile () {
63 export LD="${CC} -Wl,--hash-style=gnu -nostartfiles -nodefaultlibs"
64 export MACHINE="${TARGET_ARCH}"
65 cd ${S}/quickassist
66 oe_runmake
67
68 cd ${SAMPLE_CODE_DIR}
69 touch ${SAMPLE_CODE_DIR}/performance/compression/calgary
70 touch ${SAMPLE_CODE_DIR}/performance/compression/canterbury
71
72 #build the whole sample code: fips, functional, performance
73 oe_runmake 'all'
74 oe_runmake 'fips_user_code'
75}
76
77do_install() {
78 export MACHINE="${TARGET_ARCH}"
79 cd ${S}/quickassist
80 oe_runmake install
81
82 cd ${SAMPLE_CODE_DIR}
83 oe_runmake install
84
85 install -d ${D}/etc/udev/rules.d \
86 ${D}${includedir} \
87 ${D}${includedir}/dc \
88 ${D}${includedir}/lac \
89 ${D}${sysconfdir}/dh895xcc \
90 ${D}${base_libdir}/firmware
91
92 echo 'KERNEL=="icp_adf_ctl" MODE="0600"' > ${D}/etc/udev/rules.d/00-dh895xcc_qa.rules
93 echo 'KERNEL=="icp_dev[0-9]*" MODE="0600"' >> ${D}/etc/udev/rules.d/00-dh895xcc_qa.rules
94 echo 'KERNEL=="icp_dev_mem?" MODE="0600"' >> ${D}/etc/udev/rules.d/00-dh895xcc_qa.rules
95
96 install -m 640 ${S}/quickassist/include/*.h ${D}${includedir}
97 install -m 640 ${S}/quickassist/include/dc/*.h ${D}${includedir}/dc/
98 install -m 640 ${S}/quickassist/include/lac/*.h ${D}${includedir}/lac/
99 install -m 640 ${S}/quickassist/lookaside/access_layer/include/*.h ${D}${includedir}
100
101 install -m 0755 ${SAMPLE_CODE_DIR}/performance/compression/calgary ${D}${base_libdir}/firmware
102 install -m 0755 ${SAMPLE_CODE_DIR}/performance/compression/canterbury ${D}${base_libdir}/firmware
103
104 install -m 660 ${S}/quickassist/config/dh* ${D}${sysconfdir}/dh895xcc
105}
106
107PACKAGES += "${PN}-app"
108
109FILES_${PN}-dev = "${includedir}"
110
111FILES_${PN} += "\
112 ${base_libdir}/firmware/ \
113 ${sysconfdir}/ \
114 ${sysconfdir}/udev/rules.d/ \
115 ${sysconfdir}/init.d/ \
116 ${libdir}/ \
117 "
118
119FILES_${PN}-dbg += "${sysconfdir}/init.d/.debug"
120
121FILES_${PN}-app += "${bindir}/*"
122
123EXCLUDE_FROM_WORLD_core2-32-intel-common = "1"
diff --git a/meta-qat/recipes-extended/qat/qat16/0001-OsalServices-Only-use-bits-time-with-GLIBC.patch b/meta-qat/recipes-extended/qat/qat16/0001-OsalServices-Only-use-bits-time-with-GLIBC.patch
new file mode 100644
index 0000000..d627353
--- /dev/null
+++ b/meta-qat/recipes-extended/qat/qat16/0001-OsalServices-Only-use-bits-time-with-GLIBC.patch
@@ -0,0 +1,27 @@
1From f83ac703a6babfa7f177b8f14ff3263a08fd8871 Mon Sep 17 00:00:00 2001
2From: Saul Wold <sgw@linux.intel.com>
3Date: Thu, 9 Feb 2017 14:35:57 -0800
4Subject: [PATCH] OsalServices: Only use bits/time with GLIBC
5
6Upstream-Status: Pending
7Signed-off-by: Saul Wold <sgw@linux.intel.com>
8---
9 quickassist/utilities/osal/src/linux/user_space/OsalServices.c | 2 +-
10 1 file changed, 1 insertion(+), 1 deletion(-)
11
12diff --git a/quickassist/utilities/osal/src/linux/user_space/OsalServices.c b/quickassist/utilities/osal/src/linux/user_space/OsalServices.c
13index 49fde45..5f50aaa 100755
14--- a/quickassist/utilities/osal/src/linux/user_space/OsalServices.c
15+++ b/quickassist/utilities/osal/src/linux/user_space/OsalServices.c
16@@ -41,7 +41,7 @@
17
18 #include <stdarg.h>
19 #include <stdio.h>
20-#ifdef __linux__
21+#if defined(__linux__) && defined(__GLIBC__)
22 #include <bits/time.h>
23 #endif
24 #include <sched.h>
25--
262.7.4
27
diff --git a/meta-qat/recipes-extended/qat/qat16/qat16_2.3.0-34-make-sure-CFLAGS-are-correct.patch b/meta-qat/recipes-extended/qat/qat16/qat16_2.3.0-34-make-sure-CFLAGS-are-correct.patch
new file mode 100644
index 0000000..e1ed3fc
--- /dev/null
+++ b/meta-qat/recipes-extended/qat/qat16/qat16_2.3.0-34-make-sure-CFLAGS-are-correct.patch
@@ -0,0 +1,30 @@
1From 83f465ee776868875f6c19c2110eed4db6c547ce Mon Sep 17 00:00:00 2001
2From: Anuj Mittal <anujx.mittal@intel.com>
3Date: Thu, 10 Sep 2015 11:58:44 +0800
4Subject: [PATCH] qat: make sure CFLAGS are correct
5
6Upstream-Status: Submitted
7
8Ensure that all the CFLAGS values are being considered.
9
10Signed-off-by: Anuj Mittal <anujx.mittal@intel.com>
11---
12 quickassist/adf/user/user_proxy/src/Makefile | 2 +-
13 1 file changed, 1 insertion(+), 1 deletion(-)
14
15diff --git a/quickassist/adf/user/user_proxy/src/Makefile b/quickassist/adf/user/user_proxy/src/Makefile
16index 868313a..efd352c 100644
17--- a/quickassist/adf/user/user_proxy/src/Makefile
18+++ b/quickassist/adf/user/user_proxy/src/Makefile
19@@ -133,7 +133,7 @@ INCLUDES+= -I$(ADF_DIR)/include \
20 -I$(ADF_PLATFORM_DIR)/include \
21 -I$(ADF_CTL_DIR)/include
22
23-CFLAGS = -D_GNU_SOURCE -O2 $(INCLUDES)
24+CFLAGS += -D_GNU_SOURCE -O2 $(INCLUDES)
25 #needed by SAL
26 EXTRA_CFLAGS += -fPIC -fno-strict-aliasing
27 #include your $(ICP_OS)_$(ICP_OS_LEVEL).mk file
28--
291.7.9.5
30
diff --git a/meta-qat/recipes-extended/qat/qat16/qat16_2.3.0-34-qat-fix-for-cross-compilation-issue.patch b/meta-qat/recipes-extended/qat/qat16/qat16_2.3.0-34-qat-fix-for-cross-compilation-issue.patch
new file mode 100644
index 0000000..b7b77d0
--- /dev/null
+++ b/meta-qat/recipes-extended/qat/qat16/qat16_2.3.0-34-qat-fix-for-cross-compilation-issue.patch
@@ -0,0 +1,40 @@
1From 340701a0f44e70eafd9029e9186b74e8783f2afd Mon Sep 17 00:00:00 2001
2From: venkatasubramanian pattu <venkatasubramanianx.pattu@intel.com>
3Date: Mon, 6 Jul 2015 15:57:20 +0800
4Subject: [PATCH] qat: fix for cross-compilation issue
5
6Upstream-Status: Inappropriate [Configuration]
7
8Ensure that we are not using host compiler.
9
10Signed-off-by: venkatasubramanian pattu <venkatasubramanianx.pattu@intel.com>
11Signed-off-by: Anuj Mittal <anujx.mittal@intel.com>
12---
13 .../dc/stateless_multi_op_checksum_sample/Makefile | 4 ++--
14 1 file changed, 2 insertions(+), 2 deletions(-)
15
16diff --git a/quickassist/lookaside/access_layer/src/sample_code/functional/dc/stateless_multi_op_checksum_sample/Makefile b/quickassist/lookaside/access_layer/src/sample_code/functional/dc/stateless_multi_op_checksum_sample/Makefile
17index 01590c3..315fca7 100644
18--- a/quickassist/lookaside/access_layer/src/sample_code/functional/dc/stateless_multi_op_checksum_sample/Makefile
19+++ b/quickassist/lookaside/access_layer/src/sample_code/functional/dc/stateless_multi_op_checksum_sample/Makefile
20@@ -111,7 +111,7 @@ else
21 ADDITIONAL_OBJECTS += $(ICP_BUILD_OUTPUT)/libicp_qa_al_s.so
22 endif
23
24-ADDITIONAL_OBJECTS += -L/usr/Lib -lpthread -lcrypto
25+ADDITIONAL_OBJECTS += -lpthread -lcrypto
26
27 USER_SOURCE_FILES = ../../common/cpa_sample_utils.c cpa_dc_stateless_multi_op_checksum_sample.c
28 USER_SOURCE_FILES += ../stateless_sample/cpa_dc_sample_user.c
29@@ -127,7 +127,7 @@ else
30 endif
31
32 default: clean
33- gcc -Wall -O1 $(USER_INCLUDES) -DUSER_SPACE $(EXTRA_CFLAGS) \
34+ $(CC) -Wall -O1 $(USER_INCLUDES) -DUSER_SPACE $(EXTRA_CFLAGS) \
35 $(USER_SOURCE_FILES) $(ADDITIONAL_OBJECTS) -o $(OUTPUT_NAME)
36
37 clean:
38--
391.7.9.5
40
diff --git a/meta-qat/recipes-extended/qat/qat16/qat16_2.3.0-34-qat-remove-local-path-from-makefile.patch b/meta-qat/recipes-extended/qat/qat16/qat16_2.3.0-34-qat-remove-local-path-from-makefile.patch
new file mode 100644
index 0000000..0021c0d
--- /dev/null
+++ b/meta-qat/recipes-extended/qat/qat16/qat16_2.3.0-34-qat-remove-local-path-from-makefile.patch
@@ -0,0 +1,31 @@
1From 5044a14a6b4192b771f16aa834f688c1fd1287dd Mon Sep 17 00:00:00 2001
2From: Anuj Mittal <anujx.mittal@intel.com>
3Date: Wed, 8 Jul 2015 11:11:32 +0800
4Subject: [PATCH] qat: remove local path from makefile
5
6Upstream-Status: Inappropriate [Configuration]
7
8Remove the host machine /usr/include path from makefile.
9
10Signed-off-by: Anuj Mittal <anujx.mittal@intel.com>
11---
12 .../build_files/env_files/linux_2.6_user_space.mk | 3 +--
13 1 file changed, 1 insertion(+), 2 deletions(-)
14
15diff --git a/quickassist/build_system/build_files/env_files/linux_2.6_user_space.mk b/quickassist/build_system/build_files/env_files/linux_2.6_user_space.mk
16index 1451f4a..719d1bb 100755
17--- a/quickassist/build_system/build_files/env_files/linux_2.6_user_space.mk
18+++ b/quickassist/build_system/build_files/env_files/linux_2.6_user_space.mk
19@@ -72,8 +72,7 @@
20 #
21 #-------------------------------------------------------------
22
23-INCLUDES+=-I/usr/include \
24- -I$(API_DIR) \
25+INCLUDES+=-I$(API_DIR) \
26 -I$(OSAL_DIR)/include \
27 -I$(OSAL_DIR)/src/linux/user_space/include
28
29--
301.7.9.5
31
diff --git a/meta-qat/recipes-extended/qat/qat16/qat16_2.5.0-80-qat-Added-include-dir-path.patch b/meta-qat/recipes-extended/qat/qat16/qat16_2.5.0-80-qat-Added-include-dir-path.patch
new file mode 100644
index 0000000..a538930
--- /dev/null
+++ b/meta-qat/recipes-extended/qat/qat16/qat16_2.5.0-80-qat-Added-include-dir-path.patch
@@ -0,0 +1,30 @@
1From 142bf81912701d94985ad656c2250650113d00de Mon Sep 17 00:00:00 2001
2From: Rahul Kumar Gupta <rahul.kumarxx.gupta@intel.com>
3Date: Tue, 22 Mar 2016 01:44:09 +0800
4Subject: [PATCH 2/2] qat: Added include dir path
5
6Upstream-Status: Inappropriate [Configuration]
7
8Make sure that we point to the correct include path to the local
9headers.
10
11Signed-off-by: Rahul Kumar Gupta <rahul.kumarxx.gupta@intel.com>
12---
13 quickassist/build_system/build_files/env_files/linux_2.6_user_space.mk | 1 +
14 1 file changed, 1 insertion(+)
15
16diff --git a/quickassist/build_system/build_files/env_files/linux_2.6_user_space.mk b/quickassist/build_system/build_files/env_files/linux_2.6_user_space.mk
17index b504f7f..a75f152 100755
18--- a/quickassist/build_system/build_files/env_files/linux_2.6_user_space.mk
19+++ b/quickassist/build_system/build_files/env_files/linux_2.6_user_space.mk
20@@ -84,6 +84,7 @@ INCLUDES+=-I$(API_DIR) \
21
22 EXTRA_CFLAGS += $(cmd_line_cflags)
23 EXTRA_CFLAGS += -fno-strict-aliasing
24+EXTRA_CFLAGS += $(INCLUDES)
25 EXTRA_LDFLAGS +=-whole-archive
26
27 ifeq ($(ARCH), i386)
28--
291.9.1
30
diff --git a/meta-qat/recipes-extended/qat/qat16/qat16_2.5.0-80-qat-add-install-target-to-makefiles.patch b/meta-qat/recipes-extended/qat/qat16/qat16_2.5.0-80-qat-add-install-target-to-makefiles.patch
new file mode 100644
index 0000000..927389f
--- /dev/null
+++ b/meta-qat/recipes-extended/qat/qat16/qat16_2.5.0-80-qat-add-install-target-to-makefiles.patch
@@ -0,0 +1,387 @@
1From 803fd66d6a7e6dccc420f925106da0f05766a2f6 Mon Sep 17 00:00:00 2001
2From: Anuj Mittal <anujx.mittal@intel.com>
3Date: Wed, 9 Sep 2015 16:58:55 +0800
4Subject: [PATCH] qat: add-install-target-to-makefiles
5
6Upstream-Status: Inappropriate [Configuration]
7
8Add install target to makefile to help install
9ingredients at the proper location.
10
11Signed-off-by: Anuj Mittal <anujx.mittal@intel.com>
12---
13 quickassist/Makefile | 36 ++++++----
14 .../access_layer/src/sample_code/Makefile | 18 +++--
15 .../src/sample_code/functional/Makefile | 73 +++++++++++---------
16 3 files changed, 73 insertions(+), 54 deletions(-)
17
18diff --git a/quickassist/Makefile b/quickassist/Makefile
19index 339d410..b23a409 100644
20--- a/quickassist/Makefile
21+++ b/quickassist/Makefile
22@@ -108,7 +108,7 @@ export DRBG_POLL_AND_WAIT=1
23 ifdef WITH_CPA_MUX
24 ALL_TARGETS = clean lac_lib_dir libosal libosal_user qat_mux hal adf adf_user lac lac_user qat-fw install_scripts
25 else
26-ALL_TARGETS = clean lac_lib_dir libosal libosal_user hal adf adf_user lac lac_user qat-fw install_scripts
27+ALL_TARGETS = clean lac_lib_dir libosal libosal_user hal adf adf_user lac lac_user
28 endif
29 ICP_ARCH_USER?=`uname -m`
30
31@@ -120,7 +120,16 @@ all: $(ALL_TARGETS)
32 @echo 'Build Done';
33
34 user: lac_lib_dir libosal_user adf_user lac_user
35-kernel: lac_lib_dir libosal hal adf lac qat-fw install_scripts
36+kernel: lac_lib_dir libosal hal adf lac qat-fw
37+
38+install: qat-fw install_scripts
39+ @cp $(OSAL_PATH)/src/build/linux_2.6/user_space/libosal.a $(ICP_BUILD_OUTPUT)/$(DEST_LIBDIR);
40+ @cp $(OSAL_PATH)/src/build/linux_2.6/user_space/libosal.a $(ICP_BUILD_OUTPUT)/$(DEST_LIBDIR);
41+ @cp $(ADF_PATH)/build/linux_2.6/libadf_proxy.a $(ICP_BUILD_OUTPUT)/$(DEST_LIBDIR);
42+ @cp $(ADF_PATH)/build/linux_2.6/adf_ctl $(ICP_BUILD_OUTPUT)/etc/init.d/;
43+ @cp $(LAC_PATH)/src/build/linux_2.6/kernel_space/$(DRIVER) $(ICP_BUILD_OUTPUT)/lib/modules/$(QAT_KERNEL_VER)/kernel/drivers;
44+ @cp $(LAC_PATH)/src/build/linux_2.6/user_space/lib$(BASENAME).a $(ICP_BUILD_OUTPUT)/$(DEST_LIBDIR);
45+ @cp $(LAC_PATH)/src/build/linux_2.6/user_space/lib$(BASENAME)_s.so $(ICP_BUILD_OUTPUT)/$(DEST_LIBDIR);
46
47 install_scripts:
48 @echo ; echo 'Copying Install Scripts';
49@@ -128,10 +137,10 @@ ifdef WITH_CPA_MUX
50 @cp $(ICP_BUILDSYSTEM_PATH)/build_files/qat_service_mux $(ICP_BUILD_OUTPUT)/qat_service;
51 endif
52 ifndef WITH_CPA_MUX
53- @cp $(ICP_BUILDSYSTEM_PATH)/build_files/qat_service $(ICP_BUILD_OUTPUT)/;
54+ @cp $(ICP_BUILDSYSTEM_PATH)/build_files/qat_service $(ICP_BUILD_OUTPUT)/etc/init.d;
55 endif
56- @chmod 750 $(ICP_BUILD_OUTPUT)/qat_service;
57- @cp $(CONFIG_PATH)/dh895xcc_qa_dev0.conf $(ICP_BUILD_OUTPUT)/;
58+ @chmod 750 $(ICP_BUILD_OUTPUT)/etc/init.d/qat_service;
59+ @cp $(CONFIG_PATH)/dh895xcc_qa_dev0.conf $(ICP_BUILD_OUTPUT)/etc/;
60 # @cp $(CONFIG_PATH)/dh89xxcc_qa_dev1.conf $(ICP_BUILD_OUTPUT)/;
61 # @cp $(CONFIG_PATH)/dh89xxcc_qa_dev0_single_accel.conf $(ICP_BUILD_OUTPUT)/;
62
63@@ -150,7 +159,6 @@ libosal_user: output_dir lac_lib_dir
64 @echo ; echo 'Building OSAL for user space';
65 @cd $(OSAL_PATH)/src && $(MAKE) ARCH=$(ICP_ARCH_USER) ICP_ENV_DIR=$(ICP_TOP_ENV) OS_LEVEL=linux ICP_OS_LEVEL=user_space lib;\
66 echo ; echo 'Copying OSAL library';
67- cp $(OSAL_PATH)/src/build/linux_2.6/user_space/libosal.a $(ICP_BUILD_OUTPUT)/;
68
69 hal: output_dir libosal
70 @echo ; echo 'Building Hal Libs';
71@@ -175,7 +183,6 @@ libosal_uservf: output_dir lac_lib_dir
72 @echo ; echo 'Building OSAL for user space';
73 @cd $(OSAL_PATH)/src && export ICP_WITHOUT_IOMMU=1 && $(MAKE) ICP_ENV_DIR=$(ICP_TOP_ENV) OS_LEVEL=linux ICP_OS_LEVEL=user_space lib;\
74 echo ; echo 'Copying OSAL library';
75- cp $(OSAL_PATH)/src/build/linux_2.6/user_space/libosal.a $(ICP_BUILD_OUTPUT)/;
76
77 adfvf: output_dir lac_lib_dir libosalvf
78 @echo ; echo 'Building ADFVF';
79@@ -185,13 +192,10 @@ adfvf: output_dir lac_lib_dir libosalvf
80 adf_user: output_dir lac_lib_dir libosal_user
81 @echo ; echo 'Building user ADF';
82 @cd $(ADF_PATH) && export ADF_PLATFORM=ACCELDEV && export ICP_ENV_DIR=$(ICP_TOP_ENV) && export ONE_KO_RELEASE_PACKAGE=1 && ICP_OS_LEVEL=user_space && $(MAKE) ARCH=$(ICP_ARCH_USER) adf_user;
83- cp $(ADF_PATH)/build/linux_2.6/libadf_proxy.a $(ICP_BUILD_OUTPUT)/;
84- cp $(ADF_PATH)/build/linux_2.6/adf_ctl $(ICP_BUILD_OUTPUT)/;
85
86 lac: output_dir libosal hal adf
87 @echo ; echo 'Building LAC';
88 @cd $(LAC_PATH) && export ICP_ENV_DIR=$(ICP_TOP_ENV) && export ONE_KO_RELEASE_PACKAGE=1 && cd src && $(MAKE) ICP_OS_LEVEL=kernel_space OS_LEVEL=linux;
89- @cp $(LAC_PATH)/src/build/linux_2.6/kernel_space/$(DRIVER) $(ICP_BUILD_OUTPUT)/;
90
91 lacvf: output_dir libosalvf adfvf
92 @echo ; echo 'Building LACVF';
93@@ -199,20 +203,18 @@ ifdef WITH_CPA_MUX
94 @cp $(CPA_MUX_PATH)/Module.symvers $(LAC_PATH)/src/
95 endif
96 @cd $(LAC_PATH) && export ADF_PLATFORM=ACCELDEVVF && export ICP_ENV_DIR=$(ICP_TOP_ENV) && export ONE_KO_RELEASE_PACKAGE=1 && cd src && $(MAKE) ICP_OS_LEVEL=kernel_space OS_LEVEL=linux;
97- @cp $(LAC_PATH)/src/build/linux_2.6/kernel_space/$(BASENAME)_vf.ko $(ICP_BUILD_OUTPUT)/;
98
99 lac_user: output_dir libosal_user adf_user
100 @echo ; echo 'Building LAC in user space';
101 @cd $(LAC_PATH) && export ICP_ENV_DIR=$(ICP_TOP_ENV) && export ONE_KO_RELEASE_PACKAGE=1 && cd src && $(MAKE) ARCH=$(ICP_ARCH_USER) lib_static ICP_OS_LEVEL=user_space;
102- cp $(LAC_PATH)/src/build/linux_2.6/user_space/lib$(BASENAME).a $(ICP_BUILD_OUTPUT)/;
103 @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;
104- cp $(LAC_PATH)/src/build/linux_2.6/user_space/lib$(BASENAME)_s.so $(ICP_BUILD_OUTPUT)/;
105+ cp $(LAC_PATH)/src/build/linux_2.6/user_space/lib$(BASENAME)_s.so $(ICP_BUILD_OUTPUT);
106
107 qat-fw: output_dir
108 @echo ; echo 'Copying QAT-FW Binary';
109- @cp -f $(QAT_FW_PATH)/icp_qat_ae.mof $(ICP_BUILD_OUTPUT)/mof_firmware.bin;
110+ @cp -f $(QAT_FW_PATH)/icp_qat_ae.mof $(ICP_BUILD_OUTPUT)/lib/firmware/$(ICP_FIRMWARE_DIR)/mof_firmware.bin;
111 @echo ; echo 'Copying MMP Binary';
112- @cp -f $(QAT_FW_PATH)/icp_qat_pke.mof $(ICP_BUILD_OUTPUT)/mmp_firmware.bin;
113+ @cp -f $(QAT_FW_PATH)/icp_qat_pke.mof $(ICP_BUILD_OUTPUT)/lib/firmware/$(ICP_FIRMWARE_DIR)/mmp_firmware.bin;
114
115 qat_mux: output_dir libosal
116 @echo ; echo 'Building qat_mux module'
117@@ -248,6 +250,10 @@ endif
118
119 output_dir:
120 test -d $(ICP_BUILD_OUTPUT) || mkdir -p $(ICP_BUILD_OUTPUT);
121+ test -d $(ICP_BUILD_OUTPUT)$(DEST_LIBDIR) || mkdir -p $(ICP_BUILD_OUTPUT)$(DEST_LIBDIR);
122+ test -d $(ICP_BUILD_OUTPUT)/lib/firmware/$(ICP_FIRMWARE_DIR) || mkdir -p $(ICP_BUILD_OUTPUT)/lib/firmware/$(ICP_FIRMWARE_DIR);
123+ test -d $(ICP_BUILD_OUTPUT)/lib/modules/$(QAT_KERNEL_VER)/kernel/drivers || mkdir -p $(ICP_BUILD_OUTPUT)/lib/modules/$(QAT_KERNEL_VER)/kernel/drivers;
124+ test -d $(ICP_BUILD_OUTPUT)/etc/init.d || mkdir -p $(ICP_BUILD_OUTPUT)/etc/init.d;
125
126 lac_lib_dir:
127 test -d $(LAC_LIB_DIR) || mkdir -p $(LAC_LIB_DIR);
128diff --git a/quickassist/lookaside/access_layer/src/sample_code/Makefile b/quickassist/lookaside/access_layer/src/sample_code/Makefile
129index e13bbf0..fbc575e 100644
130--- a/quickassist/lookaside/access_layer/src/sample_code/Makefile
131+++ b/quickassist/lookaside/access_layer/src/sample_code/Makefile
132@@ -95,6 +95,7 @@ SAMPLE_PATH?=$(ICP_ROOT)/quickassist/lookaside/access_layer/src/sample_code
133 PERF_PATH?=$(ICP_ROOT)/quickassist/lookaside/access_layer/src/sample_code/performance
134 FIPS_PATH?=$(ICP_ROOT)/quickassist/lookaside/access_layer/src/sample_code/fips
135 FUNC_PATH=$(SAMPLE_PATH)/functional
136+FIPS_OUTPUT_NAME=fips_sample
137
138 #include the makefile with all the default and common Make variable definitions
139 include $(ICP_BUILDSYSTEM_PATH)/build_files/common.mk
140@@ -106,6 +107,8 @@ SAMPLE_BUILD_OUTPUT?=$(SAMPLE_PATH)/build
141
142 output_dir:
143 test -d $(SAMPLE_BUILD_OUTPUT) || mkdir $(SAMPLE_BUILD_OUTPUT);
144+ test -d $(SAMPLE_BUILD_OUTPUT)$(DEST_BINDIR) || mkdir -p $(SAMPLE_BUILD_OUTPUT)$(DEST_BINDIR)
145+
146 fips_code:
147 @if test -d $(FIPS_PATH); then echo ; echo 'Building FIPS Code'; fi;
148 @if test -d $(FIPS_PATH); \
149@@ -162,17 +165,13 @@ endif
150 perf_all: $(PERF_ALL)
151 @echo ; echo "Build output location $(SAMPLE_BUILD_OUTPUT)";
152
153-
154 perf_user: output_dir
155 @echo ; echo "Building perf_user";
156 @cd $(PERF_PATH) && $(MAKE) clean ICP_OS_LEVEL=user_space && $(MAKE) ICP_OS_LEVEL=user_space lib_shared exe
157- @cp $(PERF_PATH)/build/linux_2.6/user_space/$(PERF_OUTPUT_NAME)_s.so $(SAMPLE_BUILD_OUTPUT)/;
158- @cp $(PERF_PATH)/build/linux_2.6/user_space/$(PERF_OUTPUT_NAME) $(SAMPLE_BUILD_OUTPUT)/;
159
160 perf_kernel: output_dir
161 @echo ; echo "Building perf_kernel";
162 @cd $(PERF_PATH) && $(MAKE) ICP_OS_LEVEL=kernel_space
163- @cp $(PERF_PATH)/build/linux_2.6/$(ICP_OS_LEVEL)/$(PERF_OUTPUT_NAME).ko $(SAMPLE_BUILD_OUTPUT)/;
164
165 common_mem_drv_kernel: output_dir
166 @echo ; echo "Building common_mem_drv kernel space";
167@@ -187,12 +186,19 @@ common_mem_drv_user: output_dir
168 perf_qae: output_dir
169 @echo ; echo "Building perf_qae";
170 @cd $(CMN_ROOT)/linux/kernel_space && $(MAKE) ICP_OS_LEVEL=kernel_space
171- @cp $(CMN_ROOT)/linux/kernel_space/build/linux_2.6/$(ICP_OS_LEVEL)/$(CMN_MODULE_NAME).ko $(SAMPLE_BUILD_OUTPUT)/;
172-
173
174 func: output_dir
175 @cd $(FUNC_PATH) && $(MAKE) all;
176
177+install: output_dir
178+ @cp $(PERF_PATH)/build/linux_2.6/user_space/$(PERF_OUTPUT_NAME)_s.so $(SAMPLE_BUILD_OUTPUT)$(DEST_LIBDIR);
179+ @cp $(PERF_PATH)/build/linux_2.6/user_space/$(PERF_OUTPUT_NAME) $(SAMPLE_BUILD_OUTPUT)$(DEST_BINDIR);
180+ @cp $(PERF_PATH)/build/linux_2.6/$(ICP_OS_LEVEL)/$(PERF_OUTPUT_NAME).ko $(ICP_BUILD_OUTPUT)/lib/modules/$(QAT_KERNEL_VER)/kernel/drivers;
181+ @cp $(CMN_ROOT)/linux/kernel_space/build/linux_2.6/$(ICP_OS_LEVEL)/$(CMN_MODULE_NAME).ko $(ICP_BUILD_OUTPUT)/lib/modules/$(QAT_KERNEL_VER)/kernel/drivers;
182+ @cp $(FIPS_PATH)/build/linux_2.6/$(ICP_OS_LEVEL)/$(FIPS_OUTPUT_NAME).ko $(ICP_BUILD_OUTPUT)/lib/modules/$(QAT_KERNEL_VER)/kernel/drivers;
183+ @cp $(FIPS_PATH)/build/linux_2.6/user_space/$(FIPS_OUTPUT_NAME)_s.so $(SAMPLE_BUILD_OUTPUT)$(DEST_LIBDIR);
184+ @cp $(FIPS_PATH)/build/linux_2.6/user_space/$(FIPS_OUTPUT_NAME).a $(SAMPLE_BUILD_OUTPUT)$(DEST_LIBDIR);
185+ @cd $(FUNC_PATH) && $(MAKE) install;
186
187 all: $(MEM_DRIVER) fips_code perf_user perf_kernel func
188 perf: $(MEM_DRIVER) perf_kernel
189diff --git a/quickassist/lookaside/access_layer/src/sample_code/functional/Makefile b/quickassist/lookaside/access_layer/src/sample_code/functional/Makefile
190index 3625637..322622b 100644
191--- a/quickassist/lookaside/access_layer/src/sample_code/functional/Makefile
192+++ b/quickassist/lookaside/access_layer/src/sample_code/functional/Makefile
193@@ -64,6 +64,8 @@ SYM_PATH?=$(SAMPLE_PATH)/sym
194 ASYM_PATH?=$(SAMPLE_PATH)/asym
195 ICP_API_DIR?=$(ICP_ROOT)/quickassist/include/
196 ICP_LAC_DIR?=$(ICP_ROOT)/quickassist/lookaside/access_layer/
197+BIN_INSTALLPATH=$(SAMPLE_BUILD_OUTPUT)$(DEST_BINDIR)/
198+MODULE_INSTALLPATH=$(SAMPLE_BUILD_OUTPUT)/lib/modules/$(QAT_KERNEL_VER)/kernel/drivers
199
200 ifeq ($(WITH_CMDRV),1)
201 CMN_ROOT?=$(ICP_ROOT)/quickassist/utilities/libqae_mem/
202@@ -110,6 +112,7 @@ SAMPLE_BUILD_OUTPUT?=$(SAMPLE_PATH)/build
203
204 output_dir:
205 test -d $(SAMPLE_BUILD_OUTPUT) || mkdir $(SAMPLE_BUILD_OUTPUT);
206+ test -d $(BIN_INSTALLPATH) || mkdir -p $(BIN_INSTALLPATH);
207
208 BUILD_DC=dc_dp_sample stateless_sample stateful_sample \
209 stateless_multi_op_checksum_sample
210@@ -119,31 +122,23 @@ dc: $(BUILD_DC)
211
212 dc_dp_sample: output_dir
213 @cd $(DC_PATH)/dc_dp_sample && $(MAKE) clean && $(MAKE) ICP_OS_LEVEL=user_space
214- @cp $(DC_PATH)/dc_dp_sample/dc_dp_sample $(SAMPLE_BUILD_OUTPUT)/;
215 ifneq ($(WITH_UPSTREAM),1)
216 @cd $(DC_PATH)/dc_dp_sample && $(MAKE) ICP_OS_LEVEL=kernel_space
217- @cp $(DC_PATH)/dc_dp_sample/dc_dp_sample.ko $(SAMPLE_BUILD_OUTPUT)/;
218 endif
219
220 stateless_sample: output_dir
221 @cd $(DC_PATH)/stateless_sample && $(MAKE) clean && $(MAKE) ICP_OS_LEVEL=user_space
222- @cp $(DC_PATH)/stateless_sample/dc_stateless_sample $(SAMPLE_BUILD_OUTPUT)/;
223 ifneq ($(WITH_UPSTREAM),1)
224 @cd $(DC_PATH)/stateless_sample && $(MAKE) ICP_OS_LEVEL=kernel_space
225- @cp $(DC_PATH)/stateless_sample/dc_stateless_sample.ko $(SAMPLE_BUILD_OUTPUT)/;
226 endif
227
228 stateful_sample: output_dir
229 @cd $(DC_PATH)/stateful_sample && $(MAKE) clean ICP_OS_LEVEL=user_space && $(MAKE) ICP_OS_LEVEL=user_space
230- @cp $(DC_PATH)/stateful_sample/dc_stateful_sample $(SAMPLE_BUILD_OUTPUT)/;
231- @cp $(DC_PATH)/stateful_sample/paper4 $(SAMPLE_BUILD_OUTPUT)/;
232
233 stateless_multi_op_checksum_sample: output_dir
234 @cd $(DC_PATH)/stateless_multi_op_checksum_sample && $(MAKE) clean && $(MAKE) ICP_OS_LEVEL=user_space
235- @cp $(DC_PATH)/stateless_multi_op_checksum_sample/dc_stateless_multi_op_sample $(SAMPLE_BUILD_OUTPUT)/;
236 ifneq ($(WITH_UPSTREAM),1)
237 @cd $(DC_PATH)/stateless_multi_op_checksum_sample && $(MAKE) ICP_OS_LEVEL=kernel_space
238- @cp $(DC_PATH)/stateless_multi_op_checksum_sample/dc_stateless_multi_op_sample.ko $(SAMPLE_BUILD_OUTPUT)/;
239 endif
240
241 BUILD_SYN=algchaining_sample ccm_sample cipher_sample \
242@@ -159,86 +154,65 @@ sym:$(BUILD_SYN)
243 @echo ; echo "Build sym component";
244 algchaining_sample: output_dir
245 @cd $(SYM_PATH)/alg_chaining_sample && $(MAKE) clean && $(MAKE) ICP_OS_LEVEL=user_space
246- @cp $(SYM_PATH)/alg_chaining_sample/algchaining_sample $(SAMPLE_BUILD_OUTPUT)/;
247 ifneq ($(WITH_UPSTREAM),1)
248 @cd $(SYM_PATH)/alg_chaining_sample && $(MAKE) ICP_OS_LEVEL=kernel_space
249- @cp $(SYM_PATH)/alg_chaining_sample/algchaining_sample.ko $(SAMPLE_BUILD_OUTPUT)/;
250 endif
251
252 ccm_sample: output_dir
253 @cd $(SYM_PATH)/ccm_sample && $(MAKE) clean && $(MAKE) ICP_OS_LEVEL=user_space
254- @cp $(SYM_PATH)/ccm_sample/ccm_sample $(SAMPLE_BUILD_OUTPUT)/;
255 ifneq ($(WITH_UPSTREAM),1)
256 @cd $(SYM_PATH)/ccm_sample && $(MAKE) ICP_OS_LEVEL=kernel_space
257- @cp $(SYM_PATH)/ccm_sample/ccm_sample.ko $(SAMPLE_BUILD_OUTPUT)/;
258 endif
259
260 cipher_sample: output_dir
261 @cd $(SYM_PATH)/cipher_sample && $(MAKE) clean && $(MAKE) ICP_OS_LEVEL=user_space
262- @cp $(SYM_PATH)/cipher_sample/cipher_sample $(SAMPLE_BUILD_OUTPUT)/;
263 ifneq ($(WITH_UPSTREAM),1)
264 @cd $(SYM_PATH)/cipher_sample && $(MAKE) ICP_OS_LEVEL=kernel_space
265- @cp $(SYM_PATH)/cipher_sample/cipher_sample.ko $(SAMPLE_BUILD_OUTPUT)/;
266 endif
267
268 drbg_sample: output_dir
269 @cd $(SYM_PATH)/drbg_sample && $(MAKE) clean && $(MAKE) ICP_OS_LEVEL=user_space
270- @cp $(SYM_PATH)/drbg_sample/drbg_sample $(SAMPLE_BUILD_OUTPUT)/;
271 ifneq ($(WITH_UPSTREAM),1)
272 @cd $(SYM_PATH)/drbg_sample && $(MAKE) ICP_OS_LEVEL=kernel_space
273- @cp $(SYM_PATH)/drbg_sample/drbg_sample.ko $(SAMPLE_BUILD_OUTPUT)/;
274 endif
275
276 gcm_sample: output_dir
277 @cd $(SYM_PATH)/gcm_sample && $(MAKE) clean && $(MAKE) ICP_OS_LEVEL=user_space
278- @cp $(SYM_PATH)/gcm_sample/gcm_sample $(SAMPLE_BUILD_OUTPUT)/;
279 ifneq ($(WITH_UPSTREAM),1)
280 @cd $(SYM_PATH)/gcm_sample && $(MAKE) ICP_OS_LEVEL=kernel_space
281- @cp $(SYM_PATH)/gcm_sample/gcm_sample.ko $(SAMPLE_BUILD_OUTPUT)/;
282 endif
283
284 hash_file_sample: output_dir
285 @cd $(SYM_PATH)/hash_file_sample && $(MAKE) clean ICP_OS_LEVEL=user_space&& $(MAKE) ICP_OS_LEVEL=user_space
286- @cp $(SYM_PATH)/hash_file_sample/hash_file_sample $(SAMPLE_BUILD_OUTPUT)/;
287
288 hash_sample: output_dir
289 @cd $(SYM_PATH)/hash_sample && $(MAKE) clean && $(MAKE) ICP_OS_LEVEL=user_space
290- @cp $(SYM_PATH)/hash_sample/hash_sample $(SAMPLE_BUILD_OUTPUT)/;
291 ifneq ($(WITH_UPSTREAM),1)
292 @cd $(SYM_PATH)/hash_sample && $(MAKE) ICP_OS_LEVEL=kernel_space
293- @cp $(SYM_PATH)/hash_sample/hash_sample.ko $(SAMPLE_BUILD_OUTPUT)/;
294 endif
295
296 ipsec_sample: output_dir
297 @cd $(SYM_PATH)/ipsec_sample && $(MAKE) clean && $(MAKE) ICP_OS_LEVEL=user_space
298- @cp $(SYM_PATH)/ipsec_sample/ipsec_sample $(SAMPLE_BUILD_OUTPUT)/;
299 ifneq ($(WITH_UPSTREAM),1)
300 @cd $(SYM_PATH)/ipsec_sample && $(MAKE) ICP_OS_LEVEL=kernel_space
301- @cp $(SYM_PATH)/ipsec_sample/ipsec_sample.ko $(SAMPLE_BUILD_OUTPUT)/;
302 endif
303
304 nrbg_sample: output_dir
305 @cd $(SYM_PATH)/nrbg_sample && $(MAKE) clean && $(MAKE) ICP_OS_LEVEL=user_space
306- @cp $(SYM_PATH)/nrbg_sample/nrbg_sample $(SAMPLE_BUILD_OUTPUT)/;
307 ifneq ($(WITH_UPSTREAM),1)
308 @cd $(SYM_PATH)/nrbg_sample && $(MAKE) && $(MAKE) ICP_OS_LEVEL=kernel_space
309- @cp $(SYM_PATH)/nrbg_sample/nrbg_sample.ko $(SAMPLE_BUILD_OUTPUT)/;
310 endif
311
312 ssl_sample: output_dir
313 @cd $(SYM_PATH)/ssl_sample && $(MAKE) clean && $(MAKE) ICP_OS_LEVEL=user_space
314- @cp $(SYM_PATH)/ssl_sample/ssl_sample $(SAMPLE_BUILD_OUTPUT)/;
315 ifneq ($(WITH_UPSTREAM),1)
316 @cd $(SYM_PATH)/ssl_sample && $(MAKE) ICP_OS_LEVEL=kernel_space
317- @cp $(SYM_PATH)/ssl_sample/ssl_sample.ko $(SAMPLE_BUILD_OUTPUT)/;
318 endif
319
320 sym_dp_sample: output_dir
321 @cd $(SYM_PATH)/symdp_sample && $(MAKE) clean && $(MAKE) ICP_OS_LEVEL=user_space
322- @cp $(SYM_PATH)/symdp_sample/sym_dp_sample $(SAMPLE_BUILD_OUTPUT)/;
323 ifneq ($(WITH_UPSTREAM),1)
324 @cd $(SYM_PATH)/symdp_sample && $(MAKE) ICP_OS_LEVEL=kernel_space
325- @cp $(SYM_PATH)/symdp_sample/sym_dp_sample.ko $(SAMPLE_BUILD_OUTPUT)/;
326 endif
327
328 BUILD_ASYM=diffie_hellman_sample prime_sample
329@@ -248,18 +222,51 @@ asym: $(BUILD_ASYM)
330
331 diffie_hellman_sample: output_dir
332 @cd $(ASYM_PATH)/diffie_hellman_sample && $(MAKE) clean && $(MAKE) ICP_OS_LEVEL=user_space
333- @cp $(ASYM_PATH)/diffie_hellman_sample/dh_sample $(SAMPLE_BUILD_OUTPUT)/;
334 ifneq ($(WITH_UPSTREAM),1)
335 @cd $(ASYM_PATH)/diffie_hellman_sample && $(MAKE) ICP_OS_LEVEL=kernel_space
336- @cp $(ASYM_PATH)/diffie_hellman_sample/dh_sample.ko $(SAMPLE_BUILD_OUTPUT)/;
337 endif
338
339 prime_sample: output_dir
340 @cd $(ASYM_PATH)/prime_sample && $(MAKE) clean && $(MAKE) ICP_OS_LEVEL=user_space
341- @cp $(ASYM_PATH)/prime_sample/prime_sample $(SAMPLE_BUILD_OUTPUT)/;
342 ifneq ($(WITH_UPSTREAM),1)
343 @cd $(ASYM_PATH)/prime_sample && $(MAKE) ICP_OS_LEVEL=kernel_space
344- @cp $(ASYM_PATH)/prime_sample/prime_sample.ko $(SAMPLE_BUILD_OUTPUT)/;
345+endif
346+
347+install: output_dir
348+ @cp $(DC_PATH)/dc_dp_sample/dc_dp_sample $(BIN_INSTALLPATH);
349+ @cp $(DC_PATH)/stateless_sample/dc_stateless_sample $(BIN_INSTALLPATH);
350+ @cp $(DC_PATH)/stateful_sample/dc_stateful_sample $(BIN_INSTALLPATH);
351+ @cp $(DC_PATH)/stateful_sample/paper4 $(BIN_INSTALLPATH);
352+ @cp $(DC_PATH)/stateless_multi_op_checksum_sample/dc_stateless_multi_op_sample $(BIN_INSTALLPATH);
353+ @cp $(SYM_PATH)/alg_chaining_sample/algchaining_sample $(BIN_INSTALLPATH);
354+ @cp $(SYM_PATH)/ccm_sample/ccm_sample $(BIN_INSTALLPATH);
355+ @cp $(SYM_PATH)/cipher_sample/cipher_sample $(BIN_INSTALLPATH);
356+ @cp $(SYM_PATH)/drbg_sample/drbg_sample $(BIN_INSTALLPATH);
357+ @cp $(SYM_PATH)/gcm_sample/gcm_sample $(BIN_INSTALLPATH);
358+ @cp $(SYM_PATH)/hash_file_sample/hash_file_sample $(BIN_INSTALLPATH);
359+ @cp $(SYM_PATH)/hash_sample/hash_sample $(BIN_INSTALLPATH);
360+ @cp $(SYM_PATH)/ipsec_sample/ipsec_sample $(BIN_INSTALLPATH);
361+ @cp $(SYM_PATH)/nrbg_sample/nrbg_sample $(BIN_INSTALLPATH);
362+ @cp $(SYM_PATH)/ssl_sample/ssl_sample $(BIN_INSTALLPATH);
363+ @cp $(SYM_PATH)/symdp_sample/sym_dp_sample $(BIN_INSTALLPATH);
364+ @cp $(ASYM_PATH)/diffie_hellman_sample/dh_sample $(BIN_INSTALLPATH);
365+ @cp $(ASYM_PATH)/prime_sample/prime_sample $(BIN_INSTALLPATH);
366+ifneq ($(WITH_UPSTREAM),1)
367+ @cp $(DC_PATH)/dc_dp_sample/dc_dp_sample.ko $(MODULE_INSTALLPATH);
368+ @cp $(DC_PATH)/stateless_sample/dc_stateless_sample.ko $(MODULE_INSTALLPATH);
369+ @cp $(DC_PATH)/stateless_multi_op_checksum_sample/dc_stateless_multi_op_sample.ko $(MODULE_INSTALLPATH);
370+ @cp $(SYM_PATH)/alg_chaining_sample/algchaining_sample.ko $(MODULE_INSTALLPATH);
371+ @cp $(SYM_PATH)/ccm_sample/ccm_sample.ko $(MODULE_INSTALLPATH);
372+ @cp $(SYM_PATH)/cipher_sample/cipher_sample.ko $(MODULE_INSTALLPATH);
373+ @cp $(SYM_PATH)/drbg_sample/drbg_sample.ko $(MODULE_INSTALLPATH);
374+ @cp $(SYM_PATH)/gcm_sample/gcm_sample.ko $(MODULE_INSTALLPATH);
375+ @cp $(SYM_PATH)/hash_sample/hash_sample.ko $(MODULE_INSTALLPATH);
376+ @cp $(SYM_PATH)/ipsec_sample/ipsec_sample.ko $(MODULE_INSTALLPATH);
377+ @cp $(SYM_PATH)/nrbg_sample/nrbg_sample.ko $(MODULE_INSTALLPATH);
378+ @cp $(SYM_PATH)/ssl_sample/ssl_sample.ko $(MODULE_INSTALLPATH);
379+ @cp $(SYM_PATH)/symdp_sample/sym_dp_sample.ko $(MODULE_INSTALLPATH);
380+ @cp $(ASYM_PATH)/diffie_hellman_sample/dh_sample.ko $(MODULE_INSTALLPATH);
381+ @cp $(ASYM_PATH)/prime_sample/prime_sample.ko $(MODULE_INSTALLPATH);
382 endif
383
384 CLEAN_DC=clean_dc_dp_sample clean_stateless_sample \
385--
3861.7.9.5
387
diff --git a/meta-qat/recipes-extended/qat/qat16/qat16_2.5.0-80-qat-change-in-return-type-of-func-in-kernel-v4.4.patch b/meta-qat/recipes-extended/qat/qat16/qat16_2.5.0-80-qat-change-in-return-type-of-func-in-kernel-v4.4.patch
new file mode 100644
index 0000000..b427799
--- /dev/null
+++ b/meta-qat/recipes-extended/qat/qat16/qat16_2.5.0-80-qat-change-in-return-type-of-func-in-kernel-v4.4.patch
@@ -0,0 +1,40 @@
1From f056dbedd106e03860de66d5c84cd018da087dda Mon Sep 17 00:00:00 2001
2From: Rahul Kumar Gupta <rahul.kumarxx.gupta@intel.com>
3Date: Tue, 22 Mar 2016 00:59:36 +0800
4Subject: [PATCH 1/2] qat: change in return type of func in kernel v4.4
5
6Upstream-Status: Submitted
7
8The function 'seq_puts' return type is changed from 'int' to 'void'.
9Now use of 'ret' variable is not valid. So used another condition to check
10for overflow.
11
12Signed-off-by: Rahul Kumar Gupta <rahul.kumarxx.gupta@intel.com>
13---
14 quickassist/adf/drivers/common/linux/src/adf_proc_debug.c | 6 +++---
15 1 file changed, 3 insertions(+), 3 deletions(-)
16
17diff --git a/quickassist/adf/drivers/common/linux/src/adf_proc_debug.c b/quickassist/adf/drivers/common/linux/src/adf_proc_debug.c
18index 7d81eaa..a1dd917 100755
19--- a/quickassist/adf/drivers/common/linux/src/adf_proc_debug.c
20+++ b/quickassist/adf/drivers/common/linux/src/adf_proc_debug.c
21@@ -132,13 +132,13 @@ static int adf_debug_show(struct seq_file *sfile, void *v)
22 {
23 debug_file_info_t* file_info = sfile->private;
24 if (file_info && file_info->seq_read && file_info->page) {
25- int ret = 0, old_offset = file_info->offset;
26+ int old_offset = file_info->offset;
27 file_info->offset =
28 file_info->seq_read(file_info->private_data,
29 file_info->page, PAGE_SIZE - 1,
30 file_info->offset);
31- ret = seq_puts(sfile, (char*)file_info->page);
32- if (ret) {
33+ seq_puts(sfile, (char*)file_info->page);
34+ if (sfile->count == sfile->size) {
35 /* run out of space - need to reprint */
36 file_info->offset = old_offset;
37 }
38--
391.9.1
40
diff --git a/meta-qat/recipes-extended/qat/qat16/qat16_2.6.0-65-qat-add-install-target-to-makefiles.patch b/meta-qat/recipes-extended/qat/qat16/qat16_2.6.0-65-qat-add-install-target-to-makefiles.patch
new file mode 100644
index 0000000..3960022
--- /dev/null
+++ b/meta-qat/recipes-extended/qat/qat16/qat16_2.6.0-65-qat-add-install-target-to-makefiles.patch
@@ -0,0 +1,353 @@
1From f53aeef0ae6a89066cca8c9a9154e70408f6ef68 Mon Sep 17 00:00:00 2001
2From: Rahul Kumar Gupta <rahul.kumarxx.gupta@intel.com>
3Date: Thu, 24 Mar 2016 01:11:02 +0800
4Subject: [PATCH] qat: add install target to makefiles
5
6Upstream-Status: Inappropriate [Configuration]
7
8Added an install target to makefiles to help
9install ingredients at a proper path.
10
11Signed-off-by: Rahul Kumar Gupta <rahul.kumarxx.gupta@intel.com>
12---
13 quickassist/Makefile | 29 ++++++---
14 .../access_layer/src/sample_code/Makefile | 19 ++++--
15 .../src/sample_code/functional/Makefile | 74 ++++++++++++----------
16 3 files changed, 75 insertions(+), 47 deletions(-)
17
18diff --git a/quickassist/Makefile b/quickassist/Makefile
19index 6c5d436..0a1ee4c 100644
20--- a/quickassist/Makefile
21+++ b/quickassist/Makefile
22@@ -109,7 +109,7 @@ ifdef WITH_CPA_MUX
23 ALL_TARGETS = clean lac_lib_dir libosal libosal_user qat_mux hal adf adf_user lac lac_user qat-fw install_scripts
24 ALL_TARGETS_CI = lac_lib_dir qat_mux_ci lac_ci lac_user_ci qat-fw install_scripts
25 else
26-ALL_TARGETS = clean lac_lib_dir libosal libosal_user hal adf adf_user lac lac_user qat-fw install_scripts
27+ALL_TARGETS = clean lac_lib_dir libosal libosal_user hal adf adf_user lac lac_user
28 ALL_TARGETS_CI = lac_lib_dir lac_ci lac_user_ci qat-fw install_scripts
29 endif
30 ICP_ARCH_USER?=`uname -m`
31@@ -125,7 +125,16 @@ all_ci: $(ALL_TARGETS_CI)
32 @echo 'Build Done';
33
34 user: lac_lib_dir libosal_user adf_user lac_user
35-kernel: lac_lib_dir libosal hal adf lac qat-fw install_scripts
36+kernel: lac_lib_dir libosal hal adf lac qat-fw
37+
38+install: qat-fw install_scripts
39+ @cp $(OSAL_PATH)/src/build/linux_2.6/user_space/libosal.a $(ICP_BUILD_OUTPUT)/$(DEST_LIBDIR);
40+ @cp $(OSAL_PATH)/src/build/linux_2.6/user_space/libosal.a $(ICP_BUILD_OUTPUT)/$(DEST_LIBDIR);
41+ @cp $(ADF_PATH)/build/linux_2.6/libadf_proxy.a $(ICP_BUILD_OUTPUT)/$(DEST_LIBDIR);
42+ @cp $(ADF_PATH)/build/linux_2.6/adf_ctl $(ICP_BUILD_OUTPUT)/etc/init.d/;
43+ @cp $(LAC_PATH)/src/build/linux_2.6/kernel_space/$(DRIVER) $(ICP_BUILD_OUTPUT)/lib/modules/$(QAT_KERNEL_VER)/kernel/drivers;
44+ @cp $(LAC_PATH)/src/build/linux_2.6/user_space/lib$(BASENAME).a $(ICP_BUILD_OUTPUT)/$(DEST_LIBDIR);
45+ @cp $(LAC_PATH)/src/build/linux_2.6/user_space/lib$(BASENAME)_s.so $(ICP_BUILD_OUTPUT)/$(DEST_LIBDIR);
46
47 install_scripts:
48 @echo ; echo 'Copying Install Scripts';
49@@ -133,10 +142,10 @@ ifdef WITH_CPA_MUX
50 @cp $(ICP_BUILDSYSTEM_PATH)/build_files/qat_service_mux $(ICP_BUILD_OUTPUT)/qat_service;
51 endif
52 ifndef WITH_CPA_MUX
53- @cp $(ICP_BUILDSYSTEM_PATH)/build_files/qat_service $(ICP_BUILD_OUTPUT)/;
54+ @cp $(ICP_BUILDSYSTEM_PATH)/build_files/qat_service $(ICP_BUILD_OUTPUT)/etc/init.d;
55 endif
56- @chmod 750 $(ICP_BUILD_OUTPUT)/qat_service;
57- @cp $(CONFIG_PATH)/dh895xcc_qa_dev0.conf $(ICP_BUILD_OUTPUT)/;
58+ @chmod 750 $(ICP_BUILD_OUTPUT)/etc/init.d/qat_service;
59+ @cp $(CONFIG_PATH)/dh895xcc_qa_dev0.conf $(ICP_BUILD_OUTPUT)/etc/;
60 # @cp $(CONFIG_PATH)/dh89xxcc_qa_dev1.conf $(ICP_BUILD_OUTPUT)/;
61 # @cp $(CONFIG_PATH)/dh89xxcc_qa_dev0_single_accel.conf $(ICP_BUILD_OUTPUT)/;
62
63@@ -233,7 +242,7 @@ lac_user: output_dir libosal_user adf_user
64 @cd $(LAC_PATH) && export ICP_ENV_DIR=$(ICP_TOP_ENV) && export ONE_KO_RELEASE_PACKAGE=1 && cd src && $(MAKE) ARCH=$(ICP_ARCH_USER) lib_static ICP_OS_LEVEL=user_space;
65 cp $(LAC_PATH)/src/build/linux_2.6/user_space/lib$(BASENAME).a $(ICP_BUILD_OUTPUT)/;
66 @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;
67- cp $(LAC_PATH)/src/build/linux_2.6/user_space/lib$(BASENAME)_s.so $(ICP_BUILD_OUTPUT)/;
68+ cp $(LAC_PATH)/src/build/linux_2.6/user_space/lib$(BASENAME)_s.so $(ICP_BUILD_OUTPUT);
69
70 lac_user_ci: output_dir
71 @echo ; echo 'Building LAC in user space';
72@@ -244,9 +253,9 @@ lac_user_ci: output_dir
73
74 qat-fw: output_dir
75 @echo ; echo 'Copying QAT-FW Binary';
76- @cp -f $(QAT_FW_PATH)/icp_qat_ae.mof $(ICP_BUILD_OUTPUT)/mof_firmware.bin;
77+ @cp -f $(QAT_FW_PATH)/icp_qat_ae.mof $(ICP_BUILD_OUTPUT)/lib/firmware/$(ICP_FIRMWARE_DIR)/mof_firmware.bin;
78 @echo ; echo 'Copying MMP Binary';
79- @cp -f $(QAT_FW_PATH)/icp_qat_pke.mof $(ICP_BUILD_OUTPUT)/mmp_firmware.bin;
80+ @cp -f $(QAT_FW_PATH)/icp_qat_pke.mof $(ICP_BUILD_OUTPUT)/lib/firmware/$(ICP_FIRMWARE_DIR)/mmp_firmware.bin;
81
82 qat_mux: output_dir libosal
83 @echo ; echo 'Building qat_mux module'
84@@ -306,6 +315,10 @@ endif
85
86 output_dir:
87 test -d $(ICP_BUILD_OUTPUT) || mkdir -p $(ICP_BUILD_OUTPUT);
88+ test -d $(ICP_BUILD_OUTPUT)$(DEST_LIBDIR) || mkdir -p $(ICP_BUILD_OUTPUT)$(DEST_LIBDIR);
89+ test -d $(ICP_BUILD_OUTPUT)/lib/firmware/$(ICP_FIRMWARE_DIR) || mkdir -p $(ICP_BUILD_OUTPUT)/lib/firmware/$(ICP_FIRMWARE_DIR);
90+ test -d $(ICP_BUILD_OUTPUT)/lib/modules/$(QAT_KERNEL_VER)/kernel/drivers || mkdir -p $(ICP_BUILD_OUTPUT)/lib/modules/$(QAT_KERNEL_VER)/kernel/drivers;
91+ test -d $(ICP_BUILD_OUTPUT)/etc/init.d || mkdir -p $(ICP_BUILD_OUTPUT)/etc/init.d;
92
93 lac_lib_dir:
94 test -d $(LAC_LIB_DIR) || mkdir -p $(LAC_LIB_DIR);
95diff --git a/quickassist/lookaside/access_layer/src/sample_code/Makefile b/quickassist/lookaside/access_layer/src/sample_code/Makefile
96index c66ecfb..4cc3dbf 100644
97--- a/quickassist/lookaside/access_layer/src/sample_code/Makefile
98+++ b/quickassist/lookaside/access_layer/src/sample_code/Makefile
99@@ -89,6 +89,7 @@ SAMPLE_PATH?=$(ICP_ROOT)/quickassist/lookaside/access_layer/src/sample_code
100 PERF_PATH?=$(ICP_ROOT)/quickassist/lookaside/access_layer/src/sample_code/performance
101 FIPS_PATH?=$(ICP_ROOT)/quickassist/lookaside/access_layer/src/sample_code/fips
102 FUNC_PATH=$(SAMPLE_PATH)/functional
103+FIPS_OUTPUT_NAME=fips_sample
104
105 #include the makefile with all the default and common Make variable definitions
106 include $(ICP_BUILDSYSTEM_PATH)/build_files/common.mk
107@@ -100,6 +101,8 @@ SAMPLE_BUILD_OUTPUT?=$(SAMPLE_PATH)/build
108
109 output_dir:
110 test -d $(SAMPLE_BUILD_OUTPUT) || mkdir $(SAMPLE_BUILD_OUTPUT);
111+ test -d $(SAMPLE_BUILD_OUTPUT)$(DEST_BINDIR) || mkdir -p $(SAMPLE_BUILD_OUTPUT)$(DEST_BINDIR)
112+
113 fips_code:
114 @if test -d $(FIPS_PATH); then echo ; echo 'Building FIPS Code'; fi;
115 @if test -d $(FIPS_PATH); \
116@@ -154,14 +157,11 @@ perf_all: $(PERF_ALL)
117 perf_user: output_dir
118 @echo ; echo "Building perf_user";
119 @cd $(PERF_PATH) && $(MAKE) clean ICP_OS_LEVEL=user_space && $(MAKE) ARCH=$(ICP_ARCH_USER) ICP_OS_LEVEL=user_space lib_shared exe
120- @cp $(PERF_PATH)/build/linux_2.6/user_space/$(PERF_OUTPUT_NAME)_s.so $(SAMPLE_BUILD_OUTPUT)/;
121- @cp $(PERF_PATH)/build/linux_2.6/user_space/$(PERF_OUTPUT_NAME) $(SAMPLE_BUILD_OUTPUT)/;
122
123 perf_kernel: output_dir
124 @echo ; echo "Building perf_kernel";
125 @cd $(PERF_PATH) && $(MAKE) ICP_OS_LEVEL=kernel_space
126- @cp $(PERF_PATH)/build/linux_2.6/$(ICP_OS_LEVEL)/$(PERF_OUTPUT_NAME).ko $(SAMPLE_BUILD_OUTPUT)/;
127-
128+
129 common_mem_drv_kernel: output_dir
130 @echo ; echo "Building common_mem_drv kernel space";
131 @cd $(CMN_ROOT) && $(MAKE) ICP_OS_LEVEL=user_space cm_kernel
132@@ -175,12 +175,19 @@ common_mem_drv_user: output_dir
133 perf_qae: output_dir
134 @echo ; echo "Building perf_qae";
135 @cd $(CMN_ROOT)/linux/kernel_space && $(MAKE) ICP_OS_LEVEL=kernel_space
136- @cp $(CMN_ROOT)/linux/kernel_space/build/linux_2.6/$(ICP_OS_LEVEL)/$(CMN_MODULE_NAME).ko $(SAMPLE_BUILD_OUTPUT)/;
137-
138
139 func: output_dir
140 @cd $(FUNC_PATH) && $(MAKE) all;
141
142+install: output_dir
143+ @cp $(PERF_PATH)/build/linux_2.6/user_space/$(PERF_OUTPUT_NAME)_s.so $(SAMPLE_BUILD_OUTPUT)$(DEST_LIBDIR);
144+ @cp $(PERF_PATH)/build/linux_2.6/user_space/$(PERF_OUTPUT_NAME) $(SAMPLE_BUILD_OUTPUT)$(DEST_BINDIR);
145+ @cp $(PERF_PATH)/build/linux_2.6/$(ICP_OS_LEVEL)/$(PERF_OUTPUT_NAME).ko $(ICP_BUILD_OUTPUT)/lib/modules/$(QAT_KERNEL_VER)/kernel/drivers;
146+ @cp $(CMN_ROOT)/linux/kernel_space/build/linux_2.6/$(ICP_OS_LEVEL)/$(CMN_MODULE_NAME).ko $(ICP_BUILD_OUTPUT)/lib/modules/$(QAT_KERNEL_VER)/kernel/drivers;
147+ @cp $(FIPS_PATH)/build/linux_2.6/$(ICP_OS_LEVEL)/$(FIPS_OUTPUT_NAME).ko $(ICP_BUILD_OUTPUT)/lib/modules/$(QAT_KERNEL_VER)/kernel/drivers;
148+ @cp $(FIPS_PATH)/build/linux_2.6/user_space/$(FIPS_OUTPUT_NAME)_s.so $(SAMPLE_BUILD_OUTPUT)$(DEST_LIBDIR);
149+ @cp $(FIPS_PATH)/build/linux_2.6/user_space/$(FIPS_OUTPUT_NAME).a $(SAMPLE_BUILD_OUTPUT)$(DEST_LIBDIR);
150+ @cd $(FUNC_PATH) && $(MAKE) install;
151
152 all: $(MEM_DRIVER) fips_code perf_user perf_kernel func
153 perf: $(MEM_DRIVER) perf_kernel
154diff --git a/quickassist/lookaside/access_layer/src/sample_code/functional/Makefile b/quickassist/lookaside/access_layer/src/sample_code/functional/Makefile
155index 3208acf..41754e8 100644
156--- a/quickassist/lookaside/access_layer/src/sample_code/functional/Makefile
157+++ b/quickassist/lookaside/access_layer/src/sample_code/functional/Makefile
158@@ -64,6 +64,8 @@ SYM_PATH?=$(SAMPLE_PATH)/sym
159 ASYM_PATH?=$(SAMPLE_PATH)/asym
160 ICP_API_DIR?=$(ICP_ROOT)/quickassist/include/
161 ICP_LAC_DIR?=$(ICP_ROOT)/quickassist/lookaside/access_layer/
162+BIN_INSTALLPATH=$(SAMPLE_BUILD_OUTPUT)$(DEST_BINDIR)/
163+MODULE_INSTALLPATH=$(SAMPLE_BUILD_OUTPUT)/lib/modules/$(QAT_KERNEL_VER)/kernel/drivers
164
165 CMN_ROOT?=$(ICP_ROOT)/quickassist/lookaside/access_layer/src/sample_code/performance/qae/
166 CMN_MODULE_NAME?=qaeMemDrv
167@@ -105,6 +107,7 @@ SAMPLE_BUILD_OUTPUT?=$(SAMPLE_PATH)/build
168
169 output_dir:
170 test -d $(SAMPLE_BUILD_OUTPUT) || mkdir $(SAMPLE_BUILD_OUTPUT);
171+ test -d $(BIN_INSTALLPATH) || mkdir -p $(BIN_INSTALLPATH);
172
173 BUILD_DC=dc_dp_sample stateless_sample stateful_sample \
174 stateless_multi_op_checksum_sample
175@@ -114,31 +117,23 @@ dc: $(BUILD_DC)
176
177 dc_dp_sample: output_dir
178 @cd $(DC_PATH)/dc_dp_sample && $(MAKE) clean && $(MAKE) ICP_OS_LEVEL=user_space
179- @cp $(DC_PATH)/dc_dp_sample/dc_dp_sample $(SAMPLE_BUILD_OUTPUT)/;
180 ifneq ($(WITH_UPSTREAM),1)
181 @cd $(DC_PATH)/dc_dp_sample && $(MAKE) ICP_OS_LEVEL=kernel_space
182- @cp $(DC_PATH)/dc_dp_sample/dc_dp_sample.ko $(SAMPLE_BUILD_OUTPUT)/;
183 endif
184
185 stateless_sample: output_dir
186 @cd $(DC_PATH)/stateless_sample && $(MAKE) clean && $(MAKE) ICP_OS_LEVEL=user_space
187- @cp $(DC_PATH)/stateless_sample/dc_stateless_sample $(SAMPLE_BUILD_OUTPUT)/;
188 ifneq ($(WITH_UPSTREAM),1)
189 @cd $(DC_PATH)/stateless_sample && $(MAKE) ICP_OS_LEVEL=kernel_space
190- @cp $(DC_PATH)/stateless_sample/dc_stateless_sample.ko $(SAMPLE_BUILD_OUTPUT)/;
191 endif
192
193 stateful_sample: output_dir
194 @cd $(DC_PATH)/stateful_sample && $(MAKE) clean ICP_OS_LEVEL=user_space && $(MAKE) ICP_OS_LEVEL=user_space
195- @cp $(DC_PATH)/stateful_sample/dc_stateful_sample $(SAMPLE_BUILD_OUTPUT)/;
196- @cp $(DC_PATH)/stateful_sample/paper4 $(SAMPLE_BUILD_OUTPUT)/;
197
198 stateless_multi_op_checksum_sample: output_dir
199 @cd $(DC_PATH)/stateless_multi_op_checksum_sample && $(MAKE) clean && $(MAKE) ICP_OS_LEVEL=user_space
200- @cp $(DC_PATH)/stateless_multi_op_checksum_sample/dc_stateless_multi_op_sample $(SAMPLE_BUILD_OUTPUT)/;
201 ifneq ($(WITH_UPSTREAM),1)
202 @cd $(DC_PATH)/stateless_multi_op_checksum_sample && $(MAKE) ICP_OS_LEVEL=kernel_space
203- @cp $(DC_PATH)/stateless_multi_op_checksum_sample/dc_stateless_multi_op_sample.ko $(SAMPLE_BUILD_OUTPUT)/;
204 endif
205
206 BUILD_SYN=algchaining_sample ccm_sample cipher_sample \
207@@ -154,86 +149,65 @@ sym:$(BUILD_SYN)
208 @echo ; echo "Build sym component";
209 algchaining_sample: output_dir
210 @cd $(SYM_PATH)/alg_chaining_sample && $(MAKE) clean && $(MAKE) ICP_OS_LEVEL=user_space
211- @cp $(SYM_PATH)/alg_chaining_sample/algchaining_sample $(SAMPLE_BUILD_OUTPUT)/;
212 ifneq ($(WITH_UPSTREAM),1)
213 @cd $(SYM_PATH)/alg_chaining_sample && $(MAKE) ICP_OS_LEVEL=kernel_space
214- @cp $(SYM_PATH)/alg_chaining_sample/algchaining_sample.ko $(SAMPLE_BUILD_OUTPUT)/;
215 endif
216
217 ccm_sample: output_dir
218 @cd $(SYM_PATH)/ccm_sample && $(MAKE) clean && $(MAKE) ICP_OS_LEVEL=user_space
219- @cp $(SYM_PATH)/ccm_sample/ccm_sample $(SAMPLE_BUILD_OUTPUT)/;
220 ifneq ($(WITH_UPSTREAM),1)
221 @cd $(SYM_PATH)/ccm_sample && $(MAKE) ICP_OS_LEVEL=kernel_space
222- @cp $(SYM_PATH)/ccm_sample/ccm_sample.ko $(SAMPLE_BUILD_OUTPUT)/;
223 endif
224
225 cipher_sample: output_dir
226 @cd $(SYM_PATH)/cipher_sample && $(MAKE) clean && $(MAKE) ICP_OS_LEVEL=user_space
227- @cp $(SYM_PATH)/cipher_sample/cipher_sample $(SAMPLE_BUILD_OUTPUT)/;
228 ifneq ($(WITH_UPSTREAM),1)
229 @cd $(SYM_PATH)/cipher_sample && $(MAKE) ICP_OS_LEVEL=kernel_space
230- @cp $(SYM_PATH)/cipher_sample/cipher_sample.ko $(SAMPLE_BUILD_OUTPUT)/;
231 endif
232
233 drbg_sample: output_dir
234 @cd $(SYM_PATH)/drbg_sample && $(MAKE) clean && $(MAKE) ICP_OS_LEVEL=user_space
235- @cp $(SYM_PATH)/drbg_sample/drbg_sample $(SAMPLE_BUILD_OUTPUT)/;
236 ifneq ($(WITH_UPSTREAM),1)
237 @cd $(SYM_PATH)/drbg_sample && $(MAKE) ICP_OS_LEVEL=kernel_space
238- @cp $(SYM_PATH)/drbg_sample/drbg_sample.ko $(SAMPLE_BUILD_OUTPUT)/;
239 endif
240
241 gcm_sample: output_dir
242 @cd $(SYM_PATH)/gcm_sample && $(MAKE) clean && $(MAKE) ICP_OS_LEVEL=user_space
243- @cp $(SYM_PATH)/gcm_sample/gcm_sample $(SAMPLE_BUILD_OUTPUT)/;
244 ifneq ($(WITH_UPSTREAM),1)
245 @cd $(SYM_PATH)/gcm_sample && $(MAKE) ICP_OS_LEVEL=kernel_space
246- @cp $(SYM_PATH)/gcm_sample/gcm_sample.ko $(SAMPLE_BUILD_OUTPUT)/;
247 endif
248
249 hash_file_sample: output_dir
250 @cd $(SYM_PATH)/hash_file_sample && $(MAKE) clean ICP_OS_LEVEL=user_space&& $(MAKE) ICP_OS_LEVEL=user_space
251- @cp $(SYM_PATH)/hash_file_sample/hash_file_sample $(SAMPLE_BUILD_OUTPUT)/;
252
253 hash_sample: output_dir
254 @cd $(SYM_PATH)/hash_sample && $(MAKE) clean && $(MAKE) ICP_OS_LEVEL=user_space
255- @cp $(SYM_PATH)/hash_sample/hash_sample $(SAMPLE_BUILD_OUTPUT)/;
256 ifneq ($(WITH_UPSTREAM),1)
257 @cd $(SYM_PATH)/hash_sample && $(MAKE) ICP_OS_LEVEL=kernel_space
258- @cp $(SYM_PATH)/hash_sample/hash_sample.ko $(SAMPLE_BUILD_OUTPUT)/;
259 endif
260
261 ipsec_sample: output_dir
262 @cd $(SYM_PATH)/ipsec_sample && $(MAKE) clean && $(MAKE) ICP_OS_LEVEL=user_space
263- @cp $(SYM_PATH)/ipsec_sample/ipsec_sample $(SAMPLE_BUILD_OUTPUT)/;
264 ifneq ($(WITH_UPSTREAM),1)
265 @cd $(SYM_PATH)/ipsec_sample && $(MAKE) ICP_OS_LEVEL=kernel_space
266- @cp $(SYM_PATH)/ipsec_sample/ipsec_sample.ko $(SAMPLE_BUILD_OUTPUT)/;
267 endif
268
269 nrbg_sample: output_dir
270 @cd $(SYM_PATH)/nrbg_sample && $(MAKE) clean && $(MAKE) ICP_OS_LEVEL=user_space
271- @cp $(SYM_PATH)/nrbg_sample/nrbg_sample $(SAMPLE_BUILD_OUTPUT)/;
272 ifneq ($(WITH_UPSTREAM),1)
273 @cd $(SYM_PATH)/nrbg_sample && $(MAKE) && $(MAKE) ICP_OS_LEVEL=kernel_space
274- @cp $(SYM_PATH)/nrbg_sample/nrbg_sample.ko $(SAMPLE_BUILD_OUTPUT)/;
275 endif
276
277 ssl_sample: output_dir
278 @cd $(SYM_PATH)/ssl_sample && $(MAKE) clean && $(MAKE) ICP_OS_LEVEL=user_space
279- @cp $(SYM_PATH)/ssl_sample/ssl_sample $(SAMPLE_BUILD_OUTPUT)/;
280 ifneq ($(WITH_UPSTREAM),1)
281 @cd $(SYM_PATH)/ssl_sample && $(MAKE) ICP_OS_LEVEL=kernel_space
282- @cp $(SYM_PATH)/ssl_sample/ssl_sample.ko $(SAMPLE_BUILD_OUTPUT)/;
283 endif
284
285 sym_dp_sample: output_dir
286 @cd $(SYM_PATH)/symdp_sample && $(MAKE) clean && $(MAKE) ICP_OS_LEVEL=user_space
287- @cp $(SYM_PATH)/symdp_sample/sym_dp_sample $(SAMPLE_BUILD_OUTPUT)/;
288 ifneq ($(WITH_UPSTREAM),1)
289 @cd $(SYM_PATH)/symdp_sample && $(MAKE) ICP_OS_LEVEL=kernel_space
290- @cp $(SYM_PATH)/symdp_sample/sym_dp_sample.ko $(SAMPLE_BUILD_OUTPUT)/;
291 endif
292
293 BUILD_ASYM=diffie_hellman_sample prime_sample
294@@ -243,18 +217,52 @@ asym: $(BUILD_ASYM)
295
296 diffie_hellman_sample: output_dir
297 @cd $(ASYM_PATH)/diffie_hellman_sample && $(MAKE) clean && $(MAKE) ICP_OS_LEVEL=user_space
298- @cp $(ASYM_PATH)/diffie_hellman_sample/dh_sample $(SAMPLE_BUILD_OUTPUT)/;
299 ifneq ($(WITH_UPSTREAM),1)
300 @cd $(ASYM_PATH)/diffie_hellman_sample && $(MAKE) ICP_OS_LEVEL=kernel_space
301- @cp $(ASYM_PATH)/diffie_hellman_sample/dh_sample.ko $(SAMPLE_BUILD_OUTPUT)/;
302 endif
303
304 prime_sample: output_dir
305 @cd $(ASYM_PATH)/prime_sample && $(MAKE) clean && $(MAKE) ICP_OS_LEVEL=user_space
306- @cp $(ASYM_PATH)/prime_sample/prime_sample $(SAMPLE_BUILD_OUTPUT)/;
307 ifneq ($(WITH_UPSTREAM),1)
308 @cd $(ASYM_PATH)/prime_sample && $(MAKE) ICP_OS_LEVEL=kernel_space
309- @cp $(ASYM_PATH)/prime_sample/prime_sample.ko $(SAMPLE_BUILD_OUTPUT)/;
310+endif
311+
312+install: output_dir
313+ @cp $(DC_PATH)/stateless_multi_op_checksum_sample/dc_stateless_multi_op_sample $(BIN_INSTALLPATH);
314+ @cp $(DC_PATH)/stateful_sample/dc_stateful_sample $(BIN_INSTALLPATH);
315+ @cp $(DC_PATH)/stateful_sample/paper4 $(BIN_INSTALLPATH);
316+ @cp $(DC_PATH)/dc_dp_sample/dc_dp_sample $(BIN_INSTALLPATH);
317+ @cp $(DC_PATH)/stateless_sample/dc_stateless_sample $(BIN_INSTALLPATH);
318+ @cp $(ASYM_PATH)/prime_sample/prime_sample $(BIN_INSTALLPATH);
319+ @cp $(ASYM_PATH)/diffie_hellman_sample/dh_sample $(BIN_INSTALLPATH);
320+ @cp $(SYM_PATH)/symdp_sample/sym_dp_sample $(BIN_INSTALLPATH);
321+ @cp $(SYM_PATH)/ssl_sample/ssl_sample $(BIN_INSTALLPATH);
322+ @cp $(SYM_PATH)/nrbg_sample/nrbg_sample $(BIN_INSTALLPATH);
323+ @cp $(SYM_PATH)/hash_file_sample/hash_file_sample $(BIN_INSTALLPATH);
324+ @cp $(SYM_PATH)/ipsec_sample/ipsec_sample $(BIN_INSTALLPATH);
325+ @cp $(SYM_PATH)/hash_sample/hash_sample $(BIN_INSTALLPATH);
326+ @cp $(SYM_PATH)/gcm_sample/gcm_sample $(BIN_INSTALLPATH);
327+ @cp $(SYM_PATH)/alg_chaining_sample/algchaining_sample $(BIN_INSTALLPATH);
328+ @cp $(SYM_PATH)/ccm_sample/ccm_sample $(BIN_INSTALLPATH);
329+ @cp $(SYM_PATH)/drbg_sample/drbg_sample $(BIN_INSTALLPATH);
330+ @cp $(SYM_PATH)/cipher_sample/cipher_sample $(BIN_INSTALLPATH);
331+
332+ifneq ($(WITH_UPSTREAM),1)
333+ @cp $(DC_PATH)/stateless_multi_op_checksum_sample/dc_stateless_multi_op_sample.ko $(MODULE_INSTALLPATH);
334+ @cp $(DC_PATH)/dc_dp_sample/dc_dp_sample.ko $(MODULE_INSTALLPATH);
335+ @cp $(DC_PATH)/stateless_sample/dc_stateless_sample.ko $(MODULE_INSTALLPATH);
336+ @cp $(ASYM_PATH)/prime_sample/prime_sample.ko $(MODULE_INSTALLPATH);
337+ @cp $(ASYM_PATH)/diffie_hellman_sample/dh_sample.ko $(MODULE_INSTALLPATH);
338+ @cp $(SYM_PATH)/symdp_sample/sym_dp_sample.ko $(MODULE_INSTALLPATH);
339+ @cp $(SYM_PATH)/ssl_sample/ssl_sample.ko $(MODULE_INSTALLPATH);
340+ @cp $(SYM_PATH)/nrbg_sample/nrbg_sample.ko $(MODULE_INSTALLPATH);
341+ @cp $(SYM_PATH)/ipsec_sample/ipsec_sample.ko $(MODULE_INSTALLPATH);
342+ @cp $(SYM_PATH)/hash_sample/hash_sample.ko $(MODULE_INSTALLPATH);
343+ @cp $(SYM_PATH)/gcm_sample/gcm_sample.ko $(MODULE_INSTALLPATH);
344+ @cp $(SYM_PATH)/alg_chaining_sample/algchaining_sample.ko $(MODULE_INSTALLPATH);
345+ @cp $(SYM_PATH)/ccm_sample/ccm_sample.ko $(MODULE_INSTALLPATH);
346+ @cp $(SYM_PATH)/drbg_sample/drbg_sample.ko $(MODULE_INSTALLPATH);
347+ @cp $(SYM_PATH)/cipher_sample/cipher_sample.ko $(MODULE_INSTALLPATH);
348 endif
349
350 CLEAN_DC=clean_dc_dp_sample clean_stateless_sample \
351--
3521.9.1
353
diff --git a/meta-qat/recipes-extended/qat/qat16/qat16_2.6.0-65-qat-override-CC-LD-AR-only-when-it-is-not-define.patch b/meta-qat/recipes-extended/qat/qat16/qat16_2.6.0-65-qat-override-CC-LD-AR-only-when-it-is-not-define.patch
new file mode 100644
index 0000000..21cdeae
--- /dev/null
+++ b/meta-qat/recipes-extended/qat/qat16/qat16_2.6.0-65-qat-override-CC-LD-AR-only-when-it-is-not-define.patch
@@ -0,0 +1,35 @@
1From b21929c42aca4bc80f6c48b5ac31bf20165b2f3e Mon Sep 17 00:00:00 2001
2From: Rahul Kumar Gupta <rahul.kumarxx.gupta@intel.com>
3Date: Fri, 25 Mar 2016 18:02:37 +0800
4Subject: [PATCH] qat: override CC LD AR only when it is not define
5
6Upstream-Status: Inappropriate [Configuration]
7
8To make sure that compiler linker and archiver will override only when
9it is not defined by the environment.
10
11Signed-off-by: Rahul Kumar Gupta <rahul.kumarxx.gupta@intel.com>
12---
13 quickassist/build_system/build_files/Core/ia.mk | 6 +++---
14 1 file changed, 3 insertions(+), 3 deletions(-)
15
16diff --git a/quickassist/build_system/build_files/Core/ia.mk b/quickassist/build_system/build_files/Core/ia.mk
17index 4a4d123..f9aca23 100755
18--- a/quickassist/build_system/build_files/Core/ia.mk
19+++ b/quickassist/build_system/build_files/Core/ia.mk
20@@ -67,9 +67,9 @@
21 # e.g. setenv CROSS_COMPILE x86_64-linux
22 ifdef CROSS_COMPILE
23 ifdef MACHINE
24-CC = $(CROSS_COMPILE)gcc
25-LD = $(CROSS_COMPILE)ld
26-AR = $(CROSS_COMPILE)ar
27+CC ?= $(CROSS_COMPILE)gcc
28+LD ?= $(CROSS_COMPILE)ld
29+AR ?= $(CROSS_COMPILE)ar
30 else
31 $(error MACHINE is undefined. Please set your target i.e. x86_64 \
32 "-> setenv MACHINE x86_64 or export MACHINE=x86_64")
33--
341.9.1
35
diff --git a/meta-qat/recipes-extended/qat/qat16/use-CC-for-LD.patch b/meta-qat/recipes-extended/qat/qat16/use-CC-for-LD.patch
new file mode 100644
index 0000000..36ceedf
--- /dev/null
+++ b/meta-qat/recipes-extended/qat/qat16/use-CC-for-LD.patch
@@ -0,0 +1,17 @@
1Use CC to do the linking, helps in linking with gold or bfd linker
2
3Upstream-Status: Inappropriate [OE-Specific]
4Signed-off-by: Khem Raj <raj.khem@gmail.com>
5Index: QAT1.6/quickassist/build_system/build_files/OS/linux_2.6.mk
6===================================================================
7--- QAT1.6.orig/quickassist/build_system/build_files/OS/linux_2.6.mk
8+++ QAT1.6/quickassist/build_system/build_files/OS/linux_2.6.mk
9@@ -89,7 +89,7 @@ EXTRA_CFLAGS+= -Wno-div-by-zero -Wfloat-
10 endif
11
12
13-LIB_SHARED_FLAGS+=-shared -soname $(LIB_SHARED)
14+LIB_SHARED_FLAGS+=-shared -Wl,-soname,$(LIB_SHARED)
15 LIB_STATIC_FLAGS=
16 EXE_FLAGS?=
17
diff --git a/meta-qat/recipes-extended/qat/qat16_2.5.0-80.bb b/meta-qat/recipes-extended/qat/qat16_2.5.0-80.bb
new file mode 100644
index 0000000..46d81fb
--- /dev/null
+++ b/meta-qat/recipes-extended/qat/qat16_2.5.0-80.bb
@@ -0,0 +1,12 @@
1include qat16.inc
2
3SRC_URI += "https://01.org/sites/default/files/page/qatmux.l.${PV}.tgz;name=qat \
4 file://qat16_2.5.0-80-qat-add-install-target-to-makefiles.patch \
5 "
6
7SRC_URI[qat.md5sum] = "e3c2ceeec7ed8b36d75682742caff81e"
8SRC_URI[qat.sha256sum] = "e9e47cd9cbd98c2ceac5cc31570e443680649be682068126df6d749120a3697d"
9
10do_install_append() {
11 install -m 0755 ${SAMPLE_CODE_DIR}/performance/compression/calgary32 ${D}${base_libdir}/firmware
12}
diff --git a/meta-qat/recipes-extended/qat/qat16_2.6.0-65.bb b/meta-qat/recipes-extended/qat/qat16_2.6.0-65.bb
new file mode 100644
index 0000000..88cf66c
--- /dev/null
+++ b/meta-qat/recipes-extended/qat/qat16_2.6.0-65.bb
@@ -0,0 +1,16 @@
1include qat16.inc
2
3SRC_URI += "https://01.org/sites/default/files/page/qatmux.l.2.6.0-60.tgz;name=qat \
4 file://qat16_2.6.0-65-qat-add-install-target-to-makefiles.patch \
5 file://qat16_2.6.0-65-qat-override-CC-LD-AR-only-when-it-is-not-define.patch \
6 file://use-CC-for-LD.patch \
7 "
8
9SRC_URI_append_libc-musl = " file://0001-OsalServices-Only-use-bits-time-with-GLIBC.patch"
10
11SRC_URI[qat.md5sum] = "c54e877fb9fbb4690a9bd50793268bcf"
12SRC_URI[qat.sha256sum] = "872046ffdf02f664d12a56cdb880403d65b914b303b75875707a9eebd9c841f5"
13
14do_install_append() {
15 install -m 0755 ${SAMPLE_CODE_DIR}/performance/compression/calgary32 ${D}${base_libdir}/firmware
16}
diff --git a/meta-qat/recipes-extended/zlib-qat/zlib-qat/0001-qat_zlib.h-Add-pthread.h-for-MUSL.patch b/meta-qat/recipes-extended/zlib-qat/zlib-qat/0001-qat_zlib.h-Add-pthread.h-for-MUSL.patch
new file mode 100644
index 0000000..b45ae79
--- /dev/null
+++ b/meta-qat/recipes-extended/zlib-qat/zlib-qat/0001-qat_zlib.h-Add-pthread.h-for-MUSL.patch
@@ -0,0 +1,29 @@
1From 30c4a1181cbe696dd1b9f52c8e9422ef8c331e8f Mon Sep 17 00:00:00 2001
2From: Saul Wold <sgw@linux.intel.com>
3Date: Thu, 9 Feb 2017 12:40:47 -0800
4Subject: [PATCH] qat_zlib.h: Add pthread.h for MUSL
5
6MUSL is stricter when it comes to header file inclusion, so add
7the additional header thats needed to compile with MUSL.
8
9Upstream-Status: Pending
10Signed-off-by: Saul Wold <sgw@linux.intel.com>
11---
12 qat_zlib.h | 1 +
13 1 file changed, 1 insertion(+)
14
15diff --git a/qat_zlib.h b/qat_zlib.h
16index 2747f84..d9ac312 100644
17--- a/qat_zlib.h
18+++ b/qat_zlib.h
19@@ -8,6 +8,7 @@
20 #include <stdlib.h>
21 #include <assert.h>
22 #include <time.h>
23+#include <pthread.h>
24
25 #include "cpa_dc.h"
26 #ifdef USE_QAE_MEM
27--
282.7.4
29
diff --git a/meta-qat/recipes-extended/zlib-qat/zlib-qat/zlib-qat-0.4.7-002-qat_mem-build-qat_mem-ko-against-yocto-kernel-src.patch b/meta-qat/recipes-extended/zlib-qat/zlib-qat/zlib-qat-0.4.7-002-qat_mem-build-qat_mem-ko-against-yocto-kernel-src.patch
new file mode 100644
index 0000000..9e774db
--- /dev/null
+++ b/meta-qat/recipes-extended/zlib-qat/zlib-qat/zlib-qat-0.4.7-002-qat_mem-build-qat_mem-ko-against-yocto-kernel-src.patch
@@ -0,0 +1,51 @@
1From aa65d69632142d24ec44ed4c2d66371e1a1be7b4 Mon Sep 17 00:00:00 2001
2From: Anuj Mittal <anujx.mittal@intel.com>
3Date: Thu, 18 Jun 2015 11:56:08 +0800
4Subject: [PATCH] qat_mem: build qat_mem ko against yocto kernel src
5
6Upstream-Status: Inappropriate [Configuration]
7
8This tweaks the kernel source and build path in the makefile
9to make sure the module is built against the right source.
10
11Signed-off-by: Anuj Mittal <anujx.mittal@intel.com>
12---
13 contrib/qat/qat_mem/Makefile | 13 +++++--------
14 1 file changed, 5 insertions(+), 8 deletions(-)
15
16diff --git a/contrib/qat/qat_mem/Makefile b/contrib/qat/qat_mem/Makefile
17index ddf5b59..ad6d4a4 100644
18--- a/contrib/qat/qat_mem/Makefile
19+++ b/contrib/qat/qat_mem/Makefile
20@@ -61,16 +61,10 @@
21 #########################################################################
22
23 MODULENAME := qat_mem
24-KDIR := /lib/modules/$(shell uname -r)/build
25+KDIR := $(KERNEL_SOURCE_ROOT)
26 PWD := $(shell pwd)
27
28-ifeq ($(shell uname -r|grep -c grsec-WR), 1)
29-AUTO_CONF=/lib/modules/$(shell uname -r)/build/include/generated/autoconf.h
30-else
31-AUTO_CONF=/usr/src/kernels/$(shell uname -r)/include/linux/autoconf.h
32-endif
33-
34-CC := gcc -Wall -imacros $(AUTO_CONF)
35+CC := ${CC} -Wall -imacros $(KERNEL_BUILDDIR)/include/generated/autoconf.h
36
37 ifeq ($(KERNELRELEASE),)
38 all: $(MODULENAME)_test
39@@ -80,6 +74,9 @@ else
40 obj-m := $(MODULENAME).o
41 endif
42
43+modules_install:
44+ $(MAKE) -C $(KDIR) M=$(PWD) modules_install
45+
46 $(MODULENAME)_test: $(MODULENAME)_test.c
47 $(CC) -g -o $(MODULENAME)_test $(MODULENAME)_test.c
48
49--
501.7.9.5
51
diff --git a/meta-qat/recipes-extended/zlib-qat/zlib-qat/zlib-qat-0.4.7-002-zlib-Remove-rpaths-from-makefile.patch b/meta-qat/recipes-extended/zlib-qat/zlib-qat/zlib-qat-0.4.7-002-zlib-Remove-rpaths-from-makefile.patch
new file mode 100644
index 0000000..c360511
--- /dev/null
+++ b/meta-qat/recipes-extended/zlib-qat/zlib-qat/zlib-qat-0.4.7-002-zlib-Remove-rpaths-from-makefile.patch
@@ -0,0 +1,52 @@
1From aad2675c7bb635d8b7be47fa89a3ee87ba19d2e8 Mon Sep 17 00:00:00 2001
2From: Anuj Mittal <anujx.mittal@intel.com>
3Date: Thu, 18 Jun 2015 11:46:17 +0800
4Subject: [PATCH] zlib: Remove rpaths from makefile
5
6Upstream-Status: Inappropriate [configuration]
7
8This removes references to RPATHS that are no longer
9necesary when building using bitbake.
10
11Signed-off-by: Anuj Mittal <anujx.mittal@intel.com>
12---
13 Makefile.in | 4 ++--
14 contrib/qat/qat_zlib_test/Makefile | 3 ---
15 2 files changed, 2 insertions(+), 5 deletions(-)
16
17diff --git a/Makefile.in b/Makefile.in
18index 94d8a80..cba5291 100644
19--- a/Makefile.in
20+++ b/Makefile.in
21@@ -59,12 +59,12 @@ ICP_LAC_API_DIR=$(ICP_API_DIR)/lac/
22 ICP_DC_API_DIR=$(ICP_API_DIR)/dc/
23 CFLAGS+=-D_GNU_SOURCE -I$(ICP_API_DIR) -I$(ICP_DC_API_DIR) -I$(ICP_LAC_API_DIR) -I$(ICP_SAL_API_DIR)
24 SFLAGS+=-D_GNU_SOURCE -I$(ICP_API_DIR) -I$(ICP_DC_API_DIR) -I$(ICP_LAC_API_DIR) -I$(ICP_SAL_API_DIR)
25-ADDITIONAL_LDFLAGS+=-Wl,-rpath,$(ZLIB_ROOT) -lz
26+#ADDITIONAL_LDFLAGS+=-Wl,-rpath,$(ZLIB_ROOT) -lz
27 SHARED_APP_FLAGS=-Wl,-rpath,$(ZLIB_ROOT) -L$(ZLIB_ROOT) -lz
28
29 ifdef ICP_BUILD_OUTPUT
30 TEST_LDFLAGS+=-L$(ICP_BUILD_OUTPUT)
31- ADDITIONAL_LDFLAGS+=-Wl,-rpath,$(ICP_BUILD_OUTPUT) -L$(ICP_BUILD_OUTPUT)
32+# ADDITIONAL_LDFLAGS+=-Wl,-rpath,$(ICP_BUILD_OUTPUT) -L$(ICP_BUILD_OUTPUT)
33 endif
34
35 ifdef ZLIB_DH895XCC
36diff --git a/contrib/qat/qat_zlib_test/Makefile b/contrib/qat/qat_zlib_test/Makefile
37index 8a29a92..ca31dd2 100644
38--- a/contrib/qat/qat_zlib_test/Makefile
39+++ b/contrib/qat/qat_zlib_test/Makefile
40@@ -84,9 +84,6 @@ OBJS = $(SRCS:%.c=%.o)
41 COVERAGE_OBJS =
42 EXE=
43 LIBQAT=
44-ifdef ICP_BUILD_OUTPUT
45- LIBQAT+= -Wl,-rpath,$(ICP_BUILD_OUTPUT) -L$(ICP_BUILD_OUTPUT)
46-endif
47
48 DRIVER=icp_qa_al
49 ifdef WITH_CPA_MUX
50--
511.7.9.5
52
diff --git a/meta-qat/recipes-extended/zlib-qat/zlib-qat/zlib-qat-0.4.7-002-zlib-qat-add-a-install-target-to-makefile.patch b/meta-qat/recipes-extended/zlib-qat/zlib-qat/zlib-qat-0.4.7-002-zlib-qat-add-a-install-target-to-makefile.patch
new file mode 100644
index 0000000..c7aec55
--- /dev/null
+++ b/meta-qat/recipes-extended/zlib-qat/zlib-qat/zlib-qat-0.4.7-002-zlib-qat-add-a-install-target-to-makefile.patch
@@ -0,0 +1,46 @@
1From d78121d790c4a248bc47d1c662791fe57ac4af38 Mon Sep 17 00:00:00 2001
2From: Anuj Mittal <anujx.mittal@intel.com>
3Date: Thu, 18 Jun 2015 11:53:23 +0800
4Subject: [PATCH] zlib-qat: add a install target to makefile
5
6Upstream-Status: Inappropriate [Configuration]
7
8This adds an install target to qat_zlib_test and qat_mem makefiles
9to facilitate the installation of test binaries to {D}.
10
11Signed-off-by: Anuj Mittal <anujx.mittal@intel.com>
12---
13 contrib/qat/qat_mem/Makefile | 3 +++
14 contrib/qat/qat_zlib_test/Makefile | 3 +++
15 2 files changed, 6 insertions(+)
16
17diff --git a/contrib/qat/qat_mem/Makefile b/contrib/qat/qat_mem/Makefile
18index ad6d4a4..e4d77b6 100644
19--- a/contrib/qat/qat_mem/Makefile
20+++ b/contrib/qat/qat_mem/Makefile
21@@ -74,6 +74,9 @@ else
22 obj-m := $(MODULENAME).o
23 endif
24
25+install: modules_install
26+ cp qat_mem_test $(INSTALL_MOD_PATH)$(bindir)
27+
28 modules_install:
29 $(MAKE) -C $(KDIR) M=$(PWD) modules_install
30
31diff --git a/contrib/qat/qat_zlib_test/Makefile b/contrib/qat/qat_zlib_test/Makefile
32index ca31dd2..7da5ddd 100644
33--- a/contrib/qat/qat_zlib_test/Makefile
34+++ b/contrib/qat/qat_zlib_test/Makefile
35@@ -112,5 +112,8 @@ comptestappsh$(EXE): $(OBJS) Makefile
36 $(CC) -o comptestappsh $(OBJS) $(COVERAGE) \
37 $(SHAREDLIBQAT)
38
39+install:
40+ cp comptestapp $(DESTDIR)$(bindir)
41+
42 clean:
43 rm -f $(OBJS) $(COVERAGE_OBJS) comptestapp comptestappsh
44--
451.7.9.5
46
diff --git a/meta-qat/recipes-extended/zlib-qat/zlib-qat_0.4.7-002.bb b/meta-qat/recipes-extended/zlib-qat/zlib-qat_0.4.7-002.bb
new file mode 100644
index 0000000..90e036f
--- /dev/null
+++ b/meta-qat/recipes-extended/zlib-qat/zlib-qat_0.4.7-002.bb
@@ -0,0 +1,133 @@
1SUMMARY = "Zlib QAT_MEM Memory Management Module for Intel Quick Assist \
2Technology"
3
4DESCRIPTION = "This software acelerates the data compression algorithm \
5in the zlib software library via the Intel QuickAssist Technology \
6implemented on Intel Communications Chipset 89xx and 895x Series based platforms."
7
8HOMEPAGE = "http://zlib.net/"
9SECTION = "libs"
10LICENSE = "Zlib & GPLv2 & BSD"
11LIC_FILES_CHKSUM = "file://${WORKDIR}/zlib-${ZLIB_VERSION}/zlib.h;beginline=4;endline=23;md5=fde612df1e5933c428b73844a0c494fd \
12 file://${COMMON_LICENSE_DIR}/GPL-2.0;md5=801f80980d171dd6425610833a22dbe6 \
13 file://${COMMON_LICENSE_DIR}/BSD;md5=3775480a712fc46a69647678acb234cb"
14
15# For target side versions of openssl enable support for OCF Linux driver
16# if they are available.
17DEPENDS += "cryptodev-linux pkgconfig virtual/qat"
18
19SRC_URI = "http://www.zlib.net/zlib-${ZLIB_VERSION}.tar.gz;name=zlib \
20 https://01.org/sites/default/files/page/zlib_shim_0.4.7-002_withdocumentation.zip;name=zlibqat \
21 file://zlib-qat-0.4.7-002-qat_mem-build-qat_mem-ko-against-yocto-kernel-src.patch \
22 file://zlib-qat-0.4.7-002-zlib-qat-add-a-install-target-to-makefile.patch \
23 file://zlib-qat-0.4.7-002-zlib-Remove-rpaths-from-makefile.patch \
24 "
25SRC_URI_append_libc-musl = " file://0001-qat_zlib.h-Add-pthread.h-for-MUSL.patch"
26
27SRC_URI[zlib.md5sum] = "44d667c142d7cda120332623eab69f40"
28SRC_URI[zlib.sha256sum] = "36658cb768a54c1d4dec43c3116c27ed893e88b02ecfcb44f2166f9c0b7f2a0d"
29
30SRC_URI[zlibqat.md5sum] = "dfde8618198aa8d35ecc00d10dcc7000"
31SRC_URI[zlibqat.sha256sum] = "8e5786400bbc2a879ae705c864ec63b53ae019b4f2d1c94524a97223847b6e46"
32
33COMPATIBLE_MACHINE = "null"
34
35ZLIB_VERSION = "1.2.8"
36ZLIB_QAT_VERSION = "0.4.7-002"
37QAT_PATCH_VERSION = "l.0.4.7_002"
38
39S = "${WORKDIR}/zlib-${ZLIB_VERSION}"
40
41export ICP_ROOT = "${S}"
42export ZLIB_ROOT = "${S}"
43export KERNEL_SOURCE_ROOT = "${STAGING_KERNEL_DIR}"
44export KERNEL_BUILDDIR = "${STAGING_KERNEL_BUILDDIR}"
45export ICP_LAC_API_DIR = "${STAGING_DIR_TARGET}${includedir}/lac"
46export ICP_DC_API_DIR = "${STAGING_DIR_TARGET}${includedir}/dc"
47export ZLIB_DH895XCC = "1"
48export ZLIB_MEMORY_DRIVER = "qat_mem"
49export ICP_BUILD_OUTPUT = "${STAGING_DIR_TARGET}"
50EXTRA_OEMAKE = "-e MAKEFLAGS="
51TARGET_CC_ARCH += "${LDFLAGS}"
52
53inherit module
54MEM_PATH = "${S}/contrib/qat"
55
56zlibqat_do_patch() {
57 cd ${WORKDIR}
58 unzip -q -o zlib_quickassist_patch_${QAT_PATCH_VERSION}_stable.zip
59 cd zlib_quickassist_patch_${QAT_PATCH_VERSION}_devbranch
60 tar -xvzf zlib-${ZLIB_VERSION}-qat.L.${ZLIB_QAT_VERSION}.tar.gz
61 cp -f zlib-${ZLIB_VERSION}-qat.patch ${WORKDIR}
62 cd ${S}
63 if [ ! -d ${S}/debian/patches ]; then
64 mkdir -p ${S}/debian/patches
65 cp -f ${WORKDIR}/zlib-${ZLIB_VERSION}-qat.patch ${S}/debian/patches
66 echo "zlib-${ZLIB_VERSION}-qat.patch -p1" > ${S}/debian/patches/series
67 fi
68 quilt pop -a || true
69 if [ -d ${S}/.pc-zlibqat ]; then
70 rm -rf ${S}/.pc
71 mv ${S}/.pc-zlibqat ${S}/.pc
72 QUILT_PATCHES=${S}/debian/patches quilt pop -a
73 rm -rf ${S}/.pc
74 fi
75 QUILT_PATCHES=${S}/debian/patches quilt push -a
76 mv ${S}/.pc ${S}/.pc-zlibqat
77}
78
79# We invoke base do_patch at end, to incorporate any local patch
80python do_patch() {
81 bb.build.exec_func('zlibqat_do_patch', d)
82 bb.build.exec_func('patch_do_patch', d)
83}
84
85#addtask zlibqat_patch after do_prepare_recipe_sysroot before patch_do_patch
86#addtask do_zlibqat_patch after do_prepare_recipe_sysroot before do_configure
87
88do_configure() {
89 ./configure --prefix=${prefix} --shared --libdir=${libdir}
90}
91
92do_compile() {
93 unset CFLAGS CXXFLAGS
94 oe_runmake
95
96 cd ${S}/contrib/qat/qat_mem
97 oe_runmake
98
99 cd ${S}/contrib/qat/qat_zlib_test
100 oe_runmake
101}
102
103do_install() {
104 install -m 0755 -d ${D}${bindir}/
105 install -m 0755 -d ${D}${sysconfdir}/zlib_conf/
106
107 install -m 0755 zpipe ${D}${bindir}
108 install -m 0755 minigzip ${D}${bindir}
109
110 cd ${MEM_PATH}/qat_mem
111 oe_runmake INSTALL_MOD_PATH=${D} INSTALL_MOD_DIR="kernel/drivers" install
112
113 cd ${S}/contrib/qat/qat_zlib_test
114 oe_runmake DESTDIR=${D} install
115
116 install -m 660 ${MEM_PATH}/config/dh895xcc/multi_thread_optimized/* ${D}${sysconfdir}/zlib_conf/
117}
118
119PACKAGES += "${PN}-app"
120
121FILES_${PN} += " \
122 ${sysconfdir}/zlib_conf/ \
123 "
124
125FILES_${PN}-app += " \
126 ${bindir}/* \
127 "
128
129FILES_${PN}-dbg += " \
130 ${bindir}/.debug \
131 "
132
133EXCLUDE_FROM_WORLD_core2-32-intel-common = "1"
diff --git a/meta-tlk/COPYING.MIT b/meta-tlk/COPYING.MIT
new file mode 100644
index 0000000..fb950dc
--- /dev/null
+++ b/meta-tlk/COPYING.MIT
@@ -0,0 +1,17 @@
1Permission is hereby granted, free of charge, to any person obtaining a copy
2of this software and associated documentation files (the "Software"), to deal
3in the Software without restriction, including without limitation the rights
4to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
5copies of the Software, and to permit persons to whom the Software is
6furnished to do so, subject to the following conditions:
7
8The above copyright notice and this permission notice shall be included in
9all copies or substantial portions of the Software.
10
11THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
12IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
13FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
14AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
15LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
16OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
17THE SOFTWARE.
diff --git a/meta-tlk/README b/meta-tlk/README
new file mode 100644
index 0000000..07cbd76
--- /dev/null
+++ b/meta-tlk/README
@@ -0,0 +1,9 @@
1meta-tlk
2========
3
4This layer makes the appropriate kernel modifications to enable a 10 day
5time limit in the official BSP images produced using the Yocto Project
6autobuilder, in order to encourage people to produce their own images
7for production whilst still allowing the images to be useful for testing
8and debugging.
9
diff --git a/meta-tlk/conf/layer.conf b/meta-tlk/conf/layer.conf
new file mode 100644
index 0000000..dea544f
--- /dev/null
+++ b/meta-tlk/conf/layer.conf
@@ -0,0 +1,13 @@
1# We have a conf and classes directory, add to BBPATH
2BBPATH .= ":${LAYERDIR}"
3
4# We have recipes-* directories, add to BBFILES
5BBFILES += "${LAYERDIR}/recipes-*/*/*.bb \
6 ${LAYERDIR}/recipes-*/*/*.bbappend"
7
8BBFILE_COLLECTIONS += "tlk"
9BBFILE_PATTERN_tlk := "^${LAYERDIR}/"
10BBFILE_PRIORITY_tlk = "5"
11
12LAYERDEPENDS_tlk = "core intel"
13
diff --git a/meta-tlk/recipes-core/base-files/base-files_3.0.14.bbappend b/meta-tlk/recipes-core/base-files/base-files_3.0.14.bbappend
new file mode 100644
index 0000000..81fe7b7
--- /dev/null
+++ b/meta-tlk/recipes-core/base-files/base-files_3.0.14.bbappend
@@ -0,0 +1 @@
FILESEXTRAPATHS_prepend := "${THISDIR}/files:"
diff --git a/meta-tlk/recipes-core/base-files/files/motd b/meta-tlk/recipes-core/base-files/files/motd
new file mode 100644
index 0000000..13cd74c
--- /dev/null
+++ b/meta-tlk/recipes-core/base-files/files/motd
@@ -0,0 +1,7 @@
1This image contains a time limited kernel and will reboot the machine
2automatically in 10 days. Do not include this image in a product.
3
4Use the image for evaluation purposes only.
5
6Please see http://www.yoctoproject.org/tlk for instructions on how to
7eliminate the timeout.
diff --git a/meta-tlk/recipes-core/psplash/files/psplash-tlk.png b/meta-tlk/recipes-core/psplash/files/psplash-tlk.png
new file mode 100644
index 0000000..54b8fae
--- /dev/null
+++ b/meta-tlk/recipes-core/psplash/files/psplash-tlk.png
Binary files differ
diff --git a/meta-tlk/recipes-core/psplash/psplash_git.bbappend b/meta-tlk/recipes-core/psplash/psplash_git.bbappend
new file mode 100644
index 0000000..176a299
--- /dev/null
+++ b/meta-tlk/recipes-core/psplash/psplash_git.bbappend
@@ -0,0 +1,6 @@
1FILESEXTRAPATHS_prepend := "${THISDIR}/files:"
2
3# NB: this is only for the main logo image; if you add multiple images here,
4# poky will build multiple psplash packages with 'outsuffix' in name for
5# each of these ...
6SPLASH_IMAGES = "file://psplash-tlk.png;outsuffix=default"
diff --git a/meta-tlk/recipes-kernel/linux/files/time-limited-kernel.cfg b/meta-tlk/recipes-kernel/linux/files/time-limited-kernel.cfg
new file mode 100644
index 0000000..44f4bea
--- /dev/null
+++ b/meta-tlk/recipes-kernel/linux/files/time-limited-kernel.cfg
@@ -0,0 +1,3 @@
1CONFIG_UPTIME_LIMITED_KERNEL=y
2CONFIG_UPTIME_LIMIT_DURATION=14400
3CONFIG_UPTIME_LIMIT_KERNEL_REBOOT=y
diff --git a/meta-tlk/recipes-kernel/linux/files/uptime-allow-the-optional-limiting-of-kernel-runtime.patch b/meta-tlk/recipes-kernel/linux/files/uptime-allow-the-optional-limiting-of-kernel-runtime.patch
new file mode 100644
index 0000000..aa14305
--- /dev/null
+++ b/meta-tlk/recipes-kernel/linux/files/uptime-allow-the-optional-limiting-of-kernel-runtime.patch
@@ -0,0 +1,251 @@
1From a21e483b57c8c31beaa5063268ec35da375daf04 Mon Sep 17 00:00:00 2001
2From: Bruce Ashfield <bruce.ashfield@windriver.com>
3Date: Tue, 12 Jul 2011 10:26:50 -0400
4Subject: [PATCH] uptime: allow the optional limiting of kernel runtime
5
6Introduce the ability to limit the limit the uptime of a kernel.
7When enabled, these options set a maximum uptime on the kernel, and
8(optionally) trigger a clean reboot at expiration.
9
10This functionality may appear to be very close to the softdog watchdog
11implementation. It is. But can't be the softdog for several reasons:
12
13 - The soft watchdog should be available while this functionality is active
14 - The duration range is different between this and the softdog. The
15 timeout available here is potentially quite a bit longer.
16 - At expiration, there are different expiration requirements and actions.
17 - This functionality is specific to a particular use case and should
18 not impact mainline functionality
19
20To cleanly restart the kernel after one minute of uptime, the following
21config items would be required:
22
23 CONFIG_UPTIME_LIMITED_KERNEL=y
24 CONFIG_UPTIME_LIMIT_DURATION=1
25 CONFIG_UPTIME_LIMIT_KERNEL_REBOOT=y
26
27Signed-off-by: Bruce Ashfield <bruce.ashfield@windriver.com>
28
29diff --git a/init/Kconfig b/init/Kconfig
30index cac3f096050d..77d6d5fa1b1d 100644
31--- a/init/Kconfig
32+++ b/init/Kconfig
33@@ -1376,6 +1376,31 @@ menuconfig EXPERT
34 environments which can tolerate a "non-standard" kernel.
35 Only use this if you really know what you are doing.
36
37+config UPTIME_LIMITED_KERNEL
38+ bool "Create a kernel with uptime limitations"
39+ default n
40+ help
41+ Limit the amount of time a kernel can run. The associated UPTIME_LIMIT*
42+ kernel config options should be used to tune the behaviour.
43+
44+config UPTIME_LIMIT_DURATION
45+ int "Kernel uptime limit in minutes"
46+ depends on UPTIME_LIMITED_KERNEL
47+ range 0 14400
48+ default 0
49+ help
50+ Define the uptime limitation on a kernel in minutes. Once
51+ the defined time expires the kernel will emit a warning, cease
52+ to be usable and eventually restart. The valid range is 0 (disable)
53+ to 14400 (10 days)
54+
55+config UPTIME_LIMIT_KERNEL_REBOOT
56+ bool "Reboot a time limited kernel at expiration"
57+ depends on UPTIME_LIMITED_KERNEL
58+ default y
59+ help
60+ Reboot an uptime limited kernel at expiration.
61+
62 config UID16
63 bool "Enable 16-bit UID system calls" if EXPERT
64 depends on HAVE_UID16 && MULTIUSER
65diff --git a/kernel/Makefile b/kernel/Makefile
66index e2ec54e2b952..6b7bdddd624b 100644
67--- a/kernel/Makefile
68+++ b/kernel/Makefile
69@@ -45,6 +45,7 @@ obj-$(CONFIG_FREEZER) += freezer.o
70 obj-$(CONFIG_PROFILING) += profile.o
71 obj-$(CONFIG_STACKTRACE) += stacktrace.o
72 obj-y += time/
73+obj-$(CONFIG_UPTIME_LIMITED_KERNEL) += uptime_limit.o
74 obj-$(CONFIG_FUTEX) += futex.o
75 ifeq ($(CONFIG_COMPAT),y)
76 obj-$(CONFIG_FUTEX) += futex_compat.o
77diff --git a/kernel/uptime_limit.c b/kernel/uptime_limit.c
78new file mode 100644
79index 000000000000..b6a1a5e4f9d9
80--- /dev/null
81+++ b/kernel/uptime_limit.c
82@@ -0,0 +1,166 @@
83+/*
84+ * uptime_limit.c
85+ *
86+ * This file contains the functions which can limit kernel uptime
87+ *
88+ * Copyright (C) 2011 Bruce Ashfield (bruce.ashfield@windriver.com)
89+ *
90+ * This program is free software; you can redistribute it and/or modify
91+ * it under the terms of the GNU General Public License as published by
92+ * the Free Software Foundation; either version 2 of the License, or
93+ * (at your option) any later version.
94+ *
95+ * This program is distributed in the hope that it will be useful,
96+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
97+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
98+ * GNU General Public License for more details.
99+ *
100+ * You should have received a copy of the GNU General Public License
101+ * along with this program; if not, write to the Free Software
102+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
103+ *
104+ *
105+ * This functionality is somewhat close to the softdog watchdog
106+ * implementation, but it cannot be used directly for several reasons:
107+ *
108+ * - The soft watchdog should be available while this functionality is active
109+ * - The duration range is different between this and the softdog. The
110+ * timeout available here is potentially quite a bit longer.
111+ * - At expiration, there are different expiration requirements and actions.
112+ * - This functionality is specific to a particular use case and should
113+ * not impact mainline functionality
114+ *
115+ */
116+#include <linux/kernel.h>
117+#include <linux/reboot.h>
118+#include <linux/timer.h>
119+#include <linux/delay.h>
120+#include <linux/kthread.h>
121+
122+#define UPTIME_LIMIT_IN_SECONDS (CONFIG_UPTIME_LIMIT_DURATION * 60)
123+#define MIN(X, Y) ((X) <= (Y) ? (X) : (Y))
124+#define TEN_MINUTES_IN_SECONDS 600
125+
126+enum uptime_expiration_type {
127+ uptime_no_action,
128+ uptime_reboot
129+};
130+
131+static enum uptime_expiration_type uptime_expiration_action = uptime_no_action;
132+static struct timer_list timelimit_timer;
133+static struct task_struct *uptime_worker_task;
134+
135+static void timelimit_expire(unsigned long timeout_seconds)
136+{
137+ char msg[128];
138+ int msglen = 127;
139+
140+ if (timeout_seconds) {
141+ if (timeout_seconds >= 60)
142+ snprintf(msg, msglen,
143+ "Uptime: kernel validity duration has %d %s remaining\n",
144+ (int) timeout_seconds / 60, "minute(s)");
145+ else
146+ snprintf(msg, msglen,
147+ "Uptime: kernel validity duration has %d %s remaining\n",
148+ (int) timeout_seconds, "seconds");
149+
150+ printk(KERN_CRIT "%s", msg);
151+
152+ timelimit_timer.expires = jiffies + timeout_seconds * HZ;
153+ timelimit_timer.data = 0;
154+ add_timer_on(&timelimit_timer, cpumask_first(cpu_online_mask));
155+ } else {
156+ printk(KERN_CRIT "Uptime: Kernel validity timeout has expired\n");
157+#ifdef CONFIG_UPTIME_LIMIT_KERNEL_REBOOT
158+ uptime_expiration_action = uptime_reboot;
159+ wake_up_process(uptime_worker_task);
160+ }
161+#endif
162+}
163+
164+/*
165+ * This thread starts and then immediately goes to sleep. When it is woken
166+ * up, it carries out the instructions left in uptime_expiration_action. If
167+ * no action was specified it simply goes back to sleep.
168+ */
169+static int uptime_worker(void *unused)
170+{
171+ set_current_state(TASK_INTERRUPTIBLE);
172+
173+ while (!kthread_should_stop()) {
174+ schedule();
175+
176+ if (kthread_should_stop())
177+ break;
178+
179+ if (uptime_expiration_action == uptime_reboot) {
180+ printk(KERN_CRIT "Uptime: restarting machine\n");
181+ kernel_restart(NULL);
182+ }
183+
184+ set_current_state(TASK_INTERRUPTIBLE);
185+ }
186+ __set_current_state(TASK_RUNNING);
187+
188+ return 0;
189+}
190+
191+static int timeout_enable(int cpu)
192+{
193+ int err = 0;
194+ int warning_limit;
195+
196+ /*
197+ * Create an uptime worker thread. This thread is required since the
198+ * safe version of kernel restart cannot be called from a
199+ * non-interruptible context. Which means we cannot call it directly
200+ * from a timer callback. So we arrange for the timer expiration to
201+ * wakeup a thread, which performs the action.
202+ */
203+ uptime_worker_task = kthread_create(uptime_worker,
204+ (void *)(unsigned long)cpu,
205+ "uptime_worker/%d", cpu);
206+ if (IS_ERR(uptime_worker_task)) {
207+ printk(KERN_ERR "Uptime: task for cpu %i failed\n", cpu);
208+ err = PTR_ERR(uptime_worker_task);
209+ goto out;
210+ }
211+ /* bind to cpu0 to avoid migration and hot plug nastiness */
212+ kthread_bind(uptime_worker_task, cpu);
213+ wake_up_process(uptime_worker_task);
214+
215+ /* Create the timer that will wake the uptime thread at expiration */
216+ init_timer(&timelimit_timer);
217+ timelimit_timer.function = timelimit_expire;
218+ /*
219+ * Fire two timers. One warning timeout and the final timer
220+ * which will carry out the expiration action. The warning timer will
221+ * expire at the minimum of half the original time or ten minutes.
222+ */
223+ warning_limit = MIN(UPTIME_LIMIT_IN_SECONDS/2, TEN_MINUTES_IN_SECONDS);
224+ timelimit_timer.expires = jiffies + warning_limit * HZ;
225+ timelimit_timer.data = UPTIME_LIMIT_IN_SECONDS - warning_limit;
226+
227+ add_timer_on(&timelimit_timer, cpumask_first(cpu_online_mask));
228+out:
229+ return err;
230+}
231+
232+static int __init timelimit_init(void)
233+{
234+ int err = 0;
235+
236+ printk(KERN_INFO "Uptime: system uptime restrictions enabled\n");
237+
238+ /*
239+ * Enable the timeout thread for cpu 0 only, assuming that the
240+ * uptime limit is non-zero, to protect against any cpu
241+ * migration issues.
242+ */
243+ if (UPTIME_LIMIT_IN_SECONDS)
244+ err = timeout_enable(0);
245+
246+ return err;
247+}
248+device_initcall(timelimit_init);
249--
2502.10.1
251
diff --git a/meta-tlk/recipes-kernel/linux/linux-intel_%.bbappend b/meta-tlk/recipes-kernel/linux/linux-intel_%.bbappend
new file mode 100644
index 0000000..47c62ef
--- /dev/null
+++ b/meta-tlk/recipes-kernel/linux/linux-intel_%.bbappend
@@ -0,0 +1,3 @@
1FILESEXTRAPATHS_prepend := "${THISDIR}/files:"
2SRC_URI_append = " file://time-limited-kernel.cfg \
3 file://uptime-allow-the-optional-limiting-of-kernel-runtime.patch"
diff --git a/meta-tlk/recipes-kernel/linux/linux-yocto_%.bbappend b/meta-tlk/recipes-kernel/linux/linux-yocto_%.bbappend
new file mode 100644
index 0000000..3008512
--- /dev/null
+++ b/meta-tlk/recipes-kernel/linux/linux-yocto_%.bbappend
@@ -0,0 +1,2 @@
1FILESEXTRAPATHS_prepend := "${THISDIR}/files:"
2SRC_URI_append = " file://time-limited-kernel.cfg"
diff --git a/wic/core-image-tiny.wks.in b/wic/core-image-tiny.wks.in
new file mode 100644
index 0000000..b0decae
--- /dev/null
+++ b/wic/core-image-tiny.wks.in
@@ -0,0 +1,14 @@
1# short-description: Create an EFI disk image with systemd-boot and corei7-64/core2-32
2# long-description: Creates a partitioned EFI disk image that the user
3# can directly dd to boot media. The selected bootloader is systemd-boot.
4# This disk image is meant to be used by corei7-64/core2-32 and core-image-tiny-initramfs
5
6part /boot --source bootimg-efi --sourceparams="loader=systemd-boot,initrd=core-image-tiny-initramfs-${MACHINE}.cpio.gz" --ondisk sda --label msdos --active --align 1024
7
8bootloader --ptable gpt --timeout=5 --append="init=/bin/busybox sh init console=ttyS0,115200 console=tty0 rw LABEL=boot debugshell=5"
9
10# Some devices require different console parameters, the console parameter can be given repeatedly, input is taken
11# only from the last listed console, for example on the Minnowboard MAX, the previously listed setting would show
12# a login prompt on its video output and not on the serial terminal.
13#
14# See http://www.tldp.org/HOWTO/Remote-Serial-Console-HOWTO/configure-kernel.html
diff --git a/wic/galileodisk-sd.wks b/wic/galileodisk-sd.wks
new file mode 100644
index 0000000..225778d
--- /dev/null
+++ b/wic/galileodisk-sd.wks
@@ -0,0 +1,9 @@
1# short-description: Create a Galileo Gen 1/2 disk image (SD card)
2# long-description: Creates a partitioned EFI disk image for Intel Galileo Gen 1/2
3# boards that the user can directly dd to an SD card and boot.
4
5part /boot --source bootimg-efi --sourceparams="loader=systemd-boot" --ondisk mmcblk0 --label msdos --active --align 1024
6
7part / --source rootfs --ondisk mmcblk0 --fstype=ext3 --label platform --align 1024 --use-uuid
8
9bootloader --timeout=1 --append="rootwait console=ttyS1,115200n8 earlycon=uart8250,mmio32,0x9000b000,115200n8 reboot=efi,warm apic=debug rw LABEL=boot debugshell=5"
diff --git a/wic/galileodisk-usb.wks b/wic/galileodisk-usb.wks
new file mode 100644
index 0000000..b561fa0
--- /dev/null
+++ b/wic/galileodisk-usb.wks
@@ -0,0 +1,9 @@
1# short-description: Create a Galileo Gen 1/2 disk image (USB storage)
2# long-description: Creates a partitioned EFI disk image for Intel Galileo Gen 1/2
3# that the user can directly dd to USB storage media and boot.
4
5part /boot --source bootimg-efi --sourceparams="loader=systemd-boot" --ondisk sda --label msdos --active --align 1024
6
7part / --source rootfs --ondisk sda --fstype=ext3 --label platform --align 1024 --use-uuid
8
9bootloader --timeout=1 --append="rootwait console=ttyS1,115200n8 earlycon=uart8250,mmio32,0x9000b000,115200n8 reboot=efi,warm apic=debug rw LABEL=boot debugshell=5"
diff --git a/wic/generic-bootdisk.wks.in b/wic/generic-bootdisk.wks.in
new file mode 100644
index 0000000..31c708b
--- /dev/null
+++ b/wic/generic-bootdisk.wks.in
@@ -0,0 +1,6 @@
1# based off of refkit's refkit-directdisk.wks.in kickstart template
2# uses the image's boot directory to populate a vfat boot partition,
3# which works with EFI.
4bootloader --ptable gpt
5part /boot --source rootfs --rootfs-dir=${IMAGE_ROOTFS}/boot --fstype=vfat --label msdos --active --align 1024 --use-uuid
6part / --source rootfs --fstype=ext4 --label root --align 1024 --uuid ${DISK_SIGNATURE_UUID}
diff --git a/wic/mktinygalileodisk.wks b/wic/mktinygalileodisk.wks
new file mode 100644
index 0000000..52f1e12
--- /dev/null
+++ b/wic/mktinygalileodisk.wks
@@ -0,0 +1,7 @@
1# short-description: Create an Galileo Gen 1/2 disk image
2# long-description: Creates a partitioned EFI disk image for Intel Galileo Gen 1/2,
3# that the user can directly dd to boot media.
4
5part /boot --source bootimg-efi --sourceparams="loader=systemd-boot,initrd=core-image-tiny-initramfs-intel-quark.cpio.gz" --ondisk mmcblk0 --label msdos --active --align 1024
6
7bootloader --timeout=0 --append="console=ttyS1,115200n8 earlycon=uart8250,mmio32,0x9000b000,115200n8 reboot=efi,warm apic=debug rw LABEL=boot debugshell=5"