summaryrefslogtreecommitdiffstats
path: root/bsp/meta-intel
diff options
context:
space:
mode:
authorToshikazuOhiwa <toshikazu_ohiwa@mail.toyota.co.jp>2020-03-30 09:24:26 +0900
committerToshikazuOhiwa <toshikazu_ohiwa@mail.toyota.co.jp>2020-03-30 09:24:26 +0900
commit5b80bfd7bffd4c20d80b7c70a7130529e9a755dd (patch)
treeb4bb18dcd1487dbf1ea8127e5671b7bb2eded033 /bsp/meta-intel
parent706ad73eb02caf8532deaf5d38995bd258725cb8 (diff)
agl-basesystem
Diffstat (limited to 'bsp/meta-intel')
-rw-r--r--bsp/meta-intel/.gitignore6
-rw-r--r--bsp/meta-intel/CHANGELOG87
-rw-r--r--bsp/meta-intel/COPYING.MIT17
-rw-r--r--bsp/meta-intel/LICENSE5
-rw-r--r--bsp/meta-intel/MAINTAINERS38
-rw-r--r--bsp/meta-intel/README432
-rw-r--r--bsp/meta-intel/README.sources17
-rw-r--r--bsp/meta-intel/classes/uefi-comboapp.bbclass151
-rw-r--r--bsp/meta-intel/classes/uefi-sign.bbclass50
-rw-r--r--bsp/meta-intel/conf/include/maintainers.inc16
-rw-r--r--bsp/meta-intel/conf/layer.conf24
-rw-r--r--bsp/meta-intel/conf/machine/include/intel-common-pkgarch.inc15
-rw-r--r--bsp/meta-intel/conf/machine/include/intel-core2-32-common.inc7
-rw-r--r--bsp/meta-intel/conf/machine/include/intel-corei7-64-common.inc7
-rw-r--r--bsp/meta-intel/conf/machine/include/meta-intel.inc39
-rw-r--r--bsp/meta-intel/conf/machine/include/qemu-intel.inc19
-rw-r--r--bsp/meta-intel/conf/machine/include/qemuboot-intel.inc15
-rw-r--r--bsp/meta-intel/conf/machine/intel-core2-32.conf37
-rw-r--r--bsp/meta-intel/conf/machine/intel-corei7-64.conf41
-rwxr-xr-xbsp/meta-intel/custom-licenses/BSD_LMS30
-rw-r--r--bsp/meta-intel/custom-licenses/Intel-Microcode-License37
-rw-r--r--bsp/meta-intel/documentation/secureboot/README38
-rw-r--r--bsp/meta-intel/lib/oeqa/selftest/cases/secureboot.py176
-rw-r--r--bsp/meta-intel/recipes-bsp/formfactor/formfactor/machconfig39
-rw-r--r--bsp/meta-intel/recipes-bsp/formfactor/formfactor_0.0.bbappend1
-rw-r--r--bsp/meta-intel/recipes-bsp/gma500-gfx-check/gma500-gfx-check/gma500-gfx-check.conf2
-rw-r--r--bsp/meta-intel/recipes-bsp/gma500-gfx-check/gma500-gfx-check/gma500-gfx-check.sh15
-rw-r--r--bsp/meta-intel/recipes-bsp/gma500-gfx-check/gma500-gfx-check_1.0.bb18
-rw-r--r--bsp/meta-intel/recipes-bsp/systemd-boot/systemd-boot/0001-efi-boot.c-workaround-for-Joule-BIOS-hang.patch31
-rw-r--r--bsp/meta-intel/recipes-bsp/systemd-boot/systemd-boot_%.bbappend15
-rw-r--r--bsp/meta-intel/recipes-bsp/thermald/thermald/0001-Use-correct-format-specifier-for-size_t.patch37
-rw-r--r--bsp/meta-intel/recipes-bsp/thermald/thermald_1.8.bb35
-rw-r--r--bsp/meta-intel/recipes-core/images/core-image-minimal-initramfs.bbappend2
-rw-r--r--bsp/meta-intel/recipes-core/images/core-image-tiny.bb36
-rw-r--r--bsp/meta-intel/recipes-core/microcode/intel-microcode_20190514a.bb66
-rw-r--r--bsp/meta-intel/recipes-core/microcode/iucode-tool/0001-Makefile.am-Add-arg-parse-library-for-MUSL-support.patch29
-rw-r--r--bsp/meta-intel/recipes-core/microcode/iucode-tool_2.3.1.bb33
-rw-r--r--bsp/meta-intel/recipes-core/ovmf/files/0001-ovmf-RefkitTestCA-TEST-UEFI-SecureBoot.patch105
-rw-r--r--bsp/meta-intel/recipes-core/ovmf/ovmf-shell-image-enrollkeys.bb13
-rw-r--r--bsp/meta-intel/recipes-core/ovmf/ovmf_%.bbappend6
-rw-r--r--bsp/meta-intel/recipes-graphics/igt-gpu-tools/igt-gpu-tools_1.23.bb42
-rw-r--r--bsp/meta-intel/recipes-graphics/xorg-driver/xf86-video-ast_1.1.5.bb12
-rw-r--r--bsp/meta-intel/recipes-kernel/cryptodev/cryptodev-module/0001-zc-Force-4.10-get_user_pages_remote-API.patch26
-rw-r--r--bsp/meta-intel/recipes-kernel/cryptodev/cryptodev-module_%.bbappend9
-rw-r--r--bsp/meta-intel/recipes-kernel/intel-ethernet/ixgbe/0001-ixgbe-skip-host-depmod.patch31
-rw-r--r--bsp/meta-intel/recipes-kernel/intel-ethernet/ixgbe_5.5.2.bb37
-rw-r--r--bsp/meta-intel/recipes-kernel/intel-ethernet/ixgbevf/0001-Makefile-check-for-CONFIG_IXGBEVF-instead.patch27
-rw-r--r--bsp/meta-intel/recipes-kernel/intel-ethernet/ixgbevf/0001-ixgbevf-skip-host-depmod.patch31
-rw-r--r--bsp/meta-intel/recipes-kernel/intel-ethernet/ixgbevf_4.3.6.bb41
-rw-r--r--bsp/meta-intel/recipes-kernel/iwlwifi/backport-iwlwifi/0001-Makefile.real-skip-host-install-scripts.patch36
-rw-r--r--bsp/meta-intel/recipes-kernel/iwlwifi/backport-iwlwifi/0001-hrtimer-fix-version-numbers-because-production-kerne.patch87
-rw-r--r--bsp/meta-intel/recipes-kernel/iwlwifi/backport-iwlwifi/iwlwifi.conf12
-rw-r--r--bsp/meta-intel/recipes-kernel/iwlwifi/backport-iwlwifi_git.bb56
-rw-r--r--bsp/meta-intel/recipes-kernel/linux/linux-intel-rt_4.14.bb24
-rw-r--r--bsp/meta-intel/recipes-kernel/linux/linux-intel-rt_4.19.bb24
-rw-r--r--bsp/meta-intel/recipes-kernel/linux/linux-intel-rt_4.9.bb20
-rw-r--r--bsp/meta-intel/recipes-kernel/linux/linux-intel.inc25
-rw-r--r--bsp/meta-intel/recipes-kernel/linux/linux-intel/0001-menuconfig-check-lxdiaglog.sh-Allow-specification-of.patch62
-rw-r--r--bsp/meta-intel/recipes-kernel/linux/linux-intel/0001-menuconfig-mconf-cfg-Allow-specification-of-ncurses-.patch48
-rw-r--r--bsp/meta-intel/recipes-kernel/linux/linux-intel/0001-perf-x86-32-explicitly-include-errno.h.patch41
-rw-r--r--bsp/meta-intel/recipes-kernel/linux/linux-intel/disable_skylake_sound.cfg12
-rw-r--r--bsp/meta-intel/recipes-kernel/linux/linux-intel_4.14.bb22
-rw-r--r--bsp/meta-intel/recipes-kernel/linux/linux-intel_4.19.bb21
-rw-r--r--bsp/meta-intel/recipes-kernel/linux/linux-intel_4.9.bb20
-rw-r--r--bsp/meta-intel/recipes-kernel/linux/linux-yocto-dev.bbappend21
-rw-r--r--bsp/meta-intel/recipes-kernel/linux/linux-yocto-rt_4.14.bbappend1
-rw-r--r--bsp/meta-intel/recipes-kernel/linux/linux-yocto-rt_4.18.bbappend1
-rw-r--r--bsp/meta-intel/recipes-kernel/linux/linux-yocto_%.bbappend4
-rw-r--r--bsp/meta-intel/recipes-kernel/linux/linux-yocto_4.14.bbappend1
-rw-r--r--bsp/meta-intel/recipes-kernel/linux/linux-yocto_4.18.bbappend1
-rw-r--r--bsp/meta-intel/recipes-kernel/linux/meta-intel-compat-kernel.inc13
-rw-r--r--bsp/meta-intel/recipes-kernel/lttng/lttng-modules/0002-lttng-modules-PKT-4.9-yocto-build-failed.patch38
-rw-r--r--bsp/meta-intel/recipes-kernel/lttng/lttng-modules_%.bbappend7
-rw-r--r--bsp/meta-intel/recipes-multimedia/libva/intel-vaapi-driver_2.2.0.bb33
-rw-r--r--bsp/meta-intel/recipes-multimedia/libyami/libyami-utils/0001-Fix-build-with-clang.patch96
-rw-r--r--bsp/meta-intel/recipes-multimedia/libyami/libyami-utils_1.3.1.bb26
-rw-r--r--bsp/meta-intel/recipes-multimedia/libyami/libyami/0001-bitWriter.cpp-Delete-unused-CACHEBYTES.patch27
-rw-r--r--bsp/meta-intel/recipes-multimedia/libyami/libyami/0002-typecast-index-from-size_t-to-int.patch42
-rw-r--r--bsp/meta-intel/recipes-multimedia/libyami/libyami/0003-Add-Wno-invalid-offsetof-to-compiler-commandline.patch29
-rw-r--r--bsp/meta-intel/recipes-multimedia/libyami/libyami/0004-Typecast-POWER32SUB2-to-uint8_t.patch33
-rw-r--r--bsp/meta-intel/recipes-multimedia/libyami/libyami/0006-Avoid-namespace-conflicts-by-adding-explicit-using-n.patch41
-rw-r--r--bsp/meta-intel/recipes-multimedia/libyami/libyami/0007-Delete-unused-variables.patch36
-rw-r--r--bsp/meta-intel/recipes-multimedia/libyami/libyami/0008-NalUnit-is-declared-in-different-namespace.patch31
-rw-r--r--bsp/meta-intel/recipes-multimedia/libyami/libyami/0009-Fix-clang-warnings.patch37
-rw-r--r--bsp/meta-intel/recipes-multimedia/libyami/libyami_1.3.1.bb30
-rw-r--r--bsp/meta-intel/recipes-rt/images/core-image-rt-sdk.bb20
-rw-r--r--bsp/meta-intel/recipes-rt/images/core-image-rt.bb17
-rw-r--r--bsp/meta-intel/recipes-selftest/images/files/incorrect.crt19
-rw-r--r--bsp/meta-intel/recipes-selftest/images/files/incorrect.key27
-rw-r--r--bsp/meta-intel/recipes-selftest/images/files/refkit-db.crt18
-rw-r--r--bsp/meta-intel/recipes-selftest/images/files/refkit-db.key28
-rw-r--r--bsp/meta-intel/recipes-selftest/images/secureboot-selftest-image-signed.bb6
-rw-r--r--bsp/meta-intel/recipes-selftest/images/secureboot-selftest-image-unsigned.bb20
-rw-r--r--bsp/meta-intel/recipes-support/sbsigntool/sbsigntool-native_git.bb77
-rw-r--r--bsp/meta-intel/wic/core-image-tiny.wks.in14
-rw-r--r--bsp/meta-intel/wic/generic-bootdisk.wks.in6
-rw-r--r--bsp/meta-intel/wic/grub-bootdisk-microcode.wks12
-rw-r--r--bsp/meta-intel/wic/systemd-bootdisk-microcode.wks13
98 files changed, 3378 insertions, 0 deletions
diff --git a/bsp/meta-intel/.gitignore b/bsp/meta-intel/.gitignore
new file mode 100644
index 00000000..ae174429
--- /dev/null
+++ b/bsp/meta-intel/.gitignore
@@ -0,0 +1,6 @@
+*.pyc
+*.pyo
+*.swp
+*.orig
+*.rej
+*~
diff --git a/bsp/meta-intel/CHANGELOG b/bsp/meta-intel/CHANGELOG
new file mode 100644
index 00000000..a99cbb1f
--- /dev/null
+++ b/bsp/meta-intel/CHANGELOG
@@ -0,0 +1,87 @@
+This file will only list major changes that occur within a release.
+For a full list of changes, view the git log of the repository.
+
+Rocko Release 11/2017
+=====================
+
+Moved qat support to separate layer
+-----------------------------------
+Quick Assist Technology (QAT) is more middleware and should not be part of the
+core BSP. The new layer can be found here:
+https://git.yoctoproject.org/cgit/cgit.cgi/meta-intel-qat/
+
+Moved dpdk support to separate layer
+------------------------------------
+We had some requests to make DPDK standalone so that it could be included
+without bringing in anything else from meta-intel, as it is not specific to
+Intel(R) hardware. The new layer is located here:
+https://git.yoctoproject.org/cgit/cgit.cgi/meta-dpdk/
+
+Added support for out-of-tree iwlwifi drivers
+---------------------------------------------
+Backport-iwlwifi out-of-tree wifi modules are now available via meta-intel.
+Backport-iwlwifi brings the latest iwlwifi drivers to almost any kernel
+Note that mac80211 and cfg80211 backports are also necessary, which will most
+likely cause incompatibility with other in-tree wifi drivers.
+See https://wireless.wiki.kernel.org/en/users/drivers/iwlwifi for more info.
+
+Added support for out-of-tree ixgbe drivers
+-------------------------------------------
+The out-of-tree ixgbe drivers bring ixgbe support to nearly any kernel. See
+here: http://www.intel.com/network/connectivity/products/server_adapters.htm
+
+Added an implementation of Secure Boot
+--------------------------------------
+meta-intel now supports a simple Secure Boot implementation. This implementation
+consists of a single binary consisting of an EFI stub, the kernel, an
+initrd, and a kernel command line. The binary is then signed via keys defined by
+the variables SECUREBOOT_SIGNING_KEY and SECUREBOOT_SIGNING_CERT. These keys
+should match the keys embedded in your hardware's firmware.
+See documentation/secureboot/README for more information on this feature.
+
+Improved Yocto Project Compatibility status
+-------------------------------------------
+The common layer should now be considered Yocto Project compatible - it should
+no longer modify OE-core values when adding the layer to your bblayers.conf.
+The meta-tlk layer is still not Yocto Project compatible, however.
+
+Pyro Release 5/2017
+===================
+
+Changed default kernel provider from linux-yocto to linux-intel.
+----------------------------------------------------------------
+Linux-intel is an Intel(R)-maintained kernel based on the latest stable
+branch, along with backports from upstream to better support Intel(R)
+hardware. The intel-linux kernel also has a branch with the preempt-rt
+patches applied, providing a preempt-rt kernel with no additional work.
+
+Added QEMU support.
+-------------------
+We now build several virtio drivers into the kernel by default, and
+have qemuboot.conf files for intel-corei7-64 and intel-core2-32
+targets. This allows one to do basic testing on meta-intel images
+without having to use hardware. The virtio drivers are added via
+KERNEL_FEATURES_INTEL_COMMON. This prevents them from being added to
+custom kernels by default. They can be removed by adding the
+following to a conf or kernel bbappend file:
+ KERNEL_FEATURES_INTEL_COMMON_remove = “cfg/virtio.sccâ€
+OVMF firmware is also built and can be used in order to emulate a UEFI
+environment. A full runqemu command line for intel-corei7-64 could look
+like this:
+ runqemu core-image-minimal intel-corei7-64 wic ovmf
+
+Musl support
+------------
+Meta-intel is now compatible with the musl C library. You can specify musl
+As your C library by adding the following to your local.conf:
+ TCLIBC = “muslâ€
+Note: there is a known failure with DPDK.
+
+X32 support
+-----------
+The meta-intel layer can now build with the x32 tune settings in a multi-lib
+setting, it will not work in as the primary MACHINE tune as the bootloader needs
+to be built as a 64bit binary. The setup for this would be as follows:
+ require conf/multilib.conf
+ MULTILIBS = "multilib:libx32
+ DEFAULTTUNE_virtclass-multilib-libx32 = "corei7-64-x32"
diff --git a/bsp/meta-intel/COPYING.MIT b/bsp/meta-intel/COPYING.MIT
new file mode 100644
index 00000000..fb950dc6
--- /dev/null
+++ b/bsp/meta-intel/COPYING.MIT
@@ -0,0 +1,17 @@
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
diff --git a/bsp/meta-intel/LICENSE b/bsp/meta-intel/LICENSE
new file mode 100644
index 00000000..e57d3b90
--- /dev/null
+++ b/bsp/meta-intel/LICENSE
@@ -0,0 +1,5 @@
+All metadata files (including, but not limited to bb, bbappend,
+bbclass, inc and conf files) are MIT licensed unless otherwise stated.
+Source code included in tree for individual recipes is under the
+LICENSE stated in the associated recipe (.bb file) unless otherwise
+stated.
diff --git a/bsp/meta-intel/MAINTAINERS b/bsp/meta-intel/MAINTAINERS
new file mode 100644
index 00000000..880481e8
--- /dev/null
+++ b/bsp/meta-intel/MAINTAINERS
@@ -0,0 +1,38 @@
+This file contains a list of BSP maintainers for the BSPs contained in
+the meta-intel repository.
+
+The purpose of this file is to provide contact information for
+specific BSPs and other code contained within meta-intel. You should
+address questions and patches for a particular BSP or other code to
+the appropriate maintainer listed in this file, cc'ing the meta-intel
+mailing list. This ensures that your question or patch will be
+addressed by the appropriate person, and that it will be seen by other
+users who may be facing similar problems or questions.
+
+Please see the top-level README file for guidelines relating to the
+details of submitting patches, reporting problems, or asking questions
+about any of the BSPs or other recipes contained within meta-intel.
+
+Descriptions of section entries:
+
+ M: Mail patches to: FullName <address@domain>
+ F: Files and directories with wildcard patterns.
+ A trailing slash includes all files and subdirectory files.
+ F: common/ all files in and below common
+ F: common/* all files in common, but not below
+ One pattern per line. Multiple F: lines acceptable.
+
+Please keep this list in alphabetical order.
+
+Maintainers List (try to look for most precise areas first)
+
+ -----------------------------------
+
+M: California Sullivan <california.l.sullivan@intel.com>
+F: *
+
+M: Juro Bystricky <juro.bystricky@intel.com>
+F: *
+
+M: Anuj Mittal <anuj.mittal@intel.com>
+F: *
diff --git a/bsp/meta-intel/README b/bsp/meta-intel/README
new file mode 100644
index 00000000..24d6a682
--- /dev/null
+++ b/bsp/meta-intel/README
@@ -0,0 +1,432 @@
+meta-intel
+==========
+
+This README file contains information on building and booting
+meta-intel BSP layers. Please see the corresponding sections below
+for details.
+
+
+Yocto Project Compatible
+========================
+
+The BSPs contained in this layer are compatible with the Yocto Project
+as per the requirements listed here:
+
+ https://www.yoctoproject.org/webform/yocto-project-compatible-registration
+
+
+Dependencies
+============
+
+This layer depends on:
+
+ URI: git://git.openembedded.org/bitbake
+ branch: 1.40
+
+ URI: git://git.openembedded.org/openembedded-core
+ layers: meta
+ branch: thud
+
+
+Table of Contents
+=================
+
+ I. Overview
+ II. Building and booting meta-intel BSP layers
+ a. Building the intel-common BSP layers
+ b. Booting the intel-common BSP images
+ III. Technical Miscellany
+ Benefits of using meta-intel
+ The intel-common kernel package architecture
+ Intel-specific machine features
+ IV. Tested Hardware
+ V. Guidelines for submitting patches
+
+
+I. Overview
+===========
+
+This is the location for Intel-maintained BSPs.
+
+For details on the intel-common, see the information below.
+
+For all others, please see the README files contained in the
+individual BSP layers for BSP-specific information.
+
+If you have problems with or questions about a particular BSP, please
+contact the maintainer listed in the MAINTAINERS file directly (cc:ing
+the Yocto mailing list puts it in the archive and helps other people
+who might have the same questions in the future), but please try to do
+the following first:
+
+ - look in the Yocto Project Bugzilla
+ (http://bugzilla.yoctoproject.org/) to see if a problem has
+ already been reported
+
+ - look through recent entries of the meta-intel
+ (https://lists.yoctoproject.org/pipermail/meta-intel/) and Yocto
+ (https://lists.yoctoproject.org/pipermail/yocto/) mailing list
+ archives to see if other people have run into similar problems or
+ had similar questions answered.
+
+If you believe you have encountered a bug, you can open a new bug and
+enter the details in the Yocto Project Bugzilla
+(http://bugzilla.yoctoproject.org/). If you're relatively certain
+that it's a bug against the BSP itself, please use the 'Yocto Project
+Components: BSPs | meta-intel' category for the bug; otherwise, please
+submit the bug against the most likely category for the problem - if
+you're wrong, it's not a big deal and the bug will be recategorized
+upon triage.
+
+
+II. Building and booting meta-intel BSP layers
+==============================================
+
+The following sections contain information on building and booting the
+BSPs contained in the meta-intel layer.
+
+Note that these instructions specifically cover the intel-common, which
+may or may not be applicable to other BSPs contained in this layer - if
+a given BSP contains its own README, that version should be used instead,
+and these instructions can be ignored.
+
+a. Building the intel-common BSP layers
+-------------------------------------------------
+
+In order to build an image with BSP support for a given release, you
+need to download the corresponding BSP tarball from the 'Board Support
+Package (BSP) Downloads' page of the Yocto Project website (or
+equivalently, check out the appropriate branch from the meta-intel git
+repository, see below). For the intel-common BSPs, those tarballs would
+correspond to the following choices in the BSP downloads section:
+
+ - Intel-core2-32 Intel® Common Core BSP (Intel-core2-32)
+ - Intel-corei7-64 Intel® Common Core BSP (Intel-corei7-64)
+
+The intel-* BSPs, also known as the intel-common BSPs, provide a few
+carefully selected tune options and generic hardware support to cover
+the majority of current Intel CPUs and devices. The naming follows the
+convention of intel-<TUNE>-<BITS>, where TUNE is the gcc cpu-type
+(used with mtune and march typically) and BITS is either 32 bit or 64
+bit.
+
+Having done that, and assuming you extracted the BSP tarball contents
+at the top-level of your yocto build tree, you can build a BSP image
+by adding the location of the meta-intel layer to bblayers.conf e.g.:
+
+ yocto/meta-intel \
+
+To enable a particular machine, you need to add a MACHINE line naming
+the BSP to the local.conf file:
+
+ MACHINE ?= "xxx"
+
+where 'xxx' is replaced by one of the following BSP names:
+
+ - intel-core2-32
+
+ This BSP is optimized for the Core2 family of CPUs as well as all
+ Atom CPUs prior to the Silvermont core.
+
+ - intel-corei7-64
+
+ This BSP is optimized for Nehalem and later Core and Xeon CPUs as
+ well as Silvermont and later Atom CPUs, such as the Baytrail SoCs.
+
+You should then be able to build an image as such:
+
+ $ source oe-init-build-env
+ $ bitbake core-image-sato
+
+At the end of a successful build, you should have an image that
+you can boot from a USB flash drive (see instructions on how to do
+that below, in the section 'Booting the intel-common BSP images').
+
+As an alternative to downloading the BSP tarball, you can also work
+directly from the meta-intel git repository. For each BSP in the
+'meta-intel' repository, there are multiple branches, one
+corresponding to each major release starting with 'laverne' (0.90), in
+addition to the latest code which tracks the current master (note that
+not all BSPs are present in every release). Instead of extracting
+a BSP tarball at the top level of your yocto build tree, you can
+equivalently check out the appropriate branch from the meta-intel
+repository at the same location.
+
+b. Booting the intel-common BSP images
+--------------------------------------
+
+If you've built your own image, either from the downloaded BSP layer
+or from the meta-intel git repository, you'll find the bootable
+image in the build/tmp/deploy/images/xxx directory, where again
+'xxx' refers to the machine name used in the build.
+
+Under Linux, insert a USB flash drive. Assuming the USB flash drive
+takes device /dev/sdf, use dd to copy the image to it. Before the image
+can be burned onto a USB drive, it should be un-mounted. Some Linux distros
+may automatically mount a USB drive when it is plugged in. Using USB device
+/dev/sdf as an example, find all mounted partitions:
+
+ $ mount | grep sdf
+
+and un-mount those that are mounted, for example:
+
+ $ umount /dev/sdf1
+ $ umount /dev/sdf2
+
+Now burn the image onto the USB drive:
+
+ $ sudo dd if=core-image-sato-intel-corei7-64.wic of=/dev/sdf status=progress
+ $ sync
+ $ eject /dev/sdf
+
+This should give you a bootable USB flash device. Insert the device
+into a bootable USB socket on the target, and power on. This should
+result in a system booted to the Sato graphical desktop.
+
+If you want a terminal, use the arrows at the top of the UI to move to
+different pages of available applications, one of which is named
+'Terminal'. Clicking that should give you a root terminal.
+
+If you want to ssh into the system, you can use the root terminal to
+ifconfig the IP address and use that to ssh in. The root password is
+empty, so to log in type 'root' for the user name and hit 'Enter' at
+the Password prompt: and you should be in.
+
+If you find you're getting corrupt images on the USB (it doesn't show
+the syslinux boot: prompt, or the boot: prompt contains strange
+characters), try doing this first:
+
+ $ dd if=/dev/zero of=/dev/sdf bs=1M count=512
+
+III. Technical Miscellany
+=========================
+
+Benefits of using meta-intel
+----------------------------
+
+Using meta-intel has the following benefits over a generic BSP:
+
+tune flags
+++++++++++
+intel-* MACHINEs each have different compilation flags appropriate for their
+targeted hardware sets. intel-corei7-64 has tune flags appropriate for modern
+64-bit Intel Core i microarchitecture, and includes instruction sets up to
+SSE4.2. intel-core2-32 has tune flags appropriate for legacy 32-bit Intel Core2
+microarchitecture, and includes instruction sets up to SSE3.
+
+linux-intel kernel
+++++++++++++++++++
+The linux-intel kernel is an initiative to bring better Intel(R) hardware
+support to the current LTS linux kernel. It contains a base LTS kernel with
+additional backports from upstream Intel drivers. In addition, a default kernel
+config containing most features found on Intel boards is supplied via the
+yocto-kernel-cache.
+
+graphics stack
+++++++++++++++
+Meta-intel provides the latest Intel Graphics Linux Stack drivers to support
+Intel hardware as defined by the https://01.org/linuxgraphics.
+
+Other software
+++++++++++++++
+ * intel ucode - provides the latest microcode updates for Intel processors
+
+ * thermald - which proactively controls thermal, using P-states, T-states, and
+the Intel power clamp driver.
+(https://01.org/linux-thermal-daemon/documentation/introduction-thermal-daemon)
+
+The intel-common kernel package architecture
+--------------------------------------------
+
+These BSPs use what we call the intel-common Linux kernel package
+architecture. This includes core2-32-intel-common and
+corei7-64-intel-common. These kernel packages can also be used by any
+of the BSPs in meta-intel that choose to include the
+intel-common-pkgarch.inc file.
+
+To minimize the proliferation of vendor trees, reduce the sources we
+must support, and consolidate QA efforts, all BSP maintainers are
+encouraged to make use of the intel-common Linux kernel package
+architecture.
+
+Intel-specific machine features
+-------------------------------
+
+The meta-intel layer makes some additional machine features available
+to BSPs. These machine features can be used in a BSP layer in the
+same way that machine features are used in other layers based on
+oe-core, via the MACHINE_FEATURES variable.
+
+Requirements
+++++++++++++
+
+The meta-intel-specific machine features are only available to a BSP
+when the meta-intel layer is included in the build configuration, and
+the meta-intel.inc file is included in the machine configuration of
+that BSP.
+
+To make these features available for your machine, you will need to:
+
+ 1. include a configuration line such as the below in bblayers.conf
+ BBLAYERS += "<local path>/meta-intel"
+ 2. include the following line in the machine configuration file
+ require conf/machine/include/meta-intel.inc
+
+Once the above requirements are met, the machine features provided by
+the meta-intel layer will be available for the BSP to use.
+
+Available machine features
+++++++++++++++++++++++++++
+
+Currently, the meta-intel layer makes the following set of
+Intel-specific machine features available:
+
+ * intel-ucode
+
+These machine features can be included by listing them in the
+MACHINE_FEATURES variable in the machine configuration file. For
+example:
+
+ MACHINE_FEATURES += "intel-ucode"
+
+Machine feature details
++++++++++++++++++++++++
+
+ * intel-ucode
+
+ This feature provides support for microcode updates to Intel
+ processors. The intel-ucode feature runs at early boot and uses
+ the microcode data file added by the feature into the BSP's
+ initrd. It also puts the userland microcode-updating tool,
+ iucode_tool, into the target images along with the microcode data
+ file.
+
+ Q. Why might a user want to enable the intel-ucode feature?
+
+ A. Intel releases microcode updates to correct processor behavior
+ as documented in the respective processor specification
+ updates. While the normal approach to getting such microcode
+ updates is via a BIOS upgrade, this can be an administrative
+ hassle and not always possible in the field. The intel-ucode
+ feature enables the microcode update capability present in the
+ Linux kernel. It provides an easy path for upgrading processor
+ microcode without the need to change the BIOS. If the feature
+ is enabled, it is also possible to update the existing target
+ images with a newer microcode update in the future.
+
+ Q. How would a user bundle only target-specific microcode in the
+ target image?
+
+ A. The Intel microcode data file released by Intel contains
+ microcode updates for multiple processors. If the BSP image is
+ meant to run on only a certain subset of processor types, a
+ processor-specific subset of microcode can be bundled into the
+ target image via the UCODE_FILTER_PARAMETERS variable. This
+ works by listing a sequence of iucode-tool parameters in the
+ UCODE_FILTER_PARAMETERS variable, which in this case will
+ select only the specific microcode relevant to the BSP. For
+ more information on the underlying parameters refer to the
+ iucode-tool manual page at http://manned.org/iucode-tool
+
+ To define a set of parameters for microcode-filtering via the
+ UCODE_FILTER_PARAMETERS variable, one needs to identify the
+ cpuid signatures of all the processors the BSP is meant to run
+ on. One way to determine the cpuid signature for a specific
+ processor is to build and run an intel-ucode-feature-enabled
+ image on the target hardware, without first assigning any value
+ to the UCODE_FILTER_PARAMETERS variable, and then once the
+ image is booted, run the "ucode_tool -S" command to have the
+ ucode tool scan the system for processor signatures. These
+ signatures can then be used in the UCODE_FILTER_PARAMETERS
+ variable in conjunction with -s parameter. For example, for
+ the fri2 BSP, the cpuid can be determined as such:
+
+ [root@fri2 ~]# iucode_tool -S
+ iucode_tool: system has processor(s) with signature 0x00020661
+
+ Given that output, a suitable UCODE_FILTER_PARAMETERS variable
+ definition could be specified in the machine configuration as
+ such:
+
+ UCODE_FILTER_PARAMETERS = "-s 0x00020661"
+
+ Q. Are there any reasons a user might want to disable the
+ intel-ucode feature?
+
+ A. The microcode data file and associated tools occupy a small
+ amount of space (a few KB) on the target image. BSPs which are
+ highly sensitive to target image size and which are not
+ experiencing microcode-related issues might consider not
+ enabling this feature.
+
+
+IV. Tested Hardware
+===================
+
+The following undergo regular basic testing with their respective MACHINE types.
+Note that both 64-bit and 32-bit firmware is available for the MinnowBoard
+Turbot, so it is tested against both intel-corei7-64 and intel-core2-32.
+
+intel-corei7-64:
+ NUC6i5SYH
+ MinnowBoard Turbot
+
+intel-core2-32:
+ MinnowBoard Turbot
+
+
+V. Guidelines for submitting patches
+====================================
+
+Please submit any patches against meta-intel BSPs to the meta-intel
+mailing list (meta-intel@yoctoproject.org). Also, if your patches are
+available via a public git repository, please also include a URL to
+the repo and branch containing your patches as that makes it easier
+for maintainers to grab and test your patches.
+
+There are patch submission scripts available that will, among other
+things, automatically include the repo URL and branch as mentioned.
+Please see the Yocto Project Development Manual sections entitled
+'Using Scripts to Push a Change Upstream and Request a Pull' and
+'Using Email to Submit a Patch' for details.
+
+Regardless of how you submit a patch or patchset, the patches should
+at minimum follow the suggestions outlined in the 'Submitting a Change
+to the Yocto Project' section in the Yocto Project Development Manual.
+Specifically, they should:
+
+ - Include a 'Signed-off-by:' line. A commit can't legally be pulled
+ in without this.
+
+ - Provide a single-line, short summary of the change. This short
+ description should be prefixed by the BSP or recipe name, as
+ appropriate, followed by a colon. Capitalize the first character
+ of the summary (following the colon).
+
+ - For the body of the commit message, provide detailed information
+ that describes what you changed, why you made the change, and the
+ approach you used.
+
+ - If the change addresses a specific bug or issue that is associated
+ with a bug-tracking ID, include a reference to that ID in your
+ detailed description in the following format: [YOCTO #<bug-id>].
+
+ - Pay attention to line length - please don't allow any particular
+ line in the commit message to stretch past 72 characters.
+
+ - For any non-trivial patch, provide information about how you
+ tested the patch, and for any non-trivial or non-obvious testing
+ setup, provide details of that setup.
+
+Doing a quick 'git log' in meta-intel will provide you with many
+examples of good example commits if you have questions about any
+aspect of the preferred format.
+
+The meta-intel maintainers will do their best to review and/or pull in
+a patch or patchset within 24 hours of the time it was posted. For
+larger and/or more involved patches and patchsets, the review process
+may take longer.
+
+Please see the meta-intel/MAINTAINERS file for the list of maintainers
+and their specific areas; it's also a good idea to cc: the specific
+maintainer, if applicable.
diff --git a/bsp/meta-intel/README.sources b/bsp/meta-intel/README.sources
new file mode 100644
index 00000000..1ef5e4e0
--- /dev/null
+++ b/bsp/meta-intel/README.sources
@@ -0,0 +1,17 @@
+The sources for the packages comprising the images shipped with this
+BSP can be found at the following location:
+
+http://downloads.yoctoproject.org/mirror/sources/
+
+The metadata used to generate the images shipped with this BSP, in
+addition to the code contained in this BSP, can be found at the
+following location:
+
+http://downloads.yoctoproject.org/releases/yocto/yocto-2.6.1/poky-thud-20.0.1.tar.bz2
+
+The metadata used to generate the images shipped with this BSP, in
+addition to the code contained in this BSP, can also be found at the
+following locations:
+
+git://git.yoctoproject.org/poky.git
+git://git.yoctoproject.org/meta-intel
diff --git a/bsp/meta-intel/classes/uefi-comboapp.bbclass b/bsp/meta-intel/classes/uefi-comboapp.bbclass
new file mode 100644
index 00000000..4ecc5535
--- /dev/null
+++ b/bsp/meta-intel/classes/uefi-comboapp.bbclass
@@ -0,0 +1,151 @@
+# This class brings a more generic version of the UEFI combo app from refkit to meta-intel.
+# It uses a combo file, containing kernel, initramfs and
+# command line, presented to the BIOS as UEFI application, by prepending
+# it with the efi stub obtained from systemd-boot.
+
+# Don't add syslinux or build an ISO
+PCBIOS_forcevariable = "0"
+NOISO_forcevariable = "1"
+
+# image-live.bbclass will default INITRD_LIVE to the image INITRD_IMAGE creates.
+# We want behavior to be consistent whether or not "live" is in IMAGE_FSTYPES, so
+# we default INITRD_LIVE to the INITRD_IMAGE as well.
+INITRD_IMAGE ?= "core-image-minimal-initramfs"
+INITRD_LIVE ?= " ${@ ('${DEPLOY_DIR_IMAGE}/' + d.getVar('INITRD_IMAGE', expand=True) + '-${MACHINE}.cpio.gz') if d.getVar('INITRD_IMAGE', True) else ''}"
+
+do_uefiapp[depends] += " \
+ intel-microcode:do_deploy \
+ systemd-boot:do_deploy \
+ virtual/kernel:do_deploy \
+ "
+
+# INITRD_IMAGE is added to INITRD_LIVE, which we use to create our initrd, so depend on it if it is set
+do_uefiapp[depends] += "${@ '${INITRD_IMAGE}:do_image_complete' if d.getVar('INITRD_IMAGE') else ''}"
+
+# The image does without traditional bootloader.
+# In its place, instead, it uses a single UEFI executable binary, which is
+# composed by:
+# - an UEFI stub
+# The linux kernel can generate a UEFI stub, however the one from systemd-boot can fetch
+# the command line from a separate section of the EFI application, avoiding the need to
+# rebuild the kernel.
+# - the kernel
+# - an initramfs (optional)
+
+def create_uefiapp(d, uuid=None, app_suffix=''):
+ import glob, re
+ from subprocess import check_call
+
+ build_dir = d.getVar('B')
+ deploy_dir_image = d.getVar('DEPLOY_DIR_IMAGE')
+ image_link_name = d.getVar('IMAGE_LINK_NAME')
+
+ cmdline = '%s/cmdline.txt' % build_dir
+ linux = '%s/%s' % (deploy_dir_image, d.getVar('KERNEL_IMAGETYPE'))
+ initrd = '%s/initrd' % build_dir
+
+ stub_path = '%s/linux*.efi.stub' % deploy_dir_image
+ stub = glob.glob(stub_path)[0]
+ m = re.match(r"\S*(ia32|x64)(.efi)\S*", os.path.basename(stub))
+ app = "boot%s%s%s" % (m.group(1), app_suffix, m.group(2))
+ executable = '%s/%s.%s' % (deploy_dir_image, image_link_name, app)
+
+ if d.getVar('INITRD_LIVE'):
+ with open(initrd, 'wb') as dst:
+ for cpio in d.getVar('INITRD_LIVE').split():
+ with open(cpio, 'rb') as src:
+ dst.write(src.read())
+ initrd_cmd = "--add-section .initrd=%s --change-section-vma .initrd=0x3000000 " % initrd
+ else:
+ initrd_cmd = ""
+
+ root = 'root=PARTUUID=%s' % uuid if uuid else ''
+
+ with open(cmdline, 'w') as f:
+ f.write('%s %s' % (d.getVar('APPEND'), root))
+
+ objcopy_cmd = ("objcopy "
+ "--add-section .cmdline=%s --change-section-vma .cmdline=0x30000 "
+ "--add-section .linux=%s --change-section-vma .linux=0x40000 "
+ "%s %s %s") % \
+ (cmdline, linux, initrd_cmd, stub, executable)
+
+ check_call(objcopy_cmd, shell=True)
+
+python create_uefiapps () {
+ # We must clean up anything that matches the expected output pattern, to ensure that
+ # the next steps do not accidentally use old files.
+ import glob
+ pattern = d.expand('${DEPLOY_DIR_IMAGE}/${IMAGE_LINK_NAME}.boot*.efi')
+ for old_efi in glob.glob(pattern):
+ os.unlink(old_efi)
+ uuid = d.getVar('DISK_SIGNATURE_UUID')
+ create_uefiapp(d, uuid=uuid)
+}
+
+# This is intentionally split into different parts. This way, derived
+# classes or images can extend the individual parts. We can also use
+# whatever language (shell script or Python) is more suitable.
+python do_uefiapp() {
+ bb.build.exec_func('create_uefiapps', d)
+}
+
+do_uefiapp[vardeps] += "APPEND DISK_SIGNATURE_UUID INITRD_LIVE KERNEL_IMAGETYPE IMAGE_LINK_NAME"
+
+uefiapp_deploy_at() {
+ dest=$1
+ for i in ${DEPLOY_DIR_IMAGE}/${IMAGE_LINK_NAME}.boot*.efi; do
+ target=`basename $i`
+ target=`echo $target | sed -e 's/${IMAGE_LINK_NAME}.//'`
+ cp --preserve=timestamps -r $i $dest/$target
+ done
+}
+
+fakeroot do_uefiapp_deploy() {
+ rm -rf ${IMAGE_ROOTFS}/boot/*
+ dest=${IMAGE_ROOTFS}/boot/EFI/BOOT
+ mkdir -p $dest
+ uefiapp_deploy_at $dest
+}
+
+do_uefiapp_deploy[depends] += "${PN}:do_uefiapp virtual/fakeroot-native:do_populate_sysroot"
+
+
+# This decides when/how we add our tasks to the image
+python () {
+ image_fstypes = d.getVar('IMAGE_FSTYPES', True)
+ initramfs_fstypes = d.getVar('INITRAMFS_FSTYPES', True)
+
+ # Don't add any of these tasks to initramfs images
+ if initramfs_fstypes not in image_fstypes:
+ bb.build.addtask('uefiapp', 'do_image', 'do_rootfs', d)
+ bb.build.addtask('uefiapp_deploy', 'do_image', 'do_rootfs', d)
+}
+
+SIGN_AFTER ?= "do_uefiapp"
+SIGN_BEFORE ?= "do_uefiapp_deploy"
+SIGNING_DIR ?= "${DEPLOY_DIR_IMAGE}"
+SIGNING_BINARIES ?= "${IMAGE_LINK_NAME}.boot*.efi"
+inherit uefi-sign
+
+# Legacy hddimg support below this line
+efi_hddimg_populate() {
+ uefiapp_deploy_at "$1"
+}
+
+build_efi_cfg() {
+ # The command line is built into the combo app, so this is a null op
+ :
+}
+
+populate_kernel_append() {
+ # The kernel and initrd are built into the app, so we don't need these
+ if [ -f $dest/initrd ]; then
+ rm $dest/initrd
+ fi
+ if [ -f $dest/vmlinuz ]; then
+ rm $dest/vmlinuz
+ fi
+}
+
+IMAGE_FEATURES[validitems] += "secureboot"
diff --git a/bsp/meta-intel/classes/uefi-sign.bbclass b/bsp/meta-intel/classes/uefi-sign.bbclass
new file mode 100644
index 00000000..e8f203b9
--- /dev/null
+++ b/bsp/meta-intel/classes/uefi-sign.bbclass
@@ -0,0 +1,50 @@
+# By default, sign all .efi binaries in ${B} after compiling and before deploying
+SIGNING_DIR ?= "${B}"
+SIGNING_BINARIES ?= "*.efi"
+SIGN_AFTER ?= "do_compile"
+SIGN_BEFORE ?= "do_deploy"
+
+python () {
+ import os
+ import hashlib
+
+ # Ensure that if the signing key or cert change, we rerun the uefiapp process
+ if bb.utils.contains('IMAGE_FEATURES', 'secureboot', True, False, d):
+ for varname in ('SECURE_BOOT_SIGNING_CERT', 'SECURE_BOOT_SIGNING_KEY'):
+ filename = d.getVar(varname)
+ if filename is None:
+ bb.fatal('%s is not set.' % varname)
+ if not os.path.isfile(filename):
+ bb.fatal('%s=%s is not a file.' % (varname, filename))
+ with open(filename, 'rb') as f:
+ data = f.read()
+ hash = hashlib.sha256(data).hexdigest()
+ d.setVar('%s_HASH' % varname, hash)
+
+ # Must reparse and thus rehash on file changes.
+ bb.parse.mark_dependency(d, filename)
+
+ bb.build.addtask('uefi_sign', d.getVar('SIGN_BEFORE'), d.getVar('SIGN_AFTER'), d)
+
+ # Original binary needs to be regenerated if the hash changes since we overwrite it
+ # SIGN_AFTER isn't necessarily when it gets generated, but its our best guess
+ d.appendVarFlag(d.getVar('SIGN_AFTER'), 'vardeps', 'SECURE_BOOT_SIGNING_CERT_HASH SECURE_BOOT_SIGNING_KEY_HASH')
+}
+
+do_uefi_sign() {
+ if [ -f ${SECURE_BOOT_SIGNING_KEY} ] && [ -f ${SECURE_BOOT_SIGNING_CERT} ]; then
+ for i in `find ${SIGNING_DIR}/ -name '${SIGNING_BINARIES}'`; do
+ sbsign --key ${SECURE_BOOT_SIGNING_KEY} --cert ${SECURE_BOOT_SIGNING_CERT} $i
+ sbverify --cert ${SECURE_BOOT_SIGNING_CERT} $i.signed
+ mv $i.signed $i
+ done
+ fi
+}
+
+do_uefi_sign[depends] += "sbsigntool-native:do_populate_sysroot"
+
+do_uefi_sign[vardeps] += "SECURE_BOOT_SIGNING_CERT_HASH \
+ SECURE_BOOT_SIGNING_KEY_HASH \
+ SIGNING_BINARIES SIGNING_DIR \
+ SIGN_BEFORE SIGN_AFTER \
+ "
diff --git a/bsp/meta-intel/conf/include/maintainers.inc b/bsp/meta-intel/conf/include/maintainers.inc
new file mode 100644
index 00000000..3ddd1e7d
--- /dev/null
+++ b/bsp/meta-intel/conf/include/maintainers.inc
@@ -0,0 +1,16 @@
+# This file contains a list of recipe maintainers for meta-intel
+
+RECIPE_MAINTAINER_pn-core-image-rt = "Anuj Mittal <anuj.mittal@intel.com>"
+RECIPE_MAINTAINER_pn-core-image-rt-sdk = "Anuj Mittal <anuj.mittal@intel.com>"
+RECIPE_MAINTAINER_pn-gma500-gfx-check = "Anuj Mittal <anuj.mittal@intel.com>"
+RECIPE_MAINTAINER_pn-intel-gpu-tools = "Anuj Mittal <anuj.mittal@intel.com>"
+RECIPE_MAINTAINER_pn-intel-microcode = "Anuj Mittal <anuj.mittal@intel.com>"
+RECIPE_MAINTAINER_pn-core-image-minimal-initramfs = "Anuj Mittal <anuj.mittal@intel.com>"
+RECIPE_MAINTAINER_pn-iucode-tool = "Anuj Mittal <anuj.mittal@intel.com>"
+RECIPE_MAINTAINER_pn-intel-vaapi-driver = "Anuj Mittal <anuj.mittal@intel.com>"
+RECIPE_MAINTAINER_pn-libyami = "Anuj Mittal <anuj.mittal@intel.com>"
+RECIPE_MAINTAINER_pn-libyami-utils = "Anuj Mittal <anuj.mittal@intel.com>"
+RECIPE_MAINTAINER_pn-linux-intel = "Anuj Mittal <anuj.mittal@intel.com>"
+RECIPE_MAINTAINER_pn-linux-intel-rt = "Anuj Mittal <anuj.mittal@intel.com>"
+RECIPE_MAINTAINER_pn-thermald = "Anuj Mittal <anuj.mittal@intel.com>"
+RECIPE_MAINTAINER_pn-xf86-video-ast = "Anuj Mittal <anuj.mittal@intel.com>"
diff --git a/bsp/meta-intel/conf/layer.conf b/bsp/meta-intel/conf/layer.conf
new file mode 100644
index 00000000..63e9e5ea
--- /dev/null
+++ b/bsp/meta-intel/conf/layer.conf
@@ -0,0 +1,24 @@
+# We have a conf and classes directory, add to BBPATH
+BBPATH .= ":${LAYERDIR}"
+
+# We have recipes-* directories, add to BBFILES
+BBFILES += "${LAYERDIR}/recipes-*/*/*.bb \
+ ${LAYERDIR}/recipes-*/*/*.bbappend"
+
+BBFILE_COLLECTIONS += "intel"
+BBFILE_PATTERN_intel := "^${LAYERDIR}/"
+BBFILE_PRIORITY_intel = "5"
+
+# Additional license directories.
+LICENSE_PATH += "${LAYERDIR}/custom-licenses"
+
+LAYERDEPENDS_intel = "core"
+LAYERRECOMMENDS_intel = "dpdk intel-qat"
+
+# This should only be incremented on significant changes that will
+# cause compatibility issues with other layers
+LAYERVERSION_intel = "5"
+LAYERSERIES_COMPAT_intel = "thud"
+
+
+require ${LAYERDIR}/conf/include/maintainers.inc
diff --git a/bsp/meta-intel/conf/machine/include/intel-common-pkgarch.inc b/bsp/meta-intel/conf/machine/include/intel-common-pkgarch.inc
new file mode 100644
index 00000000..d0f208bd
--- /dev/null
+++ b/bsp/meta-intel/conf/machine/include/intel-common-pkgarch.inc
@@ -0,0 +1,15 @@
+INTEL_COMMON_PACKAGE_ARCH ?= "${TUNE_PKGARCH}-intel-common"
+PACKAGE_ARCH_pn-linux-intel = "${INTEL_COMMON_PACKAGE_ARCH}"
+PACKAGE_ARCH_pn-linux-intel-rt = "${INTEL_COMMON_PACKAGE_ARCH}"
+PACKAGE_ARCH_pn-linux-intel-tiny = "${INTEL_COMMON_PACKAGE_ARCH}"
+PACKAGE_ARCH_pn-linux-intel-dev = "${INTEL_COMMON_PACKAGE_ARCH}"
+PACKAGE_ARCH_pn-linux-yocto = "${INTEL_COMMON_PACKAGE_ARCH}"
+PACKAGE_ARCH_pn-linux-yocto-rt = "${INTEL_COMMON_PACKAGE_ARCH}"
+PACKAGE_ARCH_pn-linux-yocto-tiny = "${INTEL_COMMON_PACKAGE_ARCH}"
+PACKAGE_ARCH_pn-linux-yocto-dev = "${INTEL_COMMON_PACKAGE_ARCH}"
+PACKAGE_ARCH_pn-intel-microcode = "${INTEL_COMMON_PACKAGE_ARCH}"
+PACKAGE_ARCH_pn-backport-iwlwifi = "${INTEL_COMMON_PACKAGE_ARCH}"
+PACKAGE_ARCH_pn-ixgbe = "${INTEL_COMMON_PACKAGE_ARCH}"
+PACKAGE_ARCH_pn-ixgbevf = "${INTEL_COMMON_PACKAGE_ARCH}"
+PACKAGE_EXTRA_ARCHS_append += "${INTEL_COMMON_PACKAGE_ARCH}"
+MACHINEOVERRIDES =. "${INTEL_COMMON_PACKAGE_ARCH}:"
diff --git a/bsp/meta-intel/conf/machine/include/intel-core2-32-common.inc b/bsp/meta-intel/conf/machine/include/intel-core2-32-common.inc
new file mode 100644
index 00000000..8c469499
--- /dev/null
+++ b/bsp/meta-intel/conf/machine/include/intel-core2-32-common.inc
@@ -0,0 +1,7 @@
+#
+# Common configuration for all MACHINEs of the intel-core2 type
+#
+
+DEFAULTTUNE ?= "core2-32"
+require conf/machine/include/tune-core2.inc
+require conf/machine/include/x86-base.inc
diff --git a/bsp/meta-intel/conf/machine/include/intel-corei7-64-common.inc b/bsp/meta-intel/conf/machine/include/intel-corei7-64-common.inc
new file mode 100644
index 00000000..00282569
--- /dev/null
+++ b/bsp/meta-intel/conf/machine/include/intel-corei7-64-common.inc
@@ -0,0 +1,7 @@
+#
+# Common configuration for all MACHINES of the intel-corei7-64 type
+#
+
+DEFAULTTUNE ?= "corei7-64"
+require conf/machine/include/tune-corei7.inc
+require conf/machine/include/x86-base.inc
diff --git a/bsp/meta-intel/conf/machine/include/meta-intel.inc b/bsp/meta-intel/conf/machine/include/meta-intel.inc
new file mode 100644
index 00000000..78f44fc8
--- /dev/null
+++ b/bsp/meta-intel/conf/machine/include/meta-intel.inc
@@ -0,0 +1,39 @@
+#
+# BSP variables and settings specific to the meta-intel layer.
+# You must include the meta-intel layer in your bblayers.conf
+# to use them.
+#
+
+PREFERRED_PROVIDER_virtual/kernel ?= "linux-intel"
+PREFERRED_PROVIDER_virtual/kernel_poky-tiny ?= "linux-intel"
+PREFERRED_VERSION_linux-intel_linuxstdbase ?= "4.9%"
+PREFERRED_VERSION_linux-intel ?= "4.14%"
+PREFERRED_VERSION_linux-intel-rt ?= "4.14%"
+
+XSERVER_X86_ASPEED_AST = "xf86-video-ast \
+ "
+
+# include the user space intel microcode loading support in the generated images.
+MACHINE_ESSENTIAL_EXTRA_RDEPENDS_append = "${@bb.utils.contains('MACHINE_FEATURES', 'intel-ucode', ' intel-microcode', '', d)} thermald"
+
+# recommended extra packages common to all intel machines
+MACHINE_EXTRA_RRECOMMENDS_append = " kernel-modules linux-firmware"
+
+# for the early boot time kernel microcode loading support,
+# merge the microcode data in the final initrd image.
+INITRD_LIVE_prepend = "${@bb.utils.contains('MACHINE_FEATURES', 'intel-ucode', '${DEPLOY_DIR_IMAGE}/microcode.cpio ', '', d)}"
+
+DISK_SIGNATURE_UUID ??= "deadbeef-dead-beef-dead-beefdeadbeef"
+
+EFI_PROVIDER ?= "systemd-boot"
+EFI_PROVIDER_x86-x32 = "grub-efi"
+
+# Add general MACHINEOVERRIDE for meta-intel
+MACHINEOVERRIDES =. "intel-x86-common:"
+
+# Definition of (more or less) suitable virtual machines.
+require conf/machine/include/qemuboot-intel.inc
+
+# Ensure that the extra tools needed by qemu are built when building images
+# and tweak machine definition to make the result more usable under qemu.
+require conf/machine/include/qemu-intel.inc
diff --git a/bsp/meta-intel/conf/machine/include/qemu-intel.inc b/bsp/meta-intel/conf/machine/include/qemu-intel.inc
new file mode 100644
index 00000000..81510404
--- /dev/null
+++ b/bsp/meta-intel/conf/machine/include/qemu-intel.inc
@@ -0,0 +1,19 @@
+# Similar to meta/conf/machine/include/qemu.inc but influences the
+# distro content (in particular the kernel) less than qemu.inc.
+
+# Ensure that qemu gets built when building images.
+EXTRA_IMAGEDEPENDS += "qemu-native qemu-helper-native"
+
+# Build ovmf firmware for uefi support in qemu.
+EXTRA_IMAGEDEPENDS += "ovmf"
+
+# runqemu uses virtio, so we have to enable the corresponding
+# kernel drivers.
+KERNEL_FEATURES_INTEL_COMMON += "cfg/virtio.scc"
+
+# Other useful extensions which are not enabled by default:
+# rng-tools to take advantage of qemu's virtio-rng-pci device.
+# MACHINE_EXTRA_RRECOMMENDS += "rng-tools"
+
+# Creates the necessary .qemuboot.conf file for each image.
+IMAGE_CLASSES += "qemuboot"
diff --git a/bsp/meta-intel/conf/machine/include/qemuboot-intel.inc b/bsp/meta-intel/conf/machine/include/qemuboot-intel.inc
new file mode 100644
index 00000000..6586cf09
--- /dev/null
+++ b/bsp/meta-intel/conf/machine/include/qemuboot-intel.inc
@@ -0,0 +1,15 @@
+# For runqemu
+IMAGE_CLASSES += "qemuboot"
+QB_SYSTEM_NAME_intel-core2-32 = "qemu-system-i386"
+QB_CPU_intel-core2-32 = "-cpu coreduo"
+QB_CPU_KVM_intel-core2-32 = "-cpu kvm32"
+
+QB_SYSTEM_NAME_intel-corei7-64 = "qemu-system-x86_64"
+QB_CPU_intel-corei7-64 = "-cpu Nehalem"
+QB_CPU_KVM_intel-corei7-64 = "-cpu kvm64"
+
+QB_AUDIO_DRV = "alsa"
+QB_AUDIO_OPT = "-soundhw ac97,es1370"
+QB_KERNEL_CMDLINE_APPEND = "vga=0 uvesafb.mode_option=640x480-32 oprofile.timer=1 uvesafb.task_timeout=-1"
+# Add the 'virtio-rng-pci' device otherwise the guest may run out of entropy
+QB_OPT_APPEND = "-vga vmware -show-cursor -usb -usbdevice tablet -device virtio-rng-pci"
diff --git a/bsp/meta-intel/conf/machine/intel-core2-32.conf b/bsp/meta-intel/conf/machine/intel-core2-32.conf
new file mode 100644
index 00000000..570685aa
--- /dev/null
+++ b/bsp/meta-intel/conf/machine/intel-core2-32.conf
@@ -0,0 +1,37 @@
+#@TYPE: Machine
+#@NAME: intel-core2-32
+
+#@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.
+
+require conf/machine/include/meta-intel.inc
+require conf/machine/include/intel-core2-32-common.inc
+require conf/machine/include/intel-common-pkgarch.inc
+
+MACHINE_FEATURES += "pcbios efi"
+MACHINE_FEATURES += "wifi 3g nfc"
+MACHINE_FEATURES += "intel-ucode"
+
+MACHINE_HWCODECS ?= "intel-vaapi-driver gstreamer1.0-vaapi"
+
+MACHINE_ESSENTIAL_EXTRA_RRECOMMENDS += "gma500-gfx-check"
+
+# Enable optional QAT items:
+COMPATIBLE_MACHINE_pn-qat17 = "intel-core2-32"
+
+XSERVER ?= "${XSERVER_X86_BASE} \
+ ${XSERVER_X86_EXT} \
+ ${XSERVER_X86_FBDEV} \
+ ${XSERVER_X86_I915} \
+ ${XSERVER_X86_I965} \
+ ${XSERVER_X86_MODESETTING} \
+ ${XSERVER_X86_VESA} \
+ ${XSERVER_X86_ASPEED_AST} \
+ "
+
+SYSLINUX_OPTS = "serial 0 115200"
+SERIAL_CONSOLES = "115200;ttyS0 115200;ttyS1 115200;ttyPCH0"
+APPEND += "rootwait console=ttyS0,115200 console=ttyPCH0,115200 console=tty0"
+
+IMAGE_FSTYPES += "wic"
+WKS_FILE ?= "${@bb.utils.contains_any("EFI_PROVIDER", "systemd-boot", "systemd-bootdisk-microcode.wks", "grub-bootdisk-microcode.wks", d)}"
+WKS_FILE_DEPENDS_append = " intel-microcode"
diff --git a/bsp/meta-intel/conf/machine/intel-corei7-64.conf b/bsp/meta-intel/conf/machine/intel-corei7-64.conf
new file mode 100644
index 00000000..9ce21a84
--- /dev/null
+++ b/bsp/meta-intel/conf/machine/intel-corei7-64.conf
@@ -0,0 +1,41 @@
+#@TYPE: Machine
+#@NAME: intel-corei7-64
+
+#@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.
+
+require conf/machine/include/meta-intel.inc
+require conf/machine/include/intel-corei7-64-common.inc
+require conf/machine/include/intel-common-pkgarch.inc
+
+MACHINE_FEATURES += "pcbios efi"
+MACHINE_FEATURES += "wifi 3g nfc"
+MACHINE_FEATURES += "intel-ucode"
+
+MACHINE_HWCODECS ?= "intel-vaapi-driver gstreamer1.0-vaapi"
+
+# Enable optional dpdk:
+COMPATIBLE_MACHINE_pn-dpdk = "intel-corei7-64"
+COMPATIBLE_MACHINE_pn-dpdk-dev-libibverbs = "intel-corei7-64"
+
+# Enable optional QAT items:
+COMPATIBLE_MACHINE_pn-qat16 = "intel-corei7-64"
+COMPATIBLE_MACHINE_pn-qat17 = "intel-corei7-64"
+COMPATIBLE_MACHINE_pn-zlib-qat = "intel-corei7-64"
+
+XSERVER ?= "${XSERVER_X86_BASE} \
+ ${XSERVER_X86_EXT} \
+ ${XSERVER_X86_FBDEV} \
+ ${XSERVER_X86_I915} \
+ ${XSERVER_X86_I965} \
+ ${XSERVER_X86_MODESETTING} \
+ ${XSERVER_X86_VESA} \
+ ${XSERVER_X86_ASPEED_AST} \
+ "
+
+SYSLINUX_OPTS = "serial 0 115200"
+SERIAL_CONSOLES = "115200;ttyS0 115200;ttyS1 115200;ttyS2"
+APPEND += "rootwait console=ttyS0,115200 console=tty0"
+
+IMAGE_FSTYPES += "wic"
+WKS_FILE ?= "${@bb.utils.contains_any("EFI_PROVIDER", "systemd-boot", "systemd-bootdisk-microcode.wks", "grub-bootdisk-microcode.wks", d)}"
+WKS_FILE_DEPENDS_append = " intel-microcode"
diff --git a/bsp/meta-intel/custom-licenses/BSD_LMS b/bsp/meta-intel/custom-licenses/BSD_LMS
new file mode 100755
index 00000000..2ea28ff4
--- /dev/null
+++ b/bsp/meta-intel/custom-licenses/BSD_LMS
@@ -0,0 +1,30 @@
+Copyright (C) 2004-2012 Intel Corporation. All rights reserved.
+
+• This license covers the sources of the Local Manageability Service (LMS).
+For licensing information for the LMS build scripts, please refer to the file build_script_license.txt.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+ - Redistributions of source code must retain the above copyright notice,
+ this list of conditions and the following disclaimer.
+
+ - Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+ - Neither the name of Intel Corporation. nor the names of its
+ contributors may be used to endorse or promote products derived from this
+ software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``AS IS''
+AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ARE DISCLAIMED. IN NO EVENT SHALL Intel Corporation. OR THE CONTRIBUTORS
+BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGE.
diff --git a/bsp/meta-intel/custom-licenses/Intel-Microcode-License b/bsp/meta-intel/custom-licenses/Intel-Microcode-License
new file mode 100644
index 00000000..214abddc
--- /dev/null
+++ b/bsp/meta-intel/custom-licenses/Intel-Microcode-License
@@ -0,0 +1,37 @@
+Copyright (c) 2018-2019 Intel Corporation.
+All rights reserved.
+
+Redistribution.
+
+Redistribution and use in binary form, without modification, are permitted,
+provided that the following conditions are met:
+
+1. Redistributions must reproduce the above copyright notice and the
+ following disclaimer in the documentation and/or other materials provided
+ with the distribution.
+
+2. Neither the name of Intel Corporation nor the names of its suppliers may
+ be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+3. No reverse engineering, decompilation, or disassembly of this software
+ is permitted.
+
+
+"Binary form" includes any format that is commonly used for electronic
+conveyance that is a reversible, bit-exact translation of binary
+representation to ASCII or ISO text, for example "uuencode".
+
+DISCLAIMER.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGE.
diff --git a/bsp/meta-intel/documentation/secureboot/README b/bsp/meta-intel/documentation/secureboot/README
new file mode 100644
index 00000000..3d5703bb
--- /dev/null
+++ b/bsp/meta-intel/documentation/secureboot/README
@@ -0,0 +1,38 @@
+Currently, only one implementation of Secure Boot is available out of the box,
+which is using a single signed EFI application to directly boot the kernel with
+an optional initramfs.
+
+This can be added to your build either through local.conf, or via your own
+custom image recipe.
+
+If you are adding it via local.conf, set the following variables:
+
+IMAGE_FEATURES += "secureboot"
+WKS_FILE = "generic-bootdisk.wks.in"
+SECURE_BOOT_SIGNING_KEY = "/path/to/your/signing/key"
+SECURE_BOOT_SIGNING_CERT = "/path/to/your/signing/cert"
+IMAGE_CLASSES += "uefi-comboapp"
+
+If working with an image recipe, you can inherit uefi-comboapp directly instead
+of using the IMAGE_CLASSES variable.
+
+The signing keys and certs can be created via openssl commands. Here's an
+example:
+openssl req -new -x509 -newkey rsa:2048 -subj "/CN=your-subject/" -keyout \
+your-key.key -out your-key.crt -days 365 -nodes -sha256
+openssl x509 -in your-key.crt -out your-key.cer -outform DER
+
+The .crt file is your SECURE_BOOT_SIGNING_CERT, and the .key file is your
+SECURE_BOOT_SIGNING_KEY.
+
+You should enroll the .crt key in your firmware under the PK, KEK, and DB
+options (methods are different depending on your firmware). If a key should ever
+become invalid, enroll it under DBX to blacklist it.
+
+The comboapp can be further manipulated in a number of ways. You can modify the
+kernel command line via the APPEND variable, you can change the default UUID via
+the DISK_SIGNATURE_UUID variable, and you can modify the contents of the
+initramfs via the INITRD_IMAGE or INITRD_LIVE variables.
+
+A simple Secure Boot enabled image used for testing can be viewed at:
+common/recipes-selftest/images/secureboot-selftest-image-signed.bb
diff --git a/bsp/meta-intel/lib/oeqa/selftest/cases/secureboot.py b/bsp/meta-intel/lib/oeqa/selftest/cases/secureboot.py
new file mode 100644
index 00000000..4c059e25
--- /dev/null
+++ b/bsp/meta-intel/lib/oeqa/selftest/cases/secureboot.py
@@ -0,0 +1,176 @@
+#!/usr/bin/env python
+# ex:ts=4:sw=4:sts=4:et
+# -*- tab-width: 4; c-basic-offset: 4; indent-tabs-mode: nil -*-
+#
+# Copyright (c) 2017, Intel Corporation.
+# All rights reserved.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License version 2 as
+# published by the Free Software Foundation.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License along
+# with this program; if not, write to the Free Software Foundation, Inc.,
+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+#
+# AUTHORS
+# Mikko Ylinen <mikko.ylinen@linux.intel.com>
+#
+# Based on meta/lib/oeqa/selftest/* and meta-refkit/lib/oeqa/selftest/*
+
+"""Test cases for secure boot with QEMU running OVMF."""
+
+import os
+import unittest
+import re
+import glob
+from shutil import rmtree, copy
+
+from oeqa.core.decorator.depends import OETestDepends
+from oeqa.selftest.case import OESelftestTestCase
+from oeqa.utils.commands import runCmd, bitbake, get_bb_var, get_bb_vars, runqemu
+
+class SecureBootTests(OESelftestTestCase):
+ """Secure Boot test class."""
+
+ ovmf_keys_enrolled = False
+ ovmf_qemuparams = ''
+ ovmf_dir = ''
+ test_image_unsigned = 'secureboot-selftest-image-unsigned'
+ test_image_signed = 'secureboot-selftest-image-signed'
+ correct_key = 'refkit-db'
+ incorrect_key = 'incorrect'
+
+ @classmethod
+ def setUpLocal(self):
+
+ if not SecureBootTests.ovmf_keys_enrolled:
+ bitbake('ovmf ovmf-shell-image-enrollkeys', output_log=self.logger)
+
+ bb_vars = get_bb_vars(['TMPDIR', 'DEPLOY_DIR_IMAGE'])
+
+ SecureBootTests.ovmf_dir = os.path.join(bb_vars['TMPDIR'], 'oeselftest', 'secureboot', 'ovmf')
+ bb.utils.mkdirhier(SecureBootTests.ovmf_dir)
+
+ # Copy (all) OVMF in a temporary location
+ for src in glob.glob('%s/ovmf.*' % bb_vars['DEPLOY_DIR_IMAGE']):
+ copy(src, SecureBootTests.ovmf_dir)
+
+ SecureBootTests.ovmf_qemuparams = '-drive if=pflash,format=qcow2,file=%s/ovmf.secboot.qcow2' % SecureBootTests.ovmf_dir
+
+ cmd = ("runqemu "
+ "qemuparams='%s' "
+ "ovmf-shell-image-enrollkeys wic intel-corei7-64 "
+ "nographic slirp") % SecureBootTests.ovmf_qemuparams
+ print('Running "%s"' % cmd)
+ status = runCmd(cmd)
+
+ if not re.search('info: success', status.output, re.M):
+ self.fail('Failed to enroll keys. EFI shell log:\n%s' % status.output)
+ else:
+ # keys enrolled in ovmf.secboot.vars
+ SecureBootTests.ovmf_keys_enrolled = True
+
+ @classmethod
+ def tearDownLocal(self):
+ # Seems this is mandatory between the tests (a signed image is booted
+ # when running test_boot_unsigned_image after test_boot_signed_image).
+ # bitbake('-c clean %s' % test_image, output_log=self.logger)
+ #
+ # Whatever the problem was, it no longer seems to be necessary, so
+ # we can skip the time-consuming clean + full rebuild (5:04 min instead
+ # of 6:55min here).
+ pass
+
+ @classmethod
+ def tearDownClass(self):
+ bitbake('ovmf-shell-image-enrollkeys:do_cleanall', output_log=self.logger)
+ rmtree(self.ovmf_dir, ignore_errors=True)
+
+ def secureboot_with_image(self, boot_timeout=300, signing_key=None):
+ """Boot the image with UEFI SecureBoot enabled and see the result. """
+
+ config = ""
+
+ if signing_key:
+ test_image = self.test_image_signed
+ config += 'SECURE_BOOT_SIGNING_KEY = "${THISDIR}/files/%s.key"\n' % signing_key
+ config += 'SECURE_BOOT_SIGNING_CERT = "${THISDIR}/files/%s.crt"\n' % signing_key
+ else:
+ test_image = self.test_image_unsigned
+
+ self.write_config(config)
+ bitbake(test_image, output_log=self.logger)
+ self.remove_config(config)
+
+ # Some of the cases depend on the timeout to expire. Allow overrides
+ # so that we don't have to wait 1000s which is the default.
+ overrides = {
+ 'TEST_QEMUBOOT_TIMEOUT': boot_timeout,
+ }
+
+ print('Booting %s' % test_image)
+
+ try:
+ with runqemu(test_image, ssh=False,
+ runqemuparams='nographic slirp',
+ qemuparams=self.ovmf_qemuparams,
+ overrides=overrides,
+ image_fstype='wic') as qemu:
+
+ cmd = 'uname -a'
+
+ status, output = qemu.run_serial(cmd)
+
+ self.assertTrue(status, 'Could not run \'uname -a\' (status=%s):\n%s' % (status, output))
+
+ # if we got this far without a correctly signed image, something went wrong
+ if signing_key != self.correct_key:
+ self.fail('The image not give a Security violation when expected. Boot log:\n%s' % output)
+
+
+ except Exception:
+
+ # Currently runqemu() fails if 'login:' prompt is not seen and it's
+ # not possible to login as 'root'. Those conditions aren't met when
+ # booting to EFI shell (See [YOCTO #11438]). We catch the failure
+ # and parse the boot log to determine the success. Note: the
+ # timeout triggers verbose bb.error() but that's normal with some
+ # of the test cases.
+
+ workdir = get_bb_var('WORKDIR', test_image)
+ bootlog = "%s/testimage/qemu_boot_log" % workdir
+
+ with open(bootlog, "r") as log:
+
+ # This isn't right but all we can do at this point. The right
+ # approach would run commands in the EFI shell to determine
+ # the BIOS rejects unsigned and/or images signed with keys in
+ # dbx key store but that needs changes in oeqa framework.
+
+ output = log.read()
+
+ # PASS if we see a security violation on unsigned or incorrectly signed images, otherwise fail
+ if signing_key == self.correct_key:
+ self.fail('Correctly signed image failed to boot. Boot log:\n%s' % output)
+ elif not re.search('Security Violation', output):
+ self.fail('The image not give a Security violation when expected. Boot log:\n%s' % output)
+
+ def test_boot_unsigned_image(self):
+ """ Boot unsigned image with secureboot enabled in UEFI."""
+ self.secureboot_with_image(boot_timeout=120, signing_key=None)
+
+ @OETestDepends(['secureboot.SecureBootTests.test_boot_unsigned_image'])
+ def test_boot_incorrectly_signed_image(self):
+ """ Boot (correctly) signed image with secureboot enabled in UEFI."""
+ self.secureboot_with_image(boot_timeout=120, signing_key=self.incorrect_key)
+
+ @OETestDepends(['secureboot.SecureBootTests.test_boot_incorrectly_signed_image'])
+ def test_boot_correctly_signed_image(self):
+ """ Boot (correctly) signed image with secureboot enabled in UEFI."""
+ self.secureboot_with_image(boot_timeout=150, signing_key=self.correct_key)
diff --git a/bsp/meta-intel/recipes-bsp/formfactor/formfactor/machconfig b/bsp/meta-intel/recipes-bsp/formfactor/formfactor/machconfig
new file mode 100644
index 00000000..73695fac
--- /dev/null
+++ b/bsp/meta-intel/recipes-bsp/formfactor/formfactor/machconfig
@@ -0,0 +1,39 @@
+# Note: superuser permission is required to run usbhid-dump
+# successfully.
+
+# HEX keys are according to the USB HID spec and USB HID usage table
+# We can add more keys as needed in the future.
+
+# This test may not be very accurate, as we only look for the first
+# two lines of a descriptor section. Example:
+#
+# 001:003:000:DESCRIPTOR 1460501386.337809
+# 05 01 09 02 A1 01 09 01 A1 00 05 09 19 01 29 03
+# 15 00 25 01 95 03 75 01 81 02 .. .. .. .. .. ..
+# .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ..
+#
+# By doing so we eliminate false matches when HEX keys are in the lines
+# in the middle of the whole descriptor section.
+
+if type usbhid-dump &>/dev/null; then
+ if USBHID_DUMP_OUTPUT=$(usbhid-dump -e descriptor 2>/dev/null|grep -A1 DESCRIPTOR); then
+ # checker for generic USB HID keyboard
+ USBHID_KBD_CMD="grep -E '^ 05 01 09 06'"
+
+ # checker for touch screen
+ USBHID_TS_CMD="grep -E '^ 05 0D 09 04'"
+
+ if echo "$USBHID_DUMP_OUTPUT"|eval $USBHID_TS_CMD &>/dev/null; then
+ HAVE_TOUCHSCREEN=1
+ fi
+
+ if echo "$USBHID_DUMP_OUTPUT"|eval $USBHID_KBD_CMD &>/dev/null; then
+ HAVE_KEYBOARD=1
+ else
+ # config script in OE will set HAVE_KEYBOARD=1
+ # if we don't set any value. We have to explicitly
+ # tell it when keyboard is not detected.
+ HAVE_KEYBOARD=0
+ fi
+ fi
+fi
diff --git a/bsp/meta-intel/recipes-bsp/formfactor/formfactor_0.0.bbappend b/bsp/meta-intel/recipes-bsp/formfactor/formfactor_0.0.bbappend
new file mode 100644
index 00000000..6dd422ae
--- /dev/null
+++ b/bsp/meta-intel/recipes-bsp/formfactor/formfactor_0.0.bbappend
@@ -0,0 +1 @@
+FILESEXTRAPATHS_prepend_intel-x86-common := "${THISDIR}/${PN}:"
diff --git a/bsp/meta-intel/recipes-bsp/gma500-gfx-check/gma500-gfx-check/gma500-gfx-check.conf b/bsp/meta-intel/recipes-bsp/gma500-gfx-check/gma500-gfx-check/gma500-gfx-check.conf
new file mode 100644
index 00000000..74d33c87
--- /dev/null
+++ b/bsp/meta-intel/recipes-bsp/gma500-gfx-check/gma500-gfx-check/gma500-gfx-check.conf
@@ -0,0 +1,2 @@
+# Mimic modprobe's install funcitonality with busybox's modprobe
+install gma500_gfx dmesg | grep gma500_gfx_checked || { /etc/modprobe.d/gma500-gfx-check.sh || modprobe gma500_gfx; }
diff --git a/bsp/meta-intel/recipes-bsp/gma500-gfx-check/gma500-gfx-check/gma500-gfx-check.sh b/bsp/meta-intel/recipes-bsp/gma500-gfx-check/gma500-gfx-check/gma500-gfx-check.sh
new file mode 100644
index 00000000..75cda99f
--- /dev/null
+++ b/bsp/meta-intel/recipes-bsp/gma500-gfx-check/gma500-gfx-check/gma500-gfx-check.sh
@@ -0,0 +1,15 @@
+#!/bin/sh
+
+# Check for devices we wish to avoid gma500_gfx for
+DEVICES="0x8119 0x4108"
+
+# Checked flag to avoid infinite modprobe
+echo "gma500_gfx_checked" >> /dev/kmsg;
+
+for DEVICE in $DEVICES; do
+ if udevadm trigger --subsystem-match=pci --verbose --attr-match=device=$DEVICE | grep "pci" >> /dev/null ; then
+ echo "Found $DEVICE, avoiding gma500_gfx module" >> /dev/kmsg;
+ exit 0
+ fi
+done
+exit 1
diff --git a/bsp/meta-intel/recipes-bsp/gma500-gfx-check/gma500-gfx-check_1.0.bb b/bsp/meta-intel/recipes-bsp/gma500-gfx-check/gma500-gfx-check_1.0.bb
new file mode 100644
index 00000000..7b08064b
--- /dev/null
+++ b/bsp/meta-intel/recipes-bsp/gma500-gfx-check/gma500-gfx-check_1.0.bb
@@ -0,0 +1,18 @@
+SUMMARY = "Intel gma500_gfx fix for certain hardware"
+DESCRIPTION = "Avoid inserting gma500_gfx module for certain hardware devices."
+LICENSE="GPLv2"
+LIC_FILES_CHKSUM = "file://${COREBASE}/meta/files/common-licenses/GPL-2.0;md5=801f80980d171dd6425610833a22dbe6"
+
+SRC_URI = "file://gma500-gfx-check.conf \
+ file://gma500-gfx-check.sh "
+
+do_install(){
+ install -d ${D}${sysconfdir}/modprobe.d/
+ install -m 755 ${WORKDIR}/gma500-gfx-check.sh ${D}${sysconfdir}/modprobe.d/gma500-gfx-check.sh
+ install -m 644 ${WORKDIR}/gma500-gfx-check.conf ${D}${sysconfdir}/modprobe.d/gma500-gfx-check.conf
+}
+
+FILES_${PN}="${sysconfdir}/modprobe.d/gma500-gfx-check.conf \
+ ${sysconfdir}/modprobe.d/gma500-gfx-check.sh"
+
+COMPATIBLE_MACHINE = "intel-core2-32"
diff --git a/bsp/meta-intel/recipes-bsp/systemd-boot/systemd-boot/0001-efi-boot.c-workaround-for-Joule-BIOS-hang.patch b/bsp/meta-intel/recipes-bsp/systemd-boot/systemd-boot/0001-efi-boot.c-workaround-for-Joule-BIOS-hang.patch
new file mode 100644
index 00000000..8d0b6149
--- /dev/null
+++ b/bsp/meta-intel/recipes-bsp/systemd-boot/systemd-boot/0001-efi-boot.c-workaround-for-Joule-BIOS-hang.patch
@@ -0,0 +1,31 @@
+From 58669ad764767afea4de53f8a97357773b1855ef Mon Sep 17 00:00:00 2001
+From: Saul Wold <sgw@linux.intel.com>
+Date: Tue, 25 Oct 2016 12:54:08 -0700
+Subject: [PATCH] efi/boot.c: workaround for Joule BIOS hang
+
+This patch should be removed when the BIOS is fixed
+
+Authored-by: Steve Sakoman <steve@sakoman.com>
+
+Upstream-Status: Inappropriate [machine specific workaround]
+Signed-off-by: Saul Wold <sgw@linux.intel.com>
+---
+ src/boot/efi/boot.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/src/boot/efi/boot.c b/src/boot/efi/boot.c
+index 3dcd9a5..3c6ed8c 100644
+--- a/src/boot/efi/boot.c
++++ b/src/boot/efi/boot.c
+@@ -649,7 +649,7 @@ static BOOLEAN menu_run(Config *config, ConfigEntry **chosen_entry, CHAR16 *load
+ }
+
+ /* timeout disabled, wait for next key */
+- wait = TRUE;
++ wait = FALSE;
+ continue;
+ }
+
+--
+2.7.4
+
diff --git a/bsp/meta-intel/recipes-bsp/systemd-boot/systemd-boot_%.bbappend b/bsp/meta-intel/recipes-bsp/systemd-boot/systemd-boot_%.bbappend
new file mode 100644
index 00000000..d46ef410
--- /dev/null
+++ b/bsp/meta-intel/recipes-bsp/systemd-boot/systemd-boot_%.bbappend
@@ -0,0 +1,15 @@
+FILESEXTRAPATHS_prepend_intel-x86-common := "${THISDIR}/systemd-boot:"
+
+SRC_URI_append_intel-x86-common = " \
+ file://0001-efi-boot.c-workaround-for-Joule-BIOS-hang.patch \
+ "
+
+PACKAGE_ARCH_intel-x86-common = "${INTEL_COMMON_PACKAGE_ARCH}"
+
+do_compile_append_intel-x86-common() {
+ ninja src/boot/efi/linux${SYSTEMD_BOOT_EFI_ARCH}.efi.stub
+}
+
+do_deploy_append_intel-x86-common() {
+ install ${B}/src/boot/efi/linux*.efi.stub ${DEPLOYDIR}
+}
diff --git a/bsp/meta-intel/recipes-bsp/thermald/thermald/0001-Use-correct-format-specifier-for-size_t.patch b/bsp/meta-intel/recipes-bsp/thermald/thermald/0001-Use-correct-format-specifier-for-size_t.patch
new file mode 100644
index 00000000..6897ffc1
--- /dev/null
+++ b/bsp/meta-intel/recipes-bsp/thermald/thermald/0001-Use-correct-format-specifier-for-size_t.patch
@@ -0,0 +1,37 @@
+From bb7631163c8f3f44d0dc83690765cdb799664fd5 Mon Sep 17 00:00:00 2001
+From: Anuj Mittal <anuj.mittal@intel.com>
+Date: Wed, 26 Sep 2018 10:34:15 +0800
+Subject: [PATCH] Use correct format specifier for size_t
+
+%zu instead of %lu, otherwise on 32 bit:
+
+| ../git/src/thd_zone.cpp: In member function 'void cthd_zone::sort_and_update_poll_trip()':
+| ../git/src/thd_zone.cpp:106:16: error: format '%lu' expects argument of type 'long unsigned int', but argument 4 has type 'std::vector<cthd_trip_point>::size_type' {aka 'unsigned int'} [-Werror=format=]
+| thd_log_debug("sort_and_update_poll_trip: trip_points_size =%lu\n",
+| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+| trip_points.size());
+
+Upstream-Status: Submitted
+[https://github.com/intel/thermal_daemon/pull/165]
+
+Signed-off-by: Anuj Mittal <anuj.mittal@intel.com>
+---
+ src/thd_zone.cpp | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/src/thd_zone.cpp b/src/thd_zone.cpp
+index b7edf9e..cb7b8e8 100644
+--- a/src/thd_zone.cpp
++++ b/src/thd_zone.cpp
+@@ -103,7 +103,7 @@ int cthd_zone::read_user_set_psv_temp() {
+ }
+
+ void cthd_zone::sort_and_update_poll_trip() {
+- thd_log_debug("sort_and_update_poll_trip: trip_points_size =%lu\n",
++ thd_log_debug("sort_and_update_poll_trip: trip_points_size =%zu\n",
+ trip_points.size());
+ if (trip_points.size()) {
+ unsigned int polling_trip = 0;
+--
+2.17.1
+
diff --git a/bsp/meta-intel/recipes-bsp/thermald/thermald_1.8.bb b/bsp/meta-intel/recipes-bsp/thermald/thermald_1.8.bb
new file mode 100644
index 00000000..f7725f31
--- /dev/null
+++ b/bsp/meta-intel/recipes-bsp/thermald/thermald_1.8.bb
@@ -0,0 +1,35 @@
+SUMMARY = "Linux thermal daemon"
+
+DESCRIPTION = "Thermal Daemon is a Linux daemon used to prevent the \
+overheating of platforms. This daemon monitors temperature and applies \
+compensation using available cooling methods."
+
+HOMEPAGE = "https://github.com/01org/thermal_daemon"
+
+DEPENDS = "dbus dbus-glib dbus-glib-native libxml2 glib-2.0 glib-2.0-native"
+DEPENDS += "${@bb.utils.contains('DISTRO_FEATURES','systemd','systemd','',d)}"
+DEPENDS_append_libc-musl = " argp-standalone"
+DEPENDS_append_toolchain-clang = " openmp"
+LICENSE = "GPLv2"
+LIC_FILES_CHKSUM = "file://COPYING;md5=ea8831610e926e2e469075b52bf08848"
+
+SRC_URI = "git://github.com/intel/thermal_daemon/ \
+ file://0001-Use-correct-format-specifier-for-size_t.patch \
+ "
+SRCREV = "517c0e5f92d49aeeef3a22b04caf40d588216827"
+S = "${WORKDIR}/git"
+
+inherit pkgconfig autotools systemd
+
+FILES_${PN} += "${datadir}/dbus-1/system-services/*.service"
+
+SYSTEMD_SERVICE_${PN} = "thermald.service"
+
+COMPATIBLE_HOST = '(i.86|x86_64).*-linux'
+
+CONFFILES_${PN} = " \
+ ${sysconfdir}/thermald/thermal-conf.xml \
+ ${sysconfdir}/thermald/thermal-cpu-cdev-order.xml \
+ "
+
+UPSTREAM_CHECK_URI = "https://github.com/01org/thermal_daemon/releases"
diff --git a/bsp/meta-intel/recipes-core/images/core-image-minimal-initramfs.bbappend b/bsp/meta-intel/recipes-core/images/core-image-minimal-initramfs.bbappend
new file mode 100644
index 00000000..132f15b5
--- /dev/null
+++ b/bsp/meta-intel/recipes-core/images/core-image-minimal-initramfs.bbappend
@@ -0,0 +1,2 @@
+# Add i915 graphics firmware
+PACKAGE_INSTALL_append_intel-x86-common = " linux-firmware-i915"
diff --git a/bsp/meta-intel/recipes-core/images/core-image-tiny.bb b/bsp/meta-intel/recipes-core/images/core-image-tiny.bb
new file mode 100644
index 00000000..6b09b0c2
--- /dev/null
+++ b/bsp/meta-intel/recipes-core/images/core-image-tiny.bb
@@ -0,0 +1,36 @@
+SUMMARY = "A tiny image just capable of allowing a device to boot from RAM, \
+this image recipe generates an image file which rather boots from initrd than \
+from storage, it achieves this by using wic to pick up the artifacts generated \
+by the core-image-tiny-initramfs image"
+
+# The actual rootfs/initrd will be the one from core-image-tiny-initramfs, so
+# we reset IMAGE_INSTALL to avoid building other things that will be pointless
+IMAGE_INSTALL = ""
+
+# Do not pollute the initrd image with rootfs features
+IMAGE_FEATURES = ""
+
+IMAGE_LINGUAS = " "
+
+LICENSE = "MIT"
+
+IMAGE_ROOTFS_SIZE ?= "8192"
+
+IMAGE_FSTYPES = "wic"
+inherit core-image
+
+# We get some parts from image-live that we need in order to boot from initrd
+INITRD_IMAGE_LIVE ?= "core-image-tiny-initramfs"
+
+python() {
+ image_b = d.getVar('IMAGE_BASENAME')
+ initrd_i = d.getVar('INITRD_IMAGE_LIVE')
+ if image_b == initrd_i:
+ bb.error('INITRD_IMAGE_LIVE %s cannot use the requested IMAGE_FSTYPE' % initrd_i)
+ bb.fatal('Check IMAGE_FSTYPES and INITRAMFS_FSTYPES settings.')
+ elif initrd_i:
+ d.appendVarFlag('do_image', 'depends', ' %s:do_image_complete' % initrd_i)
+}
+
+WKS_FILE_intel-corei7-64 = "core-image-tiny.wks.in"
+WKS_FILE_intel-core2-32 = "core-image-tiny.wks.in"
diff --git a/bsp/meta-intel/recipes-core/microcode/intel-microcode_20190514a.bb b/bsp/meta-intel/recipes-core/microcode/intel-microcode_20190514a.bb
new file mode 100644
index 00000000..6e97e90c
--- /dev/null
+++ b/bsp/meta-intel/recipes-core/microcode/intel-microcode_20190514a.bb
@@ -0,0 +1,66 @@
+SUMMARY = "Intel Processor Microcode Datafile for Linux"
+HOMEPAGE = "http://www.intel.com/"
+DESCRIPTION = "The microcode data file contains the latest microcode\
+ definitions for all Intel processors. Intel releases microcode updates\
+ to correct processor behavior as documented in the respective processor\
+ specification updates. While the regular approach to getting this microcode\
+ update is via a BIOS upgrade, Intel realizes that this can be an\
+ administrative hassle. The Linux operating system and VMware ESX\
+ products have a mechanism to update the microcode after booting.\
+ For example, this file will be used by the operating system mechanism\
+ if the file is placed in the /etc/firmware directory of the Linux system."
+
+LICENSE = "Intel-Microcode-License"
+LIC_FILES_CHKSUM = "file://license;md5=99b296eb12723fd1eeb52e24971eed84"
+
+SRC_URI = "git://github.com/intel/Intel-Linux-Processor-Microcode-Data-Files.git;protocol=https \
+ "
+
+SRCREV = "1dd14da6d1ea5cfbd95923653f31c04aac3aa655"
+
+DEPENDS = "iucode-tool-native"
+S = "${WORKDIR}/git"
+
+COMPATIBLE_HOST = "(i.86|x86_64).*-linux"
+PACKAGE_ARCH = "${MACHINE_ARCH}"
+
+inherit deploy
+
+# Use any of the iucode_tool parameters to filter specific microcodes from the data file
+# For further information, check the iucode-tool's manpage : http://manned.org/iucode-tool
+UCODE_FILTER_PARAMETERS ?= ""
+
+do_compile() {
+ ${STAGING_DIR_NATIVE}${sbindir_native}/iucode_tool \
+ ${UCODE_FILTER_PARAMETERS} \
+ --overwrite \
+ --write-to=${WORKDIR}/microcode_${PV}.bin \
+ ${S}/intel-ucode/* ${S}/intel-ucode-with-caveats/*
+
+ ${STAGING_DIR_NATIVE}${sbindir_native}/iucode_tool \
+ ${UCODE_FILTER_PARAMETERS} \
+ --overwrite \
+ --write-earlyfw=${WORKDIR}/microcode_${PV}.cpio \
+ ${S}/intel-ucode/* ${S}/intel-ucode-with-caveats/*
+}
+
+do_install() {
+ install -d ${D}${base_libdir}/firmware/intel-ucode/
+ install ${WORKDIR}/microcode_${PV}.bin ${D}${base_libdir}/firmware/intel-ucode/
+ cd ${D}${base_libdir}/firmware/intel-ucode/
+ ln -sf microcode_${PV}.bin microcode.bin
+}
+
+do_deploy() {
+ install -d ${DEPLOYDIR}
+ install ${WORKDIR}/microcode_${PV}.cpio ${DEPLOYDIR}/
+ cd ${DEPLOYDIR}
+ rm -f microcode.cpio
+ ln -sf microcode_${PV}.cpio microcode.cpio
+}
+
+addtask deploy before do_build after do_compile
+
+PACKAGES = "${PN}"
+
+FILES_${PN} = "${base_libdir}"
diff --git a/bsp/meta-intel/recipes-core/microcode/iucode-tool/0001-Makefile.am-Add-arg-parse-library-for-MUSL-support.patch b/bsp/meta-intel/recipes-core/microcode/iucode-tool/0001-Makefile.am-Add-arg-parse-library-for-MUSL-support.patch
new file mode 100644
index 00000000..ca97d2ab
--- /dev/null
+++ b/bsp/meta-intel/recipes-core/microcode/iucode-tool/0001-Makefile.am-Add-arg-parse-library-for-MUSL-support.patch
@@ -0,0 +1,29 @@
+From 5f6826b3a59dedf508d5a6122362d69a4813e8e6 Mon Sep 17 00:00:00 2001
+From: Saul Wold <sgw@linux.intel.com>
+Date: Fri, 3 Feb 2017 16:08:51 -0800
+Subject: [PATCH] Makefile.am: Add arg-parse library for MUSL support
+
+iucode-tool needs argp-standalone when used with MUSL, so add this
+patch to the Makefile to link with argp
+
+Upstream-Status: Pending
+Signed-off-by: Saul Wold <sgw@linux.intel.com>
+---
+ Makefile.am | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/Makefile.am b/Makefile.am
+index 415a241..764fb61 100644
+--- a/Makefile.am
++++ b/Makefile.am
+@@ -5,6 +5,7 @@
+ sbin_PROGRAMS = iucode_tool
+ man_MANS = iucode_tool.8
+
++iucode_tool_LDADD = -largp
+ iucode_tool_SOURCES = intel_microcode.h intel_microcode.c iucode_tool.c
+ EXTRA_DIST = autogen.sh CONTRIBUTING
+
+--
+2.7.4
+
diff --git a/bsp/meta-intel/recipes-core/microcode/iucode-tool_2.3.1.bb b/bsp/meta-intel/recipes-core/microcode/iucode-tool_2.3.1.bb
new file mode 100644
index 00000000..df74a8e9
--- /dev/null
+++ b/bsp/meta-intel/recipes-core/microcode/iucode-tool_2.3.1.bb
@@ -0,0 +1,33 @@
+SUMMARY = "Update Intel CPU microcode"
+
+DESCRIPTION = "iucode_tool is a program to manipulate Intel i686 and X86-64\
+ processor microcode update collections, and to use the kernel facilities to\
+ update the microcode on Intel system processors. It can load microcode data\
+ files in text and binary format, sort, list and filter the microcode updates\
+ contained in these files, write selected microcode updates to a new file in\
+ binary format, or upload them to the kernel. \
+ It operates on microcode data downloaded directly from Intel:\
+ http://feeds.downloadcenter.intel.com/rss/?p=2371\
+"
+HOMEPAGE = "https://gitlab.com/iucode-tool/"
+BUGTRACKER = "https://bugs.debian.org/cgi-bin/pkgreport.cgi?ordering=normal;archive=0;src=iucode-tool;repeatmerged=0"
+
+LICENSE = "GPLv2+"
+LIC_FILES_CHKSUM = "file://COPYING;md5=751419260aa954499f7abaabaa882bbe \
+ file://iucode_tool.c;beginline=1;endline=15;md5=71eeab3190360ff0267101b570874756"
+
+DEPENDS_append_libc-musl = " argp-standalone"
+
+SRC_URI = "https://gitlab.com/iucode-tool/releases/raw/master/iucode-tool_${PV}.tar.xz"
+SRC_URI_append_libc-musl = " file://0001-Makefile.am-Add-arg-parse-library-for-MUSL-support.patch"
+
+SRC_URI[md5sum] = "63b33cc0ea1f8c73b443412abbf39d6f"
+SRC_URI[sha256sum] = "12b88efa4d0d95af08db05a50b3dcb217c0eb2bfc67b483779e33d498ddb2f95"
+
+inherit autotools
+
+BBCLASSEXTEND = "native"
+
+COMPATIBLE_HOST = "(i.86|x86_64).*-linux"
+
+UPSTREAM_CHECK_URI = "https://gitlab.com/iucode-tool/releases"
diff --git a/bsp/meta-intel/recipes-core/ovmf/files/0001-ovmf-RefkitTestCA-TEST-UEFI-SecureBoot.patch b/bsp/meta-intel/recipes-core/ovmf/files/0001-ovmf-RefkitTestCA-TEST-UEFI-SecureBoot.patch
new file mode 100644
index 00000000..62db0633
--- /dev/null
+++ b/bsp/meta-intel/recipes-core/ovmf/files/0001-ovmf-RefkitTestCA-TEST-UEFI-SecureBoot.patch
@@ -0,0 +1,105 @@
+From 48e511481d83c1614cd00a5a2edcf6b5d746b9c4 Mon Sep 17 00:00:00 2001
+From: Mikko Ylinen <mikko.ylinen@linux.intel.com>
+Date: Fri, 7 Apr 2017 12:06:14 +0300
+Subject: [PATCH] ovmf: RefkitTestCA: TEST UEFI SecureBoot
+
+This patch adds refkit-db.cer (via xxd -i) in OVMF's db
+signature database when used with EnrollDefaultKeys EFI
+application. It's used for testing purposes only.
+
+Images signed with refkit-db keys are allowed to boot.
+
+Signed-off-by: Mikko Ylinen <mikko.ylinen@linux.intel.com>
+---
+ OvmfPkg/EnrollDefaultKeys/EnrollDefaultKeys.c | 68 +++++++++++++++++++++++++++
+ 1 file changed, 68 insertions(+)
+
+diff --git a/OvmfPkg/EnrollDefaultKeys/EnrollDefaultKeys.c b/OvmfPkg/EnrollDefaultKeys/EnrollDefaultKeys.c
+index 24ab977..a3c12ba 100644
+--- a/OvmfPkg/EnrollDefaultKeys/EnrollDefaultKeys.c
++++ b/OvmfPkg/EnrollDefaultKeys/EnrollDefaultKeys.c
+@@ -516,6 +516,73 @@ STATIC CONST UINT8 MicrosoftUefiCA[] = {
+ 0x07, 0x92, 0x9b, 0xf5, 0xa6, 0xbc, 0x59, 0x83, 0x58
+ };
+
++STATIC CONST UINT8 RefkitTestCA[] = {
++ 0x30, 0x82, 0x02, 0xfb, 0x30, 0x82, 0x01, 0xe3, 0xa0, 0x03, 0x02, 0x01,
++ 0x02, 0x02, 0x09, 0x00, 0xd4, 0xf6, 0x48, 0xc2, 0x68, 0x19, 0x91, 0xac,
++ 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01,
++ 0x0b, 0x05, 0x00, 0x30, 0x14, 0x31, 0x12, 0x30, 0x10, 0x06, 0x03, 0x55,
++ 0x04, 0x03, 0x0c, 0x09, 0x72, 0x65, 0x66, 0x6b, 0x69, 0x74, 0x2d, 0x64,
++ 0x62, 0x30, 0x1e, 0x17, 0x0d, 0x31, 0x37, 0x30, 0x34, 0x32, 0x30, 0x31,
++ 0x32, 0x30, 0x36, 0x33, 0x32, 0x5a, 0x17, 0x0d, 0x31, 0x38, 0x30, 0x34,
++ 0x32, 0x30, 0x31, 0x32, 0x30, 0x36, 0x33, 0x32, 0x5a, 0x30, 0x14, 0x31,
++ 0x12, 0x30, 0x10, 0x06, 0x03, 0x55, 0x04, 0x03, 0x0c, 0x09, 0x72, 0x65,
++ 0x66, 0x6b, 0x69, 0x74, 0x2d, 0x64, 0x62, 0x30, 0x82, 0x01, 0x22, 0x30,
++ 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x01,
++ 0x05, 0x00, 0x03, 0x82, 0x01, 0x0f, 0x00, 0x30, 0x82, 0x01, 0x0a, 0x02,
++ 0x82, 0x01, 0x01, 0x00, 0xb4, 0x1c, 0x22, 0xa6, 0x22, 0x01, 0x57, 0xcd,
++ 0xf1, 0x4f, 0xaf, 0x72, 0xe3, 0xd9, 0x01, 0x80, 0x50, 0x55, 0xef, 0x02,
++ 0x5e, 0xeb, 0x99, 0x35, 0xcb, 0x7f, 0x2a, 0x79, 0xff, 0xb5, 0x3e, 0xec,
++ 0x5d, 0x92, 0x06, 0x30, 0x20, 0xe7, 0x95, 0xad, 0xa4, 0x84, 0x2e, 0x3f,
++ 0xfa, 0xd7, 0x46, 0xdd, 0x49, 0xa8, 0xe8, 0xe3, 0x79, 0x49, 0xf6, 0x8f,
++ 0x0b, 0x1d, 0xfe, 0x63, 0xa8, 0xd1, 0x63, 0xa3, 0xd6, 0x0d, 0x4e, 0x6c,
++ 0x66, 0x5c, 0xd6, 0x66, 0x26, 0xd1, 0x26, 0x98, 0xd4, 0x4f, 0x76, 0xc9,
++ 0x65, 0x48, 0x58, 0x13, 0x08, 0x31, 0xbc, 0xe5, 0x47, 0x25, 0x65, 0x95,
++ 0x39, 0x89, 0x5f, 0x02, 0xf1, 0xc5, 0x06, 0x17, 0x58, 0xca, 0x09, 0xfd,
++ 0xf6, 0x1e, 0xc5, 0x97, 0xda, 0xa3, 0x4e, 0x1a, 0x48, 0xbe, 0xcf, 0x96,
++ 0x27, 0x04, 0x4b, 0xb7, 0x6d, 0x67, 0xb6, 0x50, 0x18, 0x04, 0x73, 0x51,
++ 0xd2, 0x6a, 0x2d, 0xdf, 0x3b, 0xab, 0xf2, 0x2d, 0x95, 0xd7, 0xa8, 0xb8,
++ 0xa8, 0x30, 0xa1, 0xab, 0x8b, 0x92, 0x2b, 0x60, 0x3e, 0x3a, 0xe5, 0x86,
++ 0x40, 0x71, 0xc1, 0x3f, 0x2d, 0x2e, 0x90, 0xe7, 0xd6, 0xec, 0xcc, 0xc2,
++ 0x0b, 0x79, 0x83, 0x71, 0x6d, 0xf6, 0xa3, 0xa9, 0x4c, 0xcd, 0x46, 0x81,
++ 0xdc, 0xef, 0xec, 0x51, 0xbe, 0x81, 0x2a, 0xf1, 0x78, 0x73, 0x41, 0xdb,
++ 0x54, 0xce, 0x7c, 0xce, 0xa2, 0xe3, 0x90, 0x4f, 0x45, 0x1a, 0xf9, 0x3d,
++ 0x88, 0xfc, 0x0e, 0xed, 0xd3, 0x69, 0x22, 0x4c, 0xfa, 0x0a, 0x69, 0xd1,
++ 0x48, 0xc0, 0xaa, 0xa9, 0x3a, 0xb3, 0x8f, 0x10, 0x3a, 0x76, 0xa8, 0x0c,
++ 0x7a, 0x3d, 0xd8, 0x79, 0xce, 0x1c, 0x96, 0x62, 0xf4, 0x06, 0xee, 0x47,
++ 0xe8, 0xe0, 0x69, 0x91, 0xae, 0xea, 0x34, 0xcf, 0xda, 0xa8, 0xb4, 0x39,
++ 0x5e, 0xf3, 0x7a, 0xd0, 0x88, 0x48, 0x47, 0x69, 0x02, 0x03, 0x01, 0x00,
++ 0x01, 0xa3, 0x50, 0x30, 0x4e, 0x30, 0x1d, 0x06, 0x03, 0x55, 0x1d, 0x0e,
++ 0x04, 0x16, 0x04, 0x14, 0x68, 0x60, 0x11, 0x25, 0x85, 0x14, 0x78, 0x1b,
++ 0x1a, 0x9f, 0x46, 0x12, 0xe6, 0x21, 0xe4, 0xef, 0xfb, 0x3b, 0xaa, 0xdd,
++ 0x30, 0x1f, 0x06, 0x03, 0x55, 0x1d, 0x23, 0x04, 0x18, 0x30, 0x16, 0x80,
++ 0x14, 0x68, 0x60, 0x11, 0x25, 0x85, 0x14, 0x78, 0x1b, 0x1a, 0x9f, 0x46,
++ 0x12, 0xe6, 0x21, 0xe4, 0xef, 0xfb, 0x3b, 0xaa, 0xdd, 0x30, 0x0c, 0x06,
++ 0x03, 0x55, 0x1d, 0x13, 0x04, 0x05, 0x30, 0x03, 0x01, 0x01, 0xff, 0x30,
++ 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x0b,
++ 0x05, 0x00, 0x03, 0x82, 0x01, 0x01, 0x00, 0x8f, 0xd2, 0x84, 0x7c, 0x43,
++ 0x47, 0xca, 0x6b, 0xfd, 0x87, 0x83, 0xd0, 0xef, 0x75, 0xd3, 0x20, 0x52,
++ 0x73, 0x18, 0xaa, 0x32, 0x71, 0xfb, 0xa5, 0xf4, 0xc9, 0x11, 0xa3, 0x68,
++ 0x4d, 0xb7, 0x9d, 0xe6, 0xd9, 0x46, 0x24, 0xdc, 0xc7, 0xc2, 0x3b, 0xf9,
++ 0xb0, 0x98, 0xfc, 0xee, 0x34, 0x6e, 0x10, 0x9b, 0x3d, 0x44, 0x6e, 0x33,
++ 0x09, 0x11, 0xb8, 0x29, 0xd6, 0x2d, 0x06, 0xcf, 0x67, 0x8f, 0x96, 0x85,
++ 0x9d, 0x63, 0x72, 0xbf, 0x64, 0x5f, 0x0d, 0xe3, 0xc9, 0x63, 0x19, 0x71,
++ 0xd4, 0x7d, 0x4c, 0x9c, 0x77, 0x46, 0xda, 0x20, 0x97, 0x6d, 0xbc, 0xdd,
++ 0xc2, 0x1f, 0xf3, 0x40, 0x38, 0x1e, 0xe7, 0xcc, 0x55, 0x05, 0x72, 0xba,
++ 0x24, 0x4f, 0xb3, 0x8a, 0x93, 0x0c, 0x30, 0x60, 0xda, 0x9f, 0x6f, 0x35,
++ 0xf6, 0xfb, 0xb0, 0x1f, 0xb3, 0x00, 0xdd, 0xc4, 0xa6, 0xbc, 0xe2, 0x37,
++ 0xc1, 0xa3, 0xef, 0xd9, 0xa1, 0x86, 0xf9, 0xeb, 0xa4, 0xa5, 0x45, 0x38,
++ 0xff, 0x4e, 0x87, 0x4a, 0x41, 0xcf, 0x6e, 0x69, 0x7e, 0x97, 0xbe, 0x2d,
++ 0x22, 0xbc, 0x8d, 0xa0, 0x1a, 0x21, 0x8f, 0x4b, 0x72, 0x90, 0x01, 0x5c,
++ 0xba, 0xa5, 0x9c, 0x2d, 0xd7, 0x25, 0x24, 0xfc, 0xff, 0x5c, 0x58, 0x14,
++ 0x46, 0x30, 0x09, 0x7c, 0x55, 0x64, 0x83, 0x0b, 0xb9, 0xdf, 0xcf, 0x25,
++ 0xee, 0xec, 0xf7, 0xcb, 0xdb, 0xd1, 0x5b, 0x93, 0x93, 0xc8, 0x8a, 0x10,
++ 0x46, 0xb8, 0xb0, 0x35, 0x1c, 0x6c, 0x0d, 0x8f, 0x03, 0x6a, 0x8f, 0x1b,
++ 0x36, 0x68, 0xf3, 0x53, 0x89, 0x36, 0x5b, 0x21, 0x80, 0xde, 0xe3, 0x92,
++ 0x52, 0x94, 0x97, 0x9d, 0x49, 0x89, 0x7d, 0x3e, 0xde, 0x29, 0x51, 0xba,
++ 0x11, 0xf7, 0xba, 0x01, 0xf7, 0xab, 0xea, 0xc1, 0xa7, 0x2e, 0xa3, 0x4d,
++ 0x65, 0xfd, 0x40, 0x71, 0xf1, 0xe2, 0x3f, 0x6c, 0x28, 0xcb, 0xd3
++};
++
+ //
+ // The most important thing about the variable payload is that it is a list of
+ // lists, where the element size of any given *inner* list is constant.
+@@ -908,6 +975,7 @@ ShellAppMain (
+ &gEfiImageSecurityDatabaseGuid,
+ MicrosoftPCA, sizeof MicrosoftPCA, &gEfiCallerIdGuid,
+ MicrosoftUefiCA, sizeof MicrosoftUefiCA, &gEfiCallerIdGuid,
++ RefkitTestCA, sizeof RefkitTestCA, &gEfiCallerIdGuid,
+ NULL);
+ if (EFI_ERROR (Status)) {
+ return 1;
+--
+2.1.4
+
diff --git a/bsp/meta-intel/recipes-core/ovmf/ovmf-shell-image-enrollkeys.bb b/bsp/meta-intel/recipes-core/ovmf/ovmf-shell-image-enrollkeys.bb
new file mode 100644
index 00000000..b20f6e58
--- /dev/null
+++ b/bsp/meta-intel/recipes-core/ovmf/ovmf-shell-image-enrollkeys.bb
@@ -0,0 +1,13 @@
+require recipes-core/ovmf/ovmf-shell-image.bb
+
+WKS_SEARCH_PATH_append = ":${COREBASE}/meta/recipes-core/ovmf"
+
+QB_DRIVE_TYPE = "/dev/vd"
+
+do_image_append() {
+ cat > ${IMAGE_ROOTFS}/startup.nsh << EOF
+EnrollDefaultKeys
+reset
+EOF
+
+}
diff --git a/bsp/meta-intel/recipes-core/ovmf/ovmf_%.bbappend b/bsp/meta-intel/recipes-core/ovmf/ovmf_%.bbappend
new file mode 100644
index 00000000..bbf5fa32
--- /dev/null
+++ b/bsp/meta-intel/recipes-core/ovmf/ovmf_%.bbappend
@@ -0,0 +1,6 @@
+FILESEXTRAPATHS_prepend_intel-x86-common := "${THISDIR}/files:"
+
+SRC_URI_append_intel-x86-common = " \
+ file://0001-ovmf-RefkitTestCA-TEST-UEFI-SecureBoot.patch \
+"
+PACKAGECONFIG_append_intel-x86-common = " secureboot"
diff --git a/bsp/meta-intel/recipes-graphics/igt-gpu-tools/igt-gpu-tools_1.23.bb b/bsp/meta-intel/recipes-graphics/igt-gpu-tools/igt-gpu-tools_1.23.bb
new file mode 100644
index 00000000..9fe2950a
--- /dev/null
+++ b/bsp/meta-intel/recipes-graphics/igt-gpu-tools/igt-gpu-tools_1.23.bb
@@ -0,0 +1,42 @@
+require ${COREBASE}/meta/recipes-graphics/xorg-app/xorg-app-common.inc
+
+SUMMARY = "Intel GPU tools"
+DESCRIPTION = "Variety of small tools for testing intel graphics."
+
+LIC_FILES_CHKSUM = "file://COPYING;md5=e4b3dd344780e0400593b21b115a6947"
+
+LICENSE_append = " & ISC"
+
+inherit autotools gtk-doc
+
+SRC_URI = "${XORG_MIRROR}/individual/app/${BP}.tar.xz"
+
+DEPENDS += "libdrm libpciaccess cairo udev glib-2.0 libxv libx11 libxext libxrandr procps libunwind kmod openssl"
+RDEPENDS_${PN} += "bash"
+RDEPENDS_${PN}-tests += "bash"
+
+PACKAGE_BEFORE_PN = "${PN}-benchmarks ${PN}-tests"
+
+SRC_URI[md5sum] = "04c1f10d6fd85e079271540b0ea786e9"
+SRC_URI[sha256sum] = "4d4b086c513bace5c23d0889de3f42ac3ebd3d968c64dedae6e28e006a499ad0"
+
+EXTRA_OECONF = "--disable-nouveau --disable-shader-debugger"
+COMPATIBLE_HOST = "(x86_64.*|i.86.*)-linux"
+COMPATIBLE_HOST_libc-musl_class-target = "null"
+
+PACKAGECONFIG ??= ""
+PACKAGECONFIG[audio] = "--enable-audio,--disable-audio,alsa-lib gsl"
+
+gputools_sysroot_preprocess() {
+ rm -f ${SYSROOT_DESTDIR}${libdir}/pkgconfig/intel-gen4asm.pc
+}
+SYSROOT_PREPROCESS_FUNCS += "gputools_sysroot_preprocess"
+
+FILES_${PN} += "${libdir}/intel_aubdump.so"
+FILES_${PN}-benchmarks += "${libexecdir}/${BPN}/benchmarks"
+FILES_${PN}-tests += "\
+ ${libexecdir}/${BPN}/*\
+ ${datadir}/${BPN}/1080p-right.png\
+ ${datadir}/${BPN}/1080p-left.png\
+ ${datadir}/${BPN}/pass.png\
+ ${datadir}/${BPN}/test-list.txt"
diff --git a/bsp/meta-intel/recipes-graphics/xorg-driver/xf86-video-ast_1.1.5.bb b/bsp/meta-intel/recipes-graphics/xorg-driver/xf86-video-ast_1.1.5.bb
new file mode 100644
index 00000000..090efd62
--- /dev/null
+++ b/bsp/meta-intel/recipes-graphics/xorg-driver/xf86-video-ast_1.1.5.bb
@@ -0,0 +1,12 @@
+require recipes-graphics/xorg-driver/xorg-driver-video.inc
+
+SUMMARY = "X.Org X server -- ASpeed Technologies graphics driver"
+
+DESCRIPTION = "ast is an Xorg driver for ASpeed Technologies video cards"
+
+LIC_FILES_CHKSUM = "file://COPYING;md5=0b8c242f0218eea5caa949b7910a774b"
+
+DEPENDS += "libpciaccess"
+
+SRC_URI[md5sum] = "4f85febe48d51e53624550a96fc9e9ee"
+SRC_URI[sha256sum] = "1edbbc55d47d3fd71dec99b15c2483e22738c642623a0fb86ef4a81a9067a2de"
diff --git a/bsp/meta-intel/recipes-kernel/cryptodev/cryptodev-module/0001-zc-Force-4.10-get_user_pages_remote-API.patch b/bsp/meta-intel/recipes-kernel/cryptodev/cryptodev-module/0001-zc-Force-4.10-get_user_pages_remote-API.patch
new file mode 100644
index 00000000..353126fe
--- /dev/null
+++ b/bsp/meta-intel/recipes-kernel/cryptodev/cryptodev-module/0001-zc-Force-4.10-get_user_pages_remote-API.patch
@@ -0,0 +1,26 @@
+From 3fcc81ad127c267018aed96a359bbf01db1bd8ee Mon Sep 17 00:00:00 2001
+From: Saul Wold <sgw@linux.intel.com>
+Date: Sat, 1 Apr 2017 11:43:31 -0700
+Subject: [PATCH] zc: Force 4.10 get_user_pages_remote API
+
+This change forces the newer API, as the linux-intel 4.9-LTS kernel
+backported the 4.10 API change in the page handling code.
+
+Signed-off-by: Saul Wold <sgw@linux.intel.com>
+---
+ zc.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/zc.c b/zc.c
+index ae464ff..b2759ce 100644
+--- a/zc.c
++++ b/zc.c
+@@ -65,7 +65,7 @@ int __get_userbuf(uint8_t __user *addr, uint32_t len, int write,
+ #elif (LINUX_VERSION_CODE < KERNEL_VERSION(4, 9, 0))
+ ret = get_user_pages_remote(task, mm,
+ (unsigned long)addr, pgcount, write, 0, pg, NULL);
+-#elif (LINUX_VERSION_CODE < KERNEL_VERSION(4, 10, 0))
++#elif (LINUX_VERSION_CODE < KERNEL_VERSION(4, 10, 0) & 0)
+ ret = get_user_pages_remote(task, mm,
+ (unsigned long)addr, pgcount, write ? FOLL_WRITE : 0,
+ pg, NULL);
diff --git a/bsp/meta-intel/recipes-kernel/cryptodev/cryptodev-module_%.bbappend b/bsp/meta-intel/recipes-kernel/cryptodev/cryptodev-module_%.bbappend
new file mode 100644
index 00000000..c59ddb2f
--- /dev/null
+++ b/bsp/meta-intel/recipes-kernel/cryptodev/cryptodev-module_%.bbappend
@@ -0,0 +1,9 @@
+FILESEXTRAPATHS_prepend_intel-x86-common := "${THISDIR}/${PN}:"
+
+python() {
+ # When we add more kernels for linux-intel, we may have to add a Version check
+ if (d.getVar("PREFERRED_PROVIDER_virtual/kernel") == "linux-intel"):
+ src_uri = d.getVar("SRC_URI")
+ d.setVar("SRC_URI", src_uri +
+ " file://0001-zc-Force-4.10-get_user_pages_remote-API.patch")
+}
diff --git a/bsp/meta-intel/recipes-kernel/intel-ethernet/ixgbe/0001-ixgbe-skip-host-depmod.patch b/bsp/meta-intel/recipes-kernel/intel-ethernet/ixgbe/0001-ixgbe-skip-host-depmod.patch
new file mode 100644
index 00000000..0041af57
--- /dev/null
+++ b/bsp/meta-intel/recipes-kernel/intel-ethernet/ixgbe/0001-ixgbe-skip-host-depmod.patch
@@ -0,0 +1,31 @@
+From 5f87ef7ed60bc9762467184ed0a6d000b80713d9 Mon Sep 17 00:00:00 2001
+From: sweeaun <swee.aun.khor@intel.com>
+Date: Sun, 8 Apr 2018 17:21:52 +0800
+Subject: [PATCH] ixgbe: skip host depmod
+
+Upstream-Status: Inappropriate [Cross-Compile]
+
+Depmod during do_install is irrelevant when cross-compiling.
+Remove the depmod steps during do_install.
+
+Signed-off-by: sweeaun <swee.aun.khor@intel.com>
+---
+ Makefile | 2 --
+ 1 file changed, 2 deletions(-)
+
+diff --git a/Makefile b/Makefile
+index 545489a..07e422f 100644
+--- a/Makefile
++++ b/Makefile
+@@ -141,8 +141,6 @@ install: default manfile
+ @install -D -m 644 ${DRIVER}.${MANSECTION}.gz ${INSTALL_MOD_PATH}${MANDIR}/man${MANSECTION}/${DRIVER}.${MANSECTION}.gz
+ @echo "Installing modules..."
+ @+$(call devkernelbuild,modules_install)
+- @echo "Running depmod..."
+- @$(call cmd_depmod)
+
+ uninstall:
+ rm -f ${INSTALL_MOD_PATH}/lib/modules/${KVER}/${INSTALL_MOD_DIR}/${DRIVER}.ko;
+--
+2.7.4
+
diff --git a/bsp/meta-intel/recipes-kernel/intel-ethernet/ixgbe_5.5.2.bb b/bsp/meta-intel/recipes-kernel/intel-ethernet/ixgbe_5.5.2.bb
new file mode 100644
index 00000000..28d5e980
--- /dev/null
+++ b/bsp/meta-intel/recipes-kernel/intel-ethernet/ixgbe_5.5.2.bb
@@ -0,0 +1,37 @@
+SUMMARY="ixgbe kernel driver for Intel Magnolia Park 10GbE"
+DESCRIPTION="The ixgbe driver supports 82598- and 82599-based \
+PCI Express* 10 Gigabit Network Connections."
+
+HOMEPAGE = "https://sourceforge.net/projects/e1000/"
+SECTION = "kernel/network"
+LICENSE = "GPLv2"
+LIC_FILES_CHKSUM = "file://${WORKDIR}/${BP}/COPYING;md5=a216b4192dc6b777b6f0db560e9a8417"
+
+SRC_URI = "https://sourceforge.net/projects/e1000/files/ixgbe%20stable/${PV}/${BP}.tar.gz \
+ file://0001-ixgbe-skip-host-depmod.patch \
+ "
+
+SRC_URI[md5sum] = "678514cb0e24f1c11d53d156a9845e64"
+SRC_URI[sha256sum] = "1c1386e4eb0b4526d2edeb04cac657e1d74c2e5cef3f2d00a26a23926744ef1a"
+
+S = "${WORKDIR}/${BP}/src"
+MODULES_INSTALL_TARGET = "install"
+
+EXTRA_OEMAKE='KSRC="${STAGING_KERNEL_BUILDDIR}" KVER="${KERNEL_VERSION}" INSTALL_MOD_PATH="${D}"'
+
+KERNEL_MODULE_AUTOLOAD_append_intel-core2-32 = " ixgbe"
+KERNEL_MODULE_AUTOLOAD_append_intel-corei7-64 = " ixgbe"
+
+inherit module
+
+do_install_append () {
+ # Install scripts/set_irq_affinity
+ install -d ${D}${sysconfdir}/network
+ install -m 0755 ${S}/../scripts/set_irq_affinity ${D}${sysconfdir}/network
+
+ rm -rf ${D}${prefix}/man
+}
+
+PACKAGES += "${PN}-script"
+
+FILES_${PN}-script += "${sysconfdir}/network/set_irq_affinity"
diff --git a/bsp/meta-intel/recipes-kernel/intel-ethernet/ixgbevf/0001-Makefile-check-for-CONFIG_IXGBEVF-instead.patch b/bsp/meta-intel/recipes-kernel/intel-ethernet/ixgbevf/0001-Makefile-check-for-CONFIG_IXGBEVF-instead.patch
new file mode 100644
index 00000000..49a59496
--- /dev/null
+++ b/bsp/meta-intel/recipes-kernel/intel-ethernet/ixgbevf/0001-Makefile-check-for-CONFIG_IXGBEVF-instead.patch
@@ -0,0 +1,27 @@
+From b1d7f46442e50458311573443a5c78637874f62b Mon Sep 17 00:00:00 2001
+From: Anuj Mittal <anuj.mittal@intel.com>
+Date: Thu, 12 Apr 2018 11:46:15 +0800
+Subject: [PATCH] Makefile: check for CONFIG_IXGBEVF instead
+
+Check for the correct config, otherwise it won't build with kbuild.
+
+Upstream-Status: Pending
+
+Signed-off-by: Anuj Mittal <anuj.mittal@intel.com>
+---
+ src/Makefile | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/Makefile b/Makefile
+index 968ef5e..e3cb81b 100644
+--- a/Makefile
++++ b/Makefile
+@@ -28,7 +28,7 @@ ifneq ($(KERNELRELEASE),)
+ # Makefile for the Intel(R) 10GbE PCI Express Virtual Function Driver
+ #
+
+-obj-$(CONFIG_IXGBE) += ixgbevf.o
++obj-$(CONFIG_IXGBEVF) += ixgbevf.o
+
+ define ixgbevf-y
+ ixgbevf_main.o
diff --git a/bsp/meta-intel/recipes-kernel/intel-ethernet/ixgbevf/0001-ixgbevf-skip-host-depmod.patch b/bsp/meta-intel/recipes-kernel/intel-ethernet/ixgbevf/0001-ixgbevf-skip-host-depmod.patch
new file mode 100644
index 00000000..656a897d
--- /dev/null
+++ b/bsp/meta-intel/recipes-kernel/intel-ethernet/ixgbevf/0001-ixgbevf-skip-host-depmod.patch
@@ -0,0 +1,31 @@
+From 9677d09f5c3984997ac8e7d90b5d4b11fb9ce277 Mon Sep 17 00:00:00 2001
+From: sweeaun <swee.aun.khor@intel.com>
+Date: Sat, 7 Oct 2017 20:56:35 -0700
+Subject: [PATCH] ixgbevf: skip host depmod
+
+Upstream-Status: Inappropriate [Cross-Compile]
+
+Depmod during do_install is irrelevant when cross-compiling.
+Remove the depmod steps during do_install.
+
+Signed-off-by: sweeaun <swee.aun.khor@intel.com>
+---
+ Makefile | 2 --
+ 1 file changed, 2 deletions(-)
+
+diff --git a/Makefile b/Makefile
+index 91df705..1dcf350 100644
+--- a/Makefile
++++ b/Makefile
+@@ -104,8 +104,6 @@ modules_install: default manfile
+ @install -D -m 644 ${DRIVER}.${MANSECTION}.gz ${INSTALL_MOD_PATH}${MANDIR}/man${MANSECTION}/${DRIVER}.${MANSECTION}.gz
+ @echo "Installing modules..."
+ @+$(call kernelbuild,modules_install)
+- @echo "Running depmod..."
+- @$(call cmd_depmod)
+
+ uninstall:
+ rm -f ${INSTALL_MOD_PATH}/lib/modules/${KVER}/${INSTALL_MOD_DIR}/${DRIVER}.ko;
+--
+2.7.4
+
diff --git a/bsp/meta-intel/recipes-kernel/intel-ethernet/ixgbevf_4.3.6.bb b/bsp/meta-intel/recipes-kernel/intel-ethernet/ixgbevf_4.3.6.bb
new file mode 100644
index 00000000..2a793508
--- /dev/null
+++ b/bsp/meta-intel/recipes-kernel/intel-ethernet/ixgbevf_4.3.6.bb
@@ -0,0 +1,41 @@
+SUMMARY="ixgbevf kernel driver for Intel Magnolia Park 10GbE"
+DESCRIPTION="This virtual function driver supports kernel versions 2.6.x and newer \
+This driver supports 82599, X540, X550, and X552-based virtual function devices \
+that can only be activated on kernels that support SR-IOV. \
+SR-IOV requires the correct platform and OS support. \
+The guest OS loading this driver must support MSI-X interrupts."
+
+HOMEPAGE = "https://sourceforge.net/projects/e1000/"
+SECTION = "kernel/network"
+LICENSE = "GPLv2"
+LIC_FILES_CHKSUM = "file://${WORKDIR}/${BP}/COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263"
+
+SRC_URI = "https://sourceforge.net/projects/e1000/files/ixgbevf%20stable/${PV}/${BP}.tar.gz \
+ file://0001-ixgbevf-skip-host-depmod.patch \
+ file://0001-Makefile-check-for-CONFIG_IXGBEVF-instead.patch \
+ "
+
+SRC_URI[md5sum] = "fc53be00bf5e71939a9a39e9802d5b77"
+SRC_URI[sha256sum] = "61ac4e93808fa4316b044bae40f2a1dc40e4d9ae9a1785a753cdfc79b515d695"
+
+S = "${WORKDIR}/${BP}/src"
+MODULES_INSTALL_TARGET = "install"
+
+EXTRA_OEMAKE='KSRC="${STAGING_KERNEL_BUILDDIR}" KVER="${KERNEL_VERSION}" INSTALL_MOD_PATH="${D}"'
+
+KERNEL_MODULE_AUTOLOAD_append_intel-core2-32 = " ixgbevf"
+KERNEL_MODULE_AUTOLOAD_append_intel-corei7-64 = " ixgbevf"
+
+inherit module
+
+do_install_append () {
+ # Install scripts/set_irq_affinity
+ install -d ${D}${sysconfdir}/network
+ install -m 0755 ${S}/../scripts/set_irq_affinity ${D}${sysconfdir}/network
+
+ rm -rf ${D}${prefix}/man
+}
+
+PACKAGES += "${PN}-script"
+
+FILES_${PN}-script += "${sysconfdir}/network/set_irq_affinity"
diff --git a/bsp/meta-intel/recipes-kernel/iwlwifi/backport-iwlwifi/0001-Makefile.real-skip-host-install-scripts.patch b/bsp/meta-intel/recipes-kernel/iwlwifi/backport-iwlwifi/0001-Makefile.real-skip-host-install-scripts.patch
new file mode 100644
index 00000000..1d4137ba
--- /dev/null
+++ b/bsp/meta-intel/recipes-kernel/iwlwifi/backport-iwlwifi/0001-Makefile.real-skip-host-install-scripts.patch
@@ -0,0 +1,36 @@
+From f69ff2fd27903ee052309179271f708d720a2f94 Mon Sep 17 00:00:00 2001
+From: Mikko Ylinen <mikko.ylinen@linux.intel.com>
+Date: Thu, 10 Aug 2017 21:12:51 +0300
+Subject: [PATCH] Makefile.real: skip host install scripts
+
+The scripts run in install target are relevant (and working)
+only if the driver installation is run on the build host.
+
+Skip the scripts when cross-compiling.
+
+Upstream-Status: Inappropriate [Cross-Compile]
+
+Signed-off-by: Mikko Ylinen <mikko.ylinen@linux.intel.com>
+---
+ Makefile.real | 5 -----
+ 1 file changed, 5 deletions(-)
+
+diff --git a/Makefile.real b/Makefile.real
+index ba09f99..f5075de 100644
+--- a/Makefile.real
++++ b/Makefile.real
+@@ -104,11 +104,6 @@ install: modules
+ @$(MAKE) -C $(KLIB_BUILD) M=$(BACKPORT_DIR) \
+ INSTALL_MOD_DIR=$(KMODDIR) $(KMODPATH_ARG) \
+ modules_install
+- @./scripts/blacklist.sh $(KLIB)/ $(KLIB)/$(KMODDIR)
+- @./scripts/compress_modules.sh $(KLIB)/$(KMODDIR)
+- @./scripts/check_depmod.sh
+- @/sbin/depmod -a
+- @./scripts/update-initramfs.sh $(KLIB)
+ @echo
+ @echo Your backported driver modules should be installed now.
+ @echo Reboot.
+--
+2.1.4
+
diff --git a/bsp/meta-intel/recipes-kernel/iwlwifi/backport-iwlwifi/0001-hrtimer-fix-version-numbers-because-production-kerne.patch b/bsp/meta-intel/recipes-kernel/iwlwifi/backport-iwlwifi/0001-hrtimer-fix-version-numbers-because-production-kerne.patch
new file mode 100644
index 00000000..4fdc36f7
--- /dev/null
+++ b/bsp/meta-intel/recipes-kernel/iwlwifi/backport-iwlwifi/0001-hrtimer-fix-version-numbers-because-production-kerne.patch
@@ -0,0 +1,87 @@
+From ecb29b78ce946c802058be0c46a0d20432f412e5 Mon Sep 17 00:00:00 2001
+From: Saul Wold <sgw@linux.intel.com>
+Date: Thu, 28 Sep 2017 10:51:15 -0700
+Subject: [PATCH] hrtimer: fix version numbers because production kernel has
+ update
+
+Decrease the version check because the OTC production kernel which is
+4.9 includes the HRTimer code that this is using.
+
+Upstream-Status: [Backport] It's been backported into the older kernel
+Signed-off-by: Saul Wold <sgw@linux.intel.com>
+---
+ backport-include/linux/hrtimer.h | 2 +-
+ drivers/net/wireless/intel/iwlwifi/mvm/tx.c | 2 +-
+ drivers/net/wireless/intel/iwlwifi/pcie/tx.c | 2 +-
+ drivers/net/wireless/intel/iwlwifi/trans_slave/shared.c | 2 +-
+ net/mac80211/tx.c | 2 +-
+ 5 files changed, 5 insertions(+), 5 deletions(-)
+
+diff --git a/backport-include/linux/hrtimer.h b/backport-include/linux/hrtimer.h
+index bdcf106e1..ae128852d 100644
+--- a/backport-include/linux/hrtimer.h
++++ b/backport-include/linux/hrtimer.h
+@@ -4,7 +4,7 @@
+ #include_next <linux/hrtimer.h>
+ #include <linux/interrupt.h>
+
+-#if LINUX_VERSION_IS_LESS(4,10,0)
++#if LINUX_VERSION_IS_LESS(4,9,0)
+ static inline void backport_hrtimer_start(struct hrtimer *timer, s64 time,
+ const enum hrtimer_mode mode)
+ {
+diff --git a/drivers/net/wireless/intel/iwlwifi/mvm/tx.c b/drivers/net/wireless/intel/iwlwifi/mvm/tx.c
+index cf1f95a01..e6f1ff294 100644
+--- a/drivers/net/wireless/intel/iwlwifi/mvm/tx.c
++++ b/drivers/net/wireless/intel/iwlwifi/mvm/tx.c
+@@ -1310,7 +1310,7 @@ static void iwl_mvm_tx_lat_add_ts_ack(struct sk_buff *skb)
+ s64 ts_1 = ktime_to_ns(skb->tstamp) >> 32;
+ s64 diff = temp - ts_1;
+
+-#if LINUX_VERSION_IS_LESS(4,10,0)
++#if LINUX_VERSION_IS_LESS(4,9,0)
+ skb->tstamp.tv64 += diff;
+ #else
+ skb->tstamp += diff;
+diff --git a/drivers/net/wireless/intel/iwlwifi/pcie/tx.c b/drivers/net/wireless/intel/iwlwifi/pcie/tx.c
+index df81bce25..ad664bacd 100644
+--- a/drivers/net/wireless/intel/iwlwifi/pcie/tx.c
++++ b/drivers/net/wireless/intel/iwlwifi/pcie/tx.c
+@@ -1955,7 +1955,7 @@ static void iwl_trans_pci_tx_lat_add_ts_write(struct sk_buff *skb)
+ s64 ts_1 = ktime_to_ns(skb->tstamp) >> 32;
+ s64 diff = temp - ts_1;
+
+-#if LINUX_VERSION_IS_LESS(4,10,0)
++#if LINUX_VERSION_IS_LESS(4,9,0)
+ skb->tstamp.tv64 += diff << 16;
+ #else
+ skb->tstamp += diff << 16;
+diff --git a/drivers/net/wireless/intel/iwlwifi/trans_slave/shared.c b/drivers/net/wireless/intel/iwlwifi/trans_slave/shared.c
+index e4d45bcf7..cdd0ba9a2 100644
+--- a/drivers/net/wireless/intel/iwlwifi/trans_slave/shared.c
++++ b/drivers/net/wireless/intel/iwlwifi/trans_slave/shared.c
+@@ -796,7 +796,7 @@ void iwl_slv_tx_lat_add_ts_write(struct iwl_trans_slv *trans_slv,
+
+ ts_1 = ktime_to_ns(data_entry->skb->tstamp) >> 32;
+ diff = temp - ts_1;
+-#if LINUX_VERSION_IS_LESS(4,10,0)
++#if LINUX_VERSION_IS_LESS(4,9,0)
+ data_entry->skb->tstamp.tv64 += diff << 16;
+ #else
+ data_entry->skb->tstamp += diff << 16;
+diff --git a/net/mac80211/tx.c b/net/mac80211/tx.c
+index 94a348688..0f226c413 100644
+--- a/net/mac80211/tx.c
++++ b/net/mac80211/tx.c
+@@ -2278,7 +2278,7 @@ static void ieee80211_tx_latency_start_msrmnt(struct ieee80211_local *local,
+ if (!tx_latency && !tx_consec && !tx_thrshld)
+ return;
+ temp = ktime_to_ms(ktime_get());
+-#if LINUX_VERSION_IS_LESS(4,10,0)
++#if LINUX_VERSION_IS_LESS(4,9,0)
+ skb->tstamp.tv64 += temp << 32;
+ #else
+ skb->tstamp += temp << 32;
+--
+2.13.5
+
diff --git a/bsp/meta-intel/recipes-kernel/iwlwifi/backport-iwlwifi/iwlwifi.conf b/bsp/meta-intel/recipes-kernel/iwlwifi/backport-iwlwifi/iwlwifi.conf
new file mode 100644
index 00000000..a0e5f6ff
--- /dev/null
+++ b/bsp/meta-intel/recipes-kernel/iwlwifi/backport-iwlwifi/iwlwifi.conf
@@ -0,0 +1,12 @@
+# /etc/modprobe.d/iwlwifi.conf
+# iwlwifi will dynamically load either iwldvm or iwlmvm depending on the
+# microcode file installed on the system. When removing iwlwifi, first
+# remove the iwl?vm module and then iwlwifi.
+remove iwlwifi (/sbin/lsmod | grep -o -e ^iwlmvm -e ^iwldvm16 -e ^iwldvm -e ^iwlwifi | xargs /sbin/rmmod) && /sbin/modprobe -r mac80211
+
+#options iwlwifi lar_disable=1
+#options iwlwifi nvm_file="nvm-sfp-b2-open.bin"
+options iwlmvm power_scheme=1
+
+# PCI BUS
+
diff --git a/bsp/meta-intel/recipes-kernel/iwlwifi/backport-iwlwifi_git.bb b/bsp/meta-intel/recipes-kernel/iwlwifi/backport-iwlwifi_git.bb
new file mode 100644
index 00000000..1453f519
--- /dev/null
+++ b/bsp/meta-intel/recipes-kernel/iwlwifi/backport-iwlwifi_git.bb
@@ -0,0 +1,56 @@
+SUMMARY = "Intel Wireless LinuxCore kernel driver"
+DESCRIPTION = "Intel Wireless LinuxCore kernel driver"
+SECTION = "kernel"
+LICENSE = "GPLv2"
+
+REQUIRED_DISTRO_FEATURES = "wifi"
+
+LIC_FILES_CHKSUM = "file://${S}/COPYING;md5=d7810fab7487fb0aad327b76f1be7cd7"
+
+inherit module
+
+# For some iwfwifi LinuxCore supported wireless chips, the best/latest
+# firmware blobs are found in the iwlwifi's linux-firmware.git fork.
+#
+# See: https://wireless.wiki.kernel.org/en/users/drivers/iwlwifi/core_release
+#
+# When updating this recipe, ensure that the proper firmware is included from
+# either the linux-firmware or iwlwifi-firmware repos.
+
+PV = "30"
+SRCREV = "b31221a99488021300e7f89d2ecf9bdd2bc52dd2"
+
+# Add a patch for Intel's Production Kernel as it's got a backport of HRTimers
+PK_PATCH = "${@bb.utils.contains('PREFERRED_PROVIDER_virtual/kernel','linux-intel','file://0001-hrtimer-fix-version-numbers-because-production-kerne.patch','',d)}"
+
+SRC_URI = " \
+ git://git.kernel.org/pub/scm/linux/kernel/git/iwlwifi/backport-iwlwifi;branch=release/LinuxCore${PV} \
+ file://0001-Makefile.real-skip-host-install-scripts.patch \
+ ${PK_PATCH} \
+ file://iwlwifi.conf \
+ "
+
+S = "${WORKDIR}/git"
+
+EXTRA_OEMAKE = "INSTALL_MOD_PATH=${D} KLIB_BUILD=${KBUILD_OUTPUT}"
+
+do_configure() {
+ CC=gcc CFLAGS= LDFLAGS= make defconfig-iwlwifi-public KLIB_BUILD=${KBUILD_OUTPUT}
+}
+
+MODULES_INSTALL_TARGET="install"
+
+do_install_append() {
+ ## install configs and service scripts
+ install -d ${D}${sysconfdir}/modprobe.d
+ install -m 0644 ${WORKDIR}/iwlwifi.conf ${D}${sysconfdir}/modprobe.d
+}
+
+RDEPENDS_${PN} = "linux-firmware-iwlwifi"
+
+KERNEL_MODULE_AUTOLOAD_append_core2-32-intel-common = " iwlwifi"
+KERNEL_MODULE_AUTOLOAD_append_corei7-64-intel-common = " iwlwifi"
+
+KERNEL_MODULE_PACKAGE_PREFIX = "backport-iwlwifi"
+
+EXCLUDE_FROM_WORLD = "1"
diff --git a/bsp/meta-intel/recipes-kernel/linux/linux-intel-rt_4.14.bb b/bsp/meta-intel/recipes-kernel/linux/linux-intel-rt_4.14.bb
new file mode 100644
index 00000000..0611304c
--- /dev/null
+++ b/bsp/meta-intel/recipes-kernel/linux/linux-intel-rt_4.14.bb
@@ -0,0 +1,24 @@
+require linux-intel.inc
+
+# Skip processing of this recipe if it is not explicitly specified as the
+# PREFERRED_PROVIDER for virtual/kernel. This avoids errors when trying
+# to build multiple virtual/kernel providers, e.g. as dependency of
+# core-image-rt-sdk, core-image-rt.
+python () {
+ if d.getVar("PREFERRED_PROVIDER_virtual/kernel") != "linux-intel-rt":
+ raise bb.parse.SkipPackage("Set PREFERRED_PROVIDER_virtual/kernel to linux-intel-rt to enable it")
+}
+
+KBRANCH = "4.14/preempt-rt"
+KMETA_BRANCH = "yocto-4.14"
+
+# Fix for 32-bit perf issue. Remove when patch is backported to 4.14.
+SRC_URI_append = " file://0001-perf-x86-32-explicitly-include-errno.h.patch"
+
+DEPENDS += "elfutils-native openssl-native util-linux-native"
+
+LINUX_VERSION ?= "4.14.106"
+SRCREV_machine ?= "5cfa4c85d15168b84e40bd38b7d31a62a01e40d3"
+SRCREV_meta ?= "bc35d5bd224ab031440a69f9806d839db382f05c"
+
+LINUX_KERNEL_TYPE = "preempt-rt"
diff --git a/bsp/meta-intel/recipes-kernel/linux/linux-intel-rt_4.19.bb b/bsp/meta-intel/recipes-kernel/linux/linux-intel-rt_4.19.bb
new file mode 100644
index 00000000..0fd47585
--- /dev/null
+++ b/bsp/meta-intel/recipes-kernel/linux/linux-intel-rt_4.19.bb
@@ -0,0 +1,24 @@
+require linux-intel.inc
+
+# Skip processing of this recipe if it is not explicitly specified as the
+# PREFERRED_PROVIDER for virtual/kernel. This avoids errors when trying
+# to build multiple virtual/kernel providers, e.g. as dependency of
+# core-image-rt-sdk, core-image-rt.
+python () {
+ if d.getVar("PREFERRED_PROVIDER_virtual/kernel") != "linux-intel-rt":
+ raise bb.parse.SkipPackage("Set PREFERRED_PROVIDER_virtual/kernel to linux-intel-rt to enable it")
+}
+
+LIC_FILES_CHKSUM = "file://COPYING;md5=bbea815ee2795b2f4230826c0c6b8814"
+SRC_URI_append = " file://0001-menuconfig-mconf-cfg-Allow-specification-of-ncurses-.patch"
+
+KBRANCH = "4.19/preempt-rt"
+KMETA_BRANCH = "yocto-4.19"
+
+DEPENDS += "elfutils-native openssl-native util-linux-native"
+
+LINUX_VERSION ?= "4.19.31"
+SRCREV_machine ?= "8b4bc03e27be3bd3b23249205d11185b2ed21ec6"
+SRCREV_meta ?= "d85f07e03c980eca5ffd5ba058985d6ed3a83801"
+
+LINUX_KERNEL_TYPE = "preempt-rt"
diff --git a/bsp/meta-intel/recipes-kernel/linux/linux-intel-rt_4.9.bb b/bsp/meta-intel/recipes-kernel/linux/linux-intel-rt_4.9.bb
new file mode 100644
index 00000000..fd82cfa6
--- /dev/null
+++ b/bsp/meta-intel/recipes-kernel/linux/linux-intel-rt_4.9.bb
@@ -0,0 +1,20 @@
+
+require linux-intel.inc
+
+# Skip processing of this recipe if it is not explicitly specified as the
+# PREFERRED_PROVIDER for virtual/kernel. This avoids errors when trying
+# to build multiple virtual/kernel providers, e.g. as dependency of
+# core-image-rt-sdk, core-image-rt.
+python () {
+ if d.getVar("PREFERRED_PROVIDER_virtual/kernel") != "linux-intel-rt":
+ raise bb.parse.SkipPackage("Set PREFERRED_PROVIDER_virtual/kernel to linux-intel-rt to enable it")
+}
+
+KBRANCH = "4.9/yocto/base-rt"
+KMETA_BRANCH = "yocto-4.9"
+
+LINUX_VERSION ?= "4.9.146"
+SRCREV_machine ?= "bc2342621494c9c1b28ce29110fb95c80a17a1be"
+SRCREV_meta ?= "bae5cc4e973f60baa35ed227ba0c3bdda4d16e87"
+
+LINUX_KERNEL_TYPE = "preempt-rt"
diff --git a/bsp/meta-intel/recipes-kernel/linux/linux-intel.inc b/bsp/meta-intel/recipes-kernel/linux/linux-intel.inc
new file mode 100644
index 00000000..f2ba0d13
--- /dev/null
+++ b/bsp/meta-intel/recipes-kernel/linux/linux-intel.inc
@@ -0,0 +1,25 @@
+require recipes-kernel/linux/linux-yocto.inc
+require recipes-kernel/linux/meta-intel-compat-kernel.inc
+
+FILESEXTRAPATHS_prepend := "${THISDIR}/linux-intel:"
+
+KERNEL_CONFIG_URI ?= "git://git.yoctoproject.org/yocto-kernel-cache;type=kmeta;name=meta;branch=${KMETA_BRANCH};destsuffix=${KMETA}"
+
+SRC_URI = " \
+ git://github.com/intel/linux-intel-lts.git;protocol=https;name=machine;branch=${KBRANCH}; \
+ ${KERNEL_CONFIG_URI} \
+ "
+
+SRC_URI_append_core2-32-intel-common = " file://disable_skylake_sound.cfg"
+
+LINUX_VERSION_EXTENSION ?= "-intel-pk-${LINUX_KERNEL_TYPE}"
+
+PV = "${LINUX_VERSION}+git${SRCPV}"
+
+KMETA = "kernel-meta"
+KCONF_BSP_AUDIT_LEVEL = "2"
+
+COMPATIBLE_MACHINE ?= "(intel-corei7-64|intel-core2-32)"
+
+KERNEL_FEATURES_append = " ${KERNEL_EXTRA_FEATURES}"
+KERNEL_FEATURES_append = " ${@bb.utils.contains("TUNE_FEATURES", "mx32", " cfg/x32.scc", "" ,d)}"
diff --git a/bsp/meta-intel/recipes-kernel/linux/linux-intel/0001-menuconfig-check-lxdiaglog.sh-Allow-specification-of.patch b/bsp/meta-intel/recipes-kernel/linux/linux-intel/0001-menuconfig-check-lxdiaglog.sh-Allow-specification-of.patch
new file mode 100644
index 00000000..a9e9213b
--- /dev/null
+++ b/bsp/meta-intel/recipes-kernel/linux/linux-intel/0001-menuconfig-check-lxdiaglog.sh-Allow-specification-of.patch
@@ -0,0 +1,62 @@
+From e6ebc8e654bba53f28af5229a1069fc74fa58b7b Mon Sep 17 00:00:00 2001
+From: Jason Wessel <jason.wessel@windriver.com>
+Date: Thu, 25 Sep 2014 11:26:49 -0700
+Subject: [PATCH] menuconfig,check-lxdiaglog.sh: Allow specification of ncurses
+ location
+
+In some cross build environments such as the Yocto Project build
+environment it provides an ncurses library that is compiled
+differently than the host's version. This causes display corruption
+problems when the host's curses includes are used instead of the
+includes from the provided compiler are overridden. There is a second
+case where there is no curses libraries at all on the host system and
+menuconfig will just fail entirely.
+
+The solution is simply to allow an override variable in
+check-lxdialog.sh for environments such as the Yocto Project. Adding
+a CROSS_CURSES_LIB and CROSS_CURSES_INC solves the issue and allowing
+compiling and linking against the right headers and libraries.
+
+Upstream-Status: submitted [https://lkml.org/lkml/2013/3/3/103]
+
+Signed-off-by: Jason Wessel <jason.wessel@windriver.com>
+cc: Michal Marek <mmarek@suse.cz>
+cc: linux-kbuild@vger.kernel.org
+Signed-off-by: Bruce Ashfield <bruce.ashfield@windriver.com>
+Signed-off-by: California Sullivan <california.l.sullivan@intel.com>
+---
+ scripts/kconfig/lxdialog/check-lxdialog.sh | 8 ++++++++
+ 1 file changed, 8 insertions(+)
+ mode change 100755 => 100644 scripts/kconfig/lxdialog/check-lxdialog.sh
+
+diff --git a/scripts/kconfig/lxdialog/check-lxdialog.sh b/scripts/kconfig/lxdialog/check-lxdialog.sh
+old mode 100755
+new mode 100644
+index 5075ebf2d3b9..ba9242101190
+--- a/scripts/kconfig/lxdialog/check-lxdialog.sh
++++ b/scripts/kconfig/lxdialog/check-lxdialog.sh
+@@ -4,6 +4,10 @@
+ # What library to link
+ ldflags()
+ {
++ if [ "$CROSS_CURSES_LIB" != "" ]; then
++ echo "$CROSS_CURSES_LIB"
++ exit
++ fi
+ pkg-config --libs ncursesw 2>/dev/null && exit
+ pkg-config --libs ncurses 2>/dev/null && exit
+ for ext in so a dll.a dylib ; do
+@@ -21,6 +25,10 @@ ldflags()
+ # Where is ncurses.h?
+ ccflags()
+ {
++ if [ x"$CROSS_CURSES_INC" != x ]; then
++ echo "$CROSS_CURSES_INC"
++ exit
++ fi
+ if pkg-config --cflags ncursesw 2>/dev/null; then
+ echo '-DCURSES_LOC="<ncurses.h>" -DNCURSES_WIDECHAR=1'
+ elif pkg-config --cflags ncurses 2>/dev/null; then
+--
+2.14.3
+
diff --git a/bsp/meta-intel/recipes-kernel/linux/linux-intel/0001-menuconfig-mconf-cfg-Allow-specification-of-ncurses-.patch b/bsp/meta-intel/recipes-kernel/linux/linux-intel/0001-menuconfig-mconf-cfg-Allow-specification-of-ncurses-.patch
new file mode 100644
index 00000000..3dc71ff2
--- /dev/null
+++ b/bsp/meta-intel/recipes-kernel/linux/linux-intel/0001-menuconfig-mconf-cfg-Allow-specification-of-ncurses-.patch
@@ -0,0 +1,48 @@
+From bebd63730a433ba62549a80114a9851328aa8897 Mon Sep 17 00:00:00 2001
+From: Bruce Ashfield <bruce.ashfield@windriver.com>
+Date: Mon, 2 Jul 2018 23:10:28 -0400
+Subject: [PATCH] menuconfig,mconf-cfg: Allow specification of ncurses location
+
+In some cross build environments such as the Yocto Project build
+environment it provides an ncurses library that is compiled
+differently than the host's version. This causes display corruption
+problems when the host's curses includes are used instead of the
+includes from the provided compiler are overridden. There is a second
+case where there is no curses libraries at all on the host system and
+menuconfig will just fail entirely.
+
+The solution is simply to allow an override variable in
+check-lxdialog.sh for environments such as the Yocto Project. Adding
+a CROSS_CURSES_LIB and CROSS_CURSES_INC solves the issue and allowing
+compiling and linking against the right headers and libraries.
+
+Signed-off-by: Jason Wessel <jason.wessel@windriver.com>
+cc: Michal Marek <mmarek@suse.cz>
+cc: linux-kbuild@vger.kernel.org
+Signed-off-by: Bruce Ashfield <bruce.ashfield@windriver.com>
+---
+ scripts/kconfig/mconf-cfg.sh | 8 ++++++++
+ 1 file changed, 8 insertions(+)
+
+diff --git a/scripts/kconfig/mconf-cfg.sh b/scripts/kconfig/mconf-cfg.sh
+index c812872d7f9d..42d20819025c 100755
+--- a/scripts/kconfig/mconf-cfg.sh
++++ b/scripts/kconfig/mconf-cfg.sh
+@@ -4,6 +4,14 @@
+ PKG="ncursesw"
+ PKG2="ncurses"
+
++if [ "$CROSS_CURSES_LIB" != "" ]; then
++ echo libs=\'$CROSS_CURSES_LIB\'
++ if [ x"$CROSS_CURSES_INC" != x ]; then
++ echo cflags=\'$CROSS_CURSES_INC\'
++ fi
++ exit 0
++fi
++
+ if [ -n "$(command -v pkg-config)" ]; then
+ if pkg-config --exists $PKG; then
+ echo cflags=\"$(pkg-config --cflags $PKG)\"
+--
+2.17.1
+
diff --git a/bsp/meta-intel/recipes-kernel/linux/linux-intel/0001-perf-x86-32-explicitly-include-errno.h.patch b/bsp/meta-intel/recipes-kernel/linux/linux-intel/0001-perf-x86-32-explicitly-include-errno.h.patch
new file mode 100644
index 00000000..5c8b27c7
--- /dev/null
+++ b/bsp/meta-intel/recipes-kernel/linux/linux-intel/0001-perf-x86-32-explicitly-include-errno.h.patch
@@ -0,0 +1,41 @@
+From 57af599929263e7bb6f2f369c9e4bc1e440528a9 Mon Sep 17 00:00:00 2001
+From: Bruce Ashfield <bruce.ashfield@windriver.com>
+Date: Mon, 21 Aug 2017 13:52:53 -0400
+Subject: [PATCH 1/1] perf: x86-32: explicitly include <errno.h>
+
+Upstream-Status: submitted
+
+The 32bit x86 perf build does not find the system definitions of error
+return values, hence we end up with:
+
+| In file included from util/libunwind/x86_32.c:32:0:
+| util/libunwind/../../arch/x86/util/unwind-libunwind.c: In function 'libunwind__x86_reg_id':
+| util/libunwind/../../arch/x86/util/unwind-libunwind.c:109:11: error: 'EINVAL' undeclared (first use in this function); did you mean 'UNW_EINVAL'?
+| return -EINVAL;
+| ^~~~~~
+| UNW_EINVAL
+
+By explicitly including errno.h, we can fix this build without impacting
+other architectures.
+
+Signed-off-by: Bruce Ashfield <bruce.ashfield@windriver.com>
+---
+
+ tools/perf/util/libunwind/x86_32.c | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/tools/perf/util/libunwind/x86_32.c b/tools/perf/util/libunwind/x86_32.c
+index 957ffff72428..d781f7bdeb88 100644
+--- a/tools/perf/util/libunwind/x86_32.c
++++ b/tools/perf/util/libunwind/x86_32.c
+@@ -20,6 +20,7 @@
+ #define LIBUNWIND__ARCH_REG_IP PERF_REG_X86_IP
+ #define LIBUNWIND__ARCH_REG_SP PERF_REG_X86_SP
+
++#include <errno.h>
+ #include "unwind.h"
+ #include "debug.h"
+ #include "libunwind-x86.h"
+--
+2.14.3
+
diff --git a/bsp/meta-intel/recipes-kernel/linux/linux-intel/disable_skylake_sound.cfg b/bsp/meta-intel/recipes-kernel/linux/linux-intel/disable_skylake_sound.cfg
new file mode 100644
index 00000000..b38cf6c2
--- /dev/null
+++ b/bsp/meta-intel/recipes-kernel/linux/linux-intel/disable_skylake_sound.cfg
@@ -0,0 +1,12 @@
+# CONFIG_SND_SOC_INTEL_SKYLAKE is not set
+# CONFIG_SND_SOC_INTEL_BXT_DA7219_MAX98357A_MACH is not set
+# CONFIG_SND_SOC_INTEL_BXT_RT298_MACH is not set
+# CONFIG_SND_SOC_INTEL_BXT_TDF8532_MACH is not set
+# CONFIG_SND_SOC_INTEL_KBL_RT5663_MAX98927_MACH is not set
+# CONFIG_SND_SOC_INTEL_SKL_RT286_MACH is not set
+# CONFIG_SND_SOC_INTEL_CNL_RT274_MACH is not set
+# CONFIG_SND_SOC_INTEL_SKL_NAU88L25_SSM4567_MACH is not set
+# CONFIG_SND_SOC_INTEL_SKL_NAU88L25_MAX98357A_MACH is not set
+# CONFIG_SND_SOC_INTEL_CNL_CS42L42_MACH is not set
+# CONFIG_SND_SOC_INTEL_CNL_RT700_MACH is not set
+# CONFIG_SND_SOC_INTEL_CNL_SVFPGA_MACH is not set
diff --git a/bsp/meta-intel/recipes-kernel/linux/linux-intel_4.14.bb b/bsp/meta-intel/recipes-kernel/linux/linux-intel_4.14.bb
new file mode 100644
index 00000000..cc100fe8
--- /dev/null
+++ b/bsp/meta-intel/recipes-kernel/linux/linux-intel_4.14.bb
@@ -0,0 +1,22 @@
+require linux-intel.inc
+
+KBRANCH = "4.14/base"
+KMETA_BRANCH = "yocto-4.14"
+
+# Fix for 32-bit perf issue. Remove when patch is backported to 4.14.
+SRC_URI_append = " file://0001-perf-x86-32-explicitly-include-errno.h.patch \
+ file://0001-menuconfig-check-lxdiaglog.sh-Allow-specification-of.patch \
+ "
+
+DEPENDS += "elfutils-native openssl-native util-linux-native"
+
+LINUX_VERSION ?= "4.14.110"
+SRCREV_machine ?= "f93147df5d96922347d0a4143ad06ae5d45d1caf"
+SRCREV_meta ?= "bc35d5bd224ab031440a69f9806d839db382f05c"
+
+# For Crystalforest and Romley
+KERNEL_MODULE_AUTOLOAD_append_core2-32-intel-common = " uio"
+KERNEL_MODULE_AUTOLOAD_append_corei7-64-intel-common = " uio"
+
+# Functionality flags
+KERNEL_EXTRA_FEATURES ?= "features/netfilter/netfilter.scc features/security/security.scc"
diff --git a/bsp/meta-intel/recipes-kernel/linux/linux-intel_4.19.bb b/bsp/meta-intel/recipes-kernel/linux/linux-intel_4.19.bb
new file mode 100644
index 00000000..c3f1a9d1
--- /dev/null
+++ b/bsp/meta-intel/recipes-kernel/linux/linux-intel_4.19.bb
@@ -0,0 +1,21 @@
+require linux-intel.inc
+
+KBRANCH = "4.19/base"
+KMETA_BRANCH = "yocto-4.19"
+
+LIC_FILES_CHKSUM = "file://COPYING;md5=bbea815ee2795b2f4230826c0c6b8814"
+
+SRC_URI_append = " file://0001-menuconfig-mconf-cfg-Allow-specification-of-ncurses-.patch"
+
+DEPENDS += "elfutils-native openssl-native util-linux-native"
+
+LINUX_VERSION ?= "4.19.40"
+SRCREV_machine ?= "106e1f78760b7e980a9598098ee45ec0a683c7ed"
+SRCREV_meta ?= "6fface2df8bc35e72aaf3d79352413fd84175879"
+
+# For Crystalforest and Romley
+KERNEL_MODULE_AUTOLOAD_append_core2-32-intel-common = " uio"
+KERNEL_MODULE_AUTOLOAD_append_corei7-64-intel-common = " uio"
+
+# Functionality flags
+KERNEL_EXTRA_FEATURES ?= "features/netfilter/netfilter.scc features/security/security.scc"
diff --git a/bsp/meta-intel/recipes-kernel/linux/linux-intel_4.9.bb b/bsp/meta-intel/recipes-kernel/linux/linux-intel_4.9.bb
new file mode 100644
index 00000000..d1ba3004
--- /dev/null
+++ b/bsp/meta-intel/recipes-kernel/linux/linux-intel_4.9.bb
@@ -0,0 +1,20 @@
+
+require linux-intel.inc
+
+KBRANCH = "4.9/yocto/base"
+KMETA_BRANCH = "yocto-4.9"
+
+SRC_URI_append = " \
+ file://0001-menuconfig-check-lxdiaglog.sh-Allow-specification-of.patch \
+ "
+
+LINUX_VERSION ?= "4.9.183"
+SRCREV_machine ?= "107e98ee74a588750a5a80ffe11f52628295e461"
+SRCREV_meta ?= "f9e90afd4e47920e990dacb73cd6508917ca5422"
+
+# For Crystalforest and Romley
+KERNEL_MODULE_AUTOLOAD_append_core2-32-intel-common = " uio"
+KERNEL_MODULE_AUTOLOAD_append_corei7-64-intel-common = " uio"
+
+# Functionality flags
+KERNEL_EXTRA_FEATURES ?= "features/netfilter/netfilter.scc"
diff --git a/bsp/meta-intel/recipes-kernel/linux/linux-yocto-dev.bbappend b/bsp/meta-intel/recipes-kernel/linux/linux-yocto-dev.bbappend
new file mode 100644
index 00000000..6173148c
--- /dev/null
+++ b/bsp/meta-intel/recipes-kernel/linux/linux-yocto-dev.bbappend
@@ -0,0 +1,21 @@
+FILESEXTRAPATHS_prepend_intel-x86-common := "${THISDIR}/${PN}:"
+
+COMPATIBLE_MACHINE_core2-32-intel-common = "${MACHINE}"
+KMACHINE_core2-32-intel-common = "intel-core2-32"
+KERNEL_FEATURES_append_core2-32-intel-common = "${KERNEL_FEATURES_INTEL_COMMON}"
+
+COMPATIBLE_MACHINE_corei7-64-intel-common = "${MACHINE}"
+KMACHINE_corei7-64-intel-common = "intel-corei7-64"
+KERNEL_FEATURES_append_corei7-64-intel-common = "${KERNEL_FEATURES_INTEL_COMMON}"
+
+# NOTE: We do not set SRCREVs here as -dev is intended to be built with AUTOREV
+# and setting them here breaks the default mechanism to use AUTOREV if the
+# default SRCREV is set and linux-yocto-dev is the preferred provider.
+
+# For Crystalforest and Romley
+KERNEL_MODULE_AUTOLOAD_append_core2-32-intel-common = " uio"
+KERNEL_MODULE_AUTOLOAD_append_corei7-64-intel-common = " uio"
+
+# For FRI2, NUC
+KERNEL_MODULE_AUTOLOAD_append_core2-32-intel-common = " iwlwifi"
+KERNEL_MODULE_AUTOLOAD_append_corei7-64-intel-common = " iwlwifi"
diff --git a/bsp/meta-intel/recipes-kernel/linux/linux-yocto-rt_4.14.bbappend b/bsp/meta-intel/recipes-kernel/linux/linux-yocto-rt_4.14.bbappend
new file mode 100644
index 00000000..daa7dd6b
--- /dev/null
+++ b/bsp/meta-intel/recipes-kernel/linux/linux-yocto-rt_4.14.bbappend
@@ -0,0 +1 @@
+require meta-intel-compat-kernel.inc
diff --git a/bsp/meta-intel/recipes-kernel/linux/linux-yocto-rt_4.18.bbappend b/bsp/meta-intel/recipes-kernel/linux/linux-yocto-rt_4.18.bbappend
new file mode 100644
index 00000000..daa7dd6b
--- /dev/null
+++ b/bsp/meta-intel/recipes-kernel/linux/linux-yocto-rt_4.18.bbappend
@@ -0,0 +1 @@
+require meta-intel-compat-kernel.inc
diff --git a/bsp/meta-intel/recipes-kernel/linux/linux-yocto_%.bbappend b/bsp/meta-intel/recipes-kernel/linux/linux-yocto_%.bbappend
new file mode 100644
index 00000000..7c29be14
--- /dev/null
+++ b/bsp/meta-intel/recipes-kernel/linux/linux-yocto_%.bbappend
@@ -0,0 +1,4 @@
+# The kernel build is 64-bit regardless, so include both common overrides.
+# Without this, the kernel will be missing vars that make it buildable for the
+# intel-corei7-64 machine.
+MACHINEOVERRIDES_prepend_corei7-64-x32-intel-common = "corei7-64-intel-common:"
diff --git a/bsp/meta-intel/recipes-kernel/linux/linux-yocto_4.14.bbappend b/bsp/meta-intel/recipes-kernel/linux/linux-yocto_4.14.bbappend
new file mode 100644
index 00000000..daa7dd6b
--- /dev/null
+++ b/bsp/meta-intel/recipes-kernel/linux/linux-yocto_4.14.bbappend
@@ -0,0 +1 @@
+require meta-intel-compat-kernel.inc
diff --git a/bsp/meta-intel/recipes-kernel/linux/linux-yocto_4.18.bbappend b/bsp/meta-intel/recipes-kernel/linux/linux-yocto_4.18.bbappend
new file mode 100644
index 00000000..daa7dd6b
--- /dev/null
+++ b/bsp/meta-intel/recipes-kernel/linux/linux-yocto_4.18.bbappend
@@ -0,0 +1 @@
+require meta-intel-compat-kernel.inc
diff --git a/bsp/meta-intel/recipes-kernel/linux/meta-intel-compat-kernel.inc b/bsp/meta-intel/recipes-kernel/linux/meta-intel-compat-kernel.inc
new file mode 100644
index 00000000..be5056c2
--- /dev/null
+++ b/bsp/meta-intel/recipes-kernel/linux/meta-intel-compat-kernel.inc
@@ -0,0 +1,13 @@
+# These are variables that should be added to any
+# kernel compatible with meta-intel
+
+KERNEL_FEATURES_INTEL_COMMON ?= ""
+
+COMPATIBLE_MACHINE_intel-x86-common = "${MACHINE}"
+KERNEL_FEATURES_intel-x86-common = "${KERNEL_FEATURES_INTEL_COMMON}"
+
+KMACHINE_corei7-64-intel-common = "intel-corei7-64"
+KMACHINE_core2-32-intel-common = "intel-core2-32"
+
+INTEL_COMMON_AUTOLOAD ?= " uio iwlwifi i915"
+KERNEL_MODULE_AUTOLOAD_intel-x86-common = " ${INTEL_COMMON_AUTOLOAD}"
diff --git a/bsp/meta-intel/recipes-kernel/lttng/lttng-modules/0002-lttng-modules-PKT-4.9-yocto-build-failed.patch b/bsp/meta-intel/recipes-kernel/lttng/lttng-modules/0002-lttng-modules-PKT-4.9-yocto-build-failed.patch
new file mode 100644
index 00000000..32b49b8d
--- /dev/null
+++ b/bsp/meta-intel/recipes-kernel/lttng/lttng-modules/0002-lttng-modules-PKT-4.9-yocto-build-failed.patch
@@ -0,0 +1,38 @@
+From ebfdc8b8af17f9cf23c6878eb52476fde7b48e5c Mon Sep 17 00:00:00 2001
+From: Priyalee Kushwaha <priyalee.kushwaha@intel.com>
+Date: Fri, 22 Sep 2017 14:40:57 -0700
+Subject: [PATCH] lttng-modules: PKT 4.9 yocto build failed
+
+PKT 4.9 yocto kernel backports a patch from upstream and that
+changes header include/linux/ktimer.h. Since this backported
+patch is only relevant for PKT kernel, we need to carry this
+patch.
+
+Upstream-Status: Backport
+Signed-off-by: Kushwaha, Priyalee <priyalee.kushwaha@intel.com>
+---
+ instrumentation/events/lttng-module/timer.h | 6 +++---
+ 1 file changed, 3 insertions(+), 3 deletions(-)
+
+diff --git a/instrumentation/events/lttng-module/timer.h b/instrumentation/events/lttng-module/timer.h
+index d62fd25..59da988 100644
+--- a/instrumentation/events/lttng-module/timer.h
++++ b/instrumentation/events/lttng-module/timer.h
+@@ -16,11 +16,11 @@ struct timer_list;
+
+ #endif /* _TRACE_TIMER_DEF_ */
+
+-#if (LINUX_VERSION_CODE >= KERNEL_VERSION(4,10,0))
++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(4,9,0))
+ #define lttng_ktime_get_tv64(kt) (kt)
+-#else /* #if (LINUX_VERSION_CODE >= KERNEL_VERSION(4,10,0)) */
++#else /* #if (LINUX_VERSION_CODE >= KERNEL_VERSION(4,9,0)) */
+ #define lttng_ktime_get_tv64(kt) ((kt).tv64)
+-#endif /* #else #if (LINUX_VERSION_CODE >= KERNEL_VERSION(4,10,0)) */
++#endif /* #else #if (LINUX_VERSION_CODE >= KERNEL_VERSION(4,9,0)) */
+
+ LTTNG_TRACEPOINT_EVENT_CLASS(timer_class,
+
+--
+2.7.4
+
diff --git a/bsp/meta-intel/recipes-kernel/lttng/lttng-modules_%.bbappend b/bsp/meta-intel/recipes-kernel/lttng/lttng-modules_%.bbappend
new file mode 100644
index 00000000..dc1c4a74
--- /dev/null
+++ b/bsp/meta-intel/recipes-kernel/lttng/lttng-modules_%.bbappend
@@ -0,0 +1,7 @@
+FILESEXTRAPATHS_prepend_intel-x86-common := "${THISDIR}/${PN}:"
+
+
+LTTNG_PATCH = "${@bb.utils.contains_any('PREFERRED_PROVIDER_virtual/kernel','linux-intel linux-intel-rt','file://0002-lttng-modules-PKT-4.9-yocto-build-failed.patch','',d)}"
+
+SRC_URI_append_intel-x86-common = " ${LTTNG_PATCH}"
+
diff --git a/bsp/meta-intel/recipes-multimedia/libva/intel-vaapi-driver_2.2.0.bb b/bsp/meta-intel/recipes-multimedia/libva/intel-vaapi-driver_2.2.0.bb
new file mode 100644
index 00000000..9036f74e
--- /dev/null
+++ b/bsp/meta-intel/recipes-multimedia/libva/intel-vaapi-driver_2.2.0.bb
@@ -0,0 +1,33 @@
+SUMMARY = "VA driver for Intel G45 & HD Graphics family"
+DESCRIPTION = "intel-vaapi-driver is the VA-API implementation \
+for Intel G45 chipsets and Intel HD Graphics for Intel Core \
+processor family."
+
+HOMEPAGE = "https://github.com/intel/intel-vaapi-driver"
+BUGTRACKER = "https://github.com/intel/intel-vaapi-driver/issues"
+
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://COPYING;md5=2e48940f94acb0af582e5ef03537800f"
+
+COMPATIBLE_HOST = '(i.86|x86_64).*-linux'
+
+DEPENDS = "libva libdrm"
+
+SRC_URI = "https://github.com/intel/${BPN}/releases/download/${PV}/${BPN}-${PV}.tar.bz2"
+SRC_URI[md5sum] = "e296c52fa1cb5c3d53a6cc994ce0a66c"
+SRC_URI[sha256sum] = "e8a5f54694eb76aad42653b591030b8a53b1513144c09a80defb3d8d8c875c18"
+
+UPSTREAM_CHECK_URI = "https://github.com/intel/intel-vaapi-driver/releases"
+
+inherit autotools pkgconfig distro_features_check
+
+REQUIRED_DISTRO_FEATURES = "opengl"
+
+PACKAGECONFIG ??= "${@bb.utils.contains("DISTRO_FEATURES", "x11", "x11", "", d)} \
+ ${@bb.utils.contains("DISTRO_FEATURES", "opengl wayland", "wayland", "", d)}"
+PACKAGECONFIG[x11] = "--enable-x11,--disable-x11"
+PACKAGECONFIG[wayland] = "--enable-wayland,--disable-wayland,wayland wayland-native virtual/egl"
+
+FILES_${PN} += "${libdir}/dri/*.so"
+FILES_${PN}-dev += "${libdir}/dri/*.la"
+FILES_${PN}-dbg += "${libdir}/dri/.debug"
diff --git a/bsp/meta-intel/recipes-multimedia/libyami/libyami-utils/0001-Fix-build-with-clang.patch b/bsp/meta-intel/recipes-multimedia/libyami/libyami-utils/0001-Fix-build-with-clang.patch
new file mode 100644
index 00000000..f7de9d16
--- /dev/null
+++ b/bsp/meta-intel/recipes-multimedia/libyami/libyami-utils/0001-Fix-build-with-clang.patch
@@ -0,0 +1,96 @@
+From f2e6d2ecfea635ab952649156e31ca893d4b1a47 Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Sat, 12 Aug 2017 08:49:20 -0700
+Subject: [PATCH] Fix build with clang
+
+Fix errors e.g.
+error: 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]
+
+and
+
+psnr.cpp:225:17: error: bool literal returned from 'main' [-Werror,-Wmain]
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+Upstream-Status: Pending
+
+---
+ tests/decodehelp.cpp | 2 +-
+ tests/encodehelp.h | 2 +-
+ tests/vpp.cpp | 2 +-
+ tests/yamitranscode.cpp | 2 +-
+ testscripts/psnr.cpp | 4 ++--
+ 5 files changed, 6 insertions(+), 6 deletions(-)
+
+diff --git a/tests/decodehelp.cpp b/tests/decodehelp.cpp
+index b27b977..62cca63 100644
+--- a/tests/decodehelp.cpp
++++ b/tests/decodehelp.cpp
+@@ -81,7 +81,7 @@ bool processCmdLine(int argc, char** argv, DecodeParameter* parameters)
+ { NULL, no_argument, NULL, 0 }
+ };
+
+- char opt;
++ int opt;
+ while ((opt = getopt_long_only(argc, argv, "h:m:n:i:f:o:w:?", long_opts,&option_index)) != -1){
+ switch (opt) {
+ case 'h':
+diff --git a/tests/encodehelp.h b/tests/encodehelp.h
+index 63580a4..651ec08 100644
+--- a/tests/encodehelp.h
++++ b/tests/encodehelp.h
+@@ -109,7 +109,7 @@ static VideoRateControl string_to_rc_mode(char *str)
+
+ static bool process_cmdline(int argc, char *argv[])
+ {
+- char opt;
++ int opt;
+ const struct option long_opts[] = {
+ { "help", no_argument, NULL, 'h' },
+ { "qp", required_argument, NULL, 0 },
+diff --git a/tests/vpp.cpp b/tests/vpp.cpp
+index 5a60c0a..52da43b 100644
+--- a/tests/vpp.cpp
++++ b/tests/vpp.cpp
+@@ -151,7 +151,7 @@ public:
+ private:
+ bool processCmdLine(int argc, char* argv[])
+ {
+- char opt;
++ int opt;
+ const struct option long_opts[] = {
+ { "help", no_argument, NULL, 'h' },
+ { "sharpening", required_argument, NULL, 's' },
+diff --git a/tests/yamitranscode.cpp b/tests/yamitranscode.cpp
+index 6207209..00164ce 100755
+--- a/tests/yamitranscode.cpp
++++ b/tests/yamitranscode.cpp
+@@ -100,7 +100,7 @@ static VideoRateControl string_to_rc_mode(char *str)
+
+ static bool processCmdLine(int argc, char *argv[], TranscodeParams& para)
+ {
+- char opt;
++ int opt;
+ const struct option long_opts[] = {
+ { "help", no_argument, NULL, 'h' },
+ { "qp", required_argument, NULL, 0 },
+diff --git a/testscripts/psnr.cpp b/testscripts/psnr.cpp
+index 5cc24c9..68bd668 100644
+--- a/testscripts/psnr.cpp
++++ b/testscripts/psnr.cpp
+@@ -215,14 +215,14 @@ int main(int argc, char *argv[])
+ const char* psnrresult = "average_psnr.txt";
+ int width=0,height=0;
+ int standardpsnr = NORMAL_PSNR;
+- char opt;
++ int opt;
+ while ((opt = getopt(argc, argv, "h:W:H:i:o:s:?")) != -1)
+ {
+ switch (opt) {
+ case 'h':
+ case '?':
+ print_help(argv[0]);
+- return false;
++ return -1;
+ case 'i':
+ filename1 = optarg;
+ break;
diff --git a/bsp/meta-intel/recipes-multimedia/libyami/libyami-utils_1.3.1.bb b/bsp/meta-intel/recipes-multimedia/libyami/libyami-utils_1.3.1.bb
new file mode 100644
index 00000000..ab1b83aa
--- /dev/null
+++ b/bsp/meta-intel/recipes-multimedia/libyami/libyami-utils_1.3.1.bb
@@ -0,0 +1,26 @@
+SUMMARY = "Applications and Scripts for libyami."
+DESCRIPTION = "Applications and Scripts for libyami."
+
+HOMEPAGE = "https://github.com/intel/libyami-utils"
+BUGTRACKER = "https://github.com/intel/libyami-utils/issues/new"
+
+LICENSE = "Apache-2.0"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=e3fc50a88d0a364313df4b21ef20c29e"
+
+SRC_URI = "git://github.com/intel/libyami-utils.git \
+ file://0001-Fix-build-with-clang.patch \
+ "
+SRCREV = "7e801b5cc3066b176c2dccffda0af8d762184650"
+S = "${WORKDIR}/git"
+
+DEPENDS = "libva libyami"
+
+inherit autotools pkgconfig distro_features_check
+
+REQUIRED_DISTRO_FEATURES = "opengl"
+
+PACKAGECONFIG = "${@bb.utils.filter('DISTRO_FEATURES', 'x11', d)}"
+
+# --enable-x11 needs libva-x11
+# gles-tests fail to build without x11: see https://github.com/intel/libyami-utils/issues/91
+PACKAGECONFIG[x11] = "--enable-x11 --enable-egl,--disable-x11 --disable-egl, virtual/libx11"
diff --git a/bsp/meta-intel/recipes-multimedia/libyami/libyami/0001-bitWriter.cpp-Delete-unused-CACHEBYTES.patch b/bsp/meta-intel/recipes-multimedia/libyami/libyami/0001-bitWriter.cpp-Delete-unused-CACHEBYTES.patch
new file mode 100644
index 00000000..a96c9b85
--- /dev/null
+++ b/bsp/meta-intel/recipes-multimedia/libyami/libyami/0001-bitWriter.cpp-Delete-unused-CACHEBYTES.patch
@@ -0,0 +1,27 @@
+From 294874b610a5b8af9b736b3afc938010af58785e Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Fri, 11 Aug 2017 17:15:45 -0700
+Subject: [PATCH 1/9] bitWriter.cpp: Delete unused CACHEBYTES
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+Upstream-Status: Pending
+
+ codecparsers/bitWriter.cpp | 1 -
+ 1 file changed, 1 deletion(-)
+
+diff --git a/codecparsers/bitWriter.cpp b/codecparsers/bitWriter.cpp
+index 9bcb14d..08469bf 100644
+--- a/codecparsers/bitWriter.cpp
++++ b/codecparsers/bitWriter.cpp
+@@ -24,7 +24,6 @@
+
+ namespace YamiParser {
+
+-const uint32_t CACHEBYTES = sizeof(unsigned long int);
+ const uint32_t CACHEBITS = sizeof(unsigned long int) * 8;
+
+ // clip to keep lowest n bits
+--
+2.14.1
+
diff --git a/bsp/meta-intel/recipes-multimedia/libyami/libyami/0002-typecast-index-from-size_t-to-int.patch b/bsp/meta-intel/recipes-multimedia/libyami/libyami/0002-typecast-index-from-size_t-to-int.patch
new file mode 100644
index 00000000..a216566c
--- /dev/null
+++ b/bsp/meta-intel/recipes-multimedia/libyami/libyami/0002-typecast-index-from-size_t-to-int.patch
@@ -0,0 +1,42 @@
+From 88fa048e22ad00b04054b8a64df53bd440e01537 Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Fri, 11 Aug 2017 17:29:02 -0700
+Subject: [PATCH 2/9] typecast index from size_t to int
+
+size_t is not consistent across architectures e.g. on arm its unsigned int
+
+Fixes
+error: comparison of unsigned expression < 0 is always false [-Werror,-Wtautological-compare]
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+Upstream-Status: Pending
+
+ codecparsers/jpegParser.cpp | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/codecparsers/jpegParser.cpp b/codecparsers/jpegParser.cpp
+index 2217028..6da5c36 100644
+--- a/codecparsers/jpegParser.cpp
++++ b/codecparsers/jpegParser.cpp
+@@ -639,7 +639,7 @@ bool Parser::parseDAC()
+
+ length -= 2;
+
+- if (index < 0 || index >= (2 * NUM_ARITH_TBLS)) {
++ if ((int)index < 0 || index >= (2 * NUM_ARITH_TBLS)) {
+ ERROR("Invalid DAC Index");
+ return false;
+ }
+@@ -747,7 +747,7 @@ bool Parser::parseDHT()
+ huffTables = &m_dcHuffTables;
+ }
+
+- if (index < 0 || index >= NUM_HUFF_TBLS) {
++ if ((int)index < 0 || index >= NUM_HUFF_TBLS) {
+ ERROR("Bad Huff Table Index");
+ return false;
+ }
+--
+2.14.1
+
diff --git a/bsp/meta-intel/recipes-multimedia/libyami/libyami/0003-Add-Wno-invalid-offsetof-to-compiler-commandline.patch b/bsp/meta-intel/recipes-multimedia/libyami/libyami/0003-Add-Wno-invalid-offsetof-to-compiler-commandline.patch
new file mode 100644
index 00000000..17289602
--- /dev/null
+++ b/bsp/meta-intel/recipes-multimedia/libyami/libyami/0003-Add-Wno-invalid-offsetof-to-compiler-commandline.patch
@@ -0,0 +1,29 @@
+From 533d63287e9dd8f269b137c18fbe6c19206c8668 Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Fri, 11 Aug 2017 17:49:43 -0700
+Subject: [PATCH 3/9] Add -Wno-invalid-offsetof to compiler commandline
+
+clang++ is fussy about offsetof on non-POD types
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+Upstream-Status: Pending
+
+ codecparsers/Makefile.am | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/codecparsers/Makefile.am b/codecparsers/Makefile.am
+index 720bf81..d9226b3 100644
+--- a/codecparsers/Makefile.am
++++ b/codecparsers/Makefile.am
+@@ -118,6 +118,7 @@ libyami_codecparser_cppflags = \
+ -Dvp8dx_start_decode=libyami_vp8dx_start_decode \
+ -Dvp8dx_bool_decoder_fill=libyami_vp8dx_bool_decoder_fill \
+ -I$(top_srcdir)/interface \
++ -Wno-invalid-offsetof \
+ $(extra_includes) \
+ $(NULL)
+
+--
+2.14.1
+
diff --git a/bsp/meta-intel/recipes-multimedia/libyami/libyami/0004-Typecast-POWER32SUB2-to-uint8_t.patch b/bsp/meta-intel/recipes-multimedia/libyami/libyami/0004-Typecast-POWER32SUB2-to-uint8_t.patch
new file mode 100644
index 00000000..27eca39b
--- /dev/null
+++ b/bsp/meta-intel/recipes-multimedia/libyami/libyami/0004-Typecast-POWER32SUB2-to-uint8_t.patch
@@ -0,0 +1,33 @@
+From d9c831ee38da4551396fad5cd53c3dfc0e5e0cf8 Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Fri, 11 Aug 2017 17:57:34 -0700
+Subject: [PATCH 4/9] Typecast POWER32SUB2 to uint8_t
+
+Fixes
+
+h265Parser.cpp:1064:5: error: comparison of constant 4294967294 with expression
+of type 'uint8_t' (aka 'unsigned char') is always false [-Werror,-Wtautological-constant-out-of-range-compare]
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+Upstream-Status: Pending
+
+ codecparsers/h265Parser.cpp | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/codecparsers/h265Parser.cpp b/codecparsers/h265Parser.cpp
+index 0dea3a6..c6cded2 100644
+--- a/codecparsers/h265Parser.cpp
++++ b/codecparsers/h265Parser.cpp
+@@ -125,7 +125,7 @@ namespace H265 {
+ \
+ CHECK_READ_UE(var->var##_max_num_reorder_pics[i], 0, var->var##_max_dec_pic_buffering_minus1[i]); \
+ \
+- CHECK_READ_UE(var->var##_max_latency_increase_plus1[i], 0, POWER32SUB2); \
++ CHECK_READ_UE(var->var##_max_latency_increase_plus1[i], 0, (uint8_t)POWER32SUB2); \
+ } \
+ }
+
+--
+2.14.1
+
diff --git a/bsp/meta-intel/recipes-multimedia/libyami/libyami/0006-Avoid-namespace-conflicts-by-adding-explicit-using-n.patch b/bsp/meta-intel/recipes-multimedia/libyami/libyami/0006-Avoid-namespace-conflicts-by-adding-explicit-using-n.patch
new file mode 100644
index 00000000..c9c74520
--- /dev/null
+++ b/bsp/meta-intel/recipes-multimedia/libyami/libyami/0006-Avoid-namespace-conflicts-by-adding-explicit-using-n.patch
@@ -0,0 +1,41 @@
+From 27b61f5ab1b1643436f56517e4980734b4b9acca Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Fri, 11 Aug 2017 18:38:05 -0700
+Subject: [PATCH 6/9] Avoid namespace conflicts by adding explicit using
+ <namespace>
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+Upstream-Status: Pending
+
+ decoder/vaapidecoder_h264.h | 1 +
+ decoder/vaapidecoder_h265.h | 1 +
+ 2 files changed, 2 insertions(+)
+
+diff --git a/decoder/vaapidecoder_h264.h b/decoder/vaapidecoder_h264.h
+index 57e2c27..ea5c2f2 100644
+--- a/decoder/vaapidecoder_h264.h
++++ b/decoder/vaapidecoder_h264.h
+@@ -30,6 +30,7 @@ namespace YamiMediaCodec {
+
+ class VaapiDecPictureH264;
+ class VaapiDecoderH264 : public VaapiDecoderBase {
++using YamiMediaCodec::VaapiDecoderBase::createPicture;
+ public:
+ typedef SharedPtr<VaapiDecPictureH264> PicturePtr;
+ typedef std::vector<PicturePtr> RefSet;
+diff --git a/decoder/vaapidecoder_h265.h b/decoder/vaapidecoder_h265.h
+index f7e2303..159e25f 100644
+--- a/decoder/vaapidecoder_h265.h
++++ b/decoder/vaapidecoder_h265.h
+@@ -38,6 +38,7 @@ namespace YamiMediaCodec {
+
+ class VaapiDecPictureH265;
+ class VaapiDecoderH265:public VaapiDecoderBase {
++ using YamiMediaCodec::VaapiDecoderBase::createPicture;
+ typedef YamiParser::H265::SPS SPS;
+ typedef YamiParser::H265::SliceHeader SliceHeader;
+ typedef YamiParser::H265::NalUnit NalUnit;
+--
+2.14.1
+
diff --git a/bsp/meta-intel/recipes-multimedia/libyami/libyami/0007-Delete-unused-variables.patch b/bsp/meta-intel/recipes-multimedia/libyami/libyami/0007-Delete-unused-variables.patch
new file mode 100644
index 00000000..b80774c9
--- /dev/null
+++ b/bsp/meta-intel/recipes-multimedia/libyami/libyami/0007-Delete-unused-variables.patch
@@ -0,0 +1,36 @@
+From b982997c96e11b9c0b3cd58a31af2d0a219713a3 Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Fri, 11 Aug 2017 18:39:58 -0700
+Subject: [PATCH 7/9] Delete unused variables
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+Upstream-Status: Pending
+
+ decoder/vaapidecoder_vp8.cpp | 8 ++++----
+ 1 file changed, 4 insertions(+), 4 deletions(-)
+
+diff --git a/decoder/vaapidecoder_vp8.cpp b/decoder/vaapidecoder_vp8.cpp
+index 5fc89ec..ff5b896 100644
+--- a/decoder/vaapidecoder_vp8.cpp
++++ b/decoder/vaapidecoder_vp8.cpp
+@@ -32,12 +32,12 @@ typedef VaapiDecoderVP8::PicturePtr PicturePtr;
+
+ // the following parameter apply to Intra-Predicted Macroblocks,
+ // $11.2 $11.4: key frame default probs
+-static const uint8_t keyFrameYModeProbs[4] = { 145, 156, 163, 128 };
+-static const uint8_t keyFrameUVModeProbs[3] = { 142, 114, 183 };
++//static const uint8_t keyFrameYModeProbs[4] = { 145, 156, 163, 128 };
++//static const uint8_t keyFrameUVModeProbs[3] = { 142, 114, 183 };
+
+ // $16.1: non-key frame default probs
+-static const uint8_t nonKeyFrameDefaultYModeProbs[4] = { 112, 86, 140, 37 };
+-static const uint8_t nonKeyFrameDefaultUVModeProbs[3] = { 162, 101, 204 };
++//static const uint8_t nonKeyFrameDefaultYModeProbs[4] = { 112, 86, 140, 37 };
++//static const uint8_t nonKeyFrameDefaultUVModeProbs[3] = { 162, 101, 204 };
+
+ static const uint32_t surfaceNumVP8 = 3;
+
+--
+2.14.1
+
diff --git a/bsp/meta-intel/recipes-multimedia/libyami/libyami/0008-NalUnit-is-declared-in-different-namespace.patch b/bsp/meta-intel/recipes-multimedia/libyami/libyami/0008-NalUnit-is-declared-in-different-namespace.patch
new file mode 100644
index 00000000..18b98be8
--- /dev/null
+++ b/bsp/meta-intel/recipes-multimedia/libyami/libyami/0008-NalUnit-is-declared-in-different-namespace.patch
@@ -0,0 +1,31 @@
+From c54130511c91e457f1c5bb47729f5e3a0fc0cb91 Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Fri, 11 Aug 2017 18:42:28 -0700
+Subject: [PATCH 8/9] NalUnit is declared in different namespace
+
+Fixes
+vaapidecoder_h265.h:32:5: error: struct 'NalUnit' was previously declared as a class [-Werror,-Wmismatched-tags] struct NalUnit;
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+Upstream-Status: Pending
+
+ decoder/vaapidecoder_h265.h | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/decoder/vaapidecoder_h265.h b/decoder/vaapidecoder_h265.h
+index 159e25f..674638f 100644
+--- a/decoder/vaapidecoder_h265.h
++++ b/decoder/vaapidecoder_h265.h
+@@ -29,7 +29,7 @@ namespace YamiParser {
+ namespace H265 {
+ struct SPS;
+ struct SliceHeader;
+- struct NalUnit;
++ class NalUnit;
+ class Parser;
+ };
+ };
+--
+2.14.1
+
diff --git a/bsp/meta-intel/recipes-multimedia/libyami/libyami/0009-Fix-clang-warnings.patch b/bsp/meta-intel/recipes-multimedia/libyami/libyami/0009-Fix-clang-warnings.patch
new file mode 100644
index 00000000..08ef455b
--- /dev/null
+++ b/bsp/meta-intel/recipes-multimedia/libyami/libyami/0009-Fix-clang-warnings.patch
@@ -0,0 +1,37 @@
+From a54dc7b6a777882f55a3f31bd97748a261db03d2 Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Fri, 11 Aug 2017 18:53:06 -0700
+Subject: [PATCH 9/9] Fix clang warnings
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+Upstream-Status: Pending
+
+ encoder/vaapiencoder_h264.cpp | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/encoder/vaapiencoder_h264.cpp b/encoder/vaapiencoder_h264.cpp
+index 98bc2ed..94015cb 100644
+--- a/encoder/vaapiencoder_h264.cpp
++++ b/encoder/vaapiencoder_h264.cpp
+@@ -509,7 +509,7 @@ bit_writer_write_sps(BitWriter* bitwriter,
+ }
+ /* vcl_hrd_parameters_present_flag */
+ bitwriter->writeBits(0, 1);
+- if (nal_hrd_parameters_present_flag || 0/*vcl_hrd_parameters_present_flag*/) {
++ if (nal_hrd_parameters_present_flag || !!(0)/*vcl_hrd_parameters_present_flag*/) {
+ /* low_delay_hrd_flag */
+ bitwriter->writeBits(0, 1);
+ }
+@@ -1889,7 +1889,7 @@ bool VaapiEncoderH264::addSliceHeaders (const PicturePtr& picture) const
+ sliceParam->num_macroblocks = curSliceMbs;
+ sliceParam->macroblock_info = VA_INVALID_ID;
+ sliceParam->slice_type = h264_get_slice_type (picture->m_type);
+- assert (sliceParam->slice_type != -1);
++ assert ((int)sliceParam->slice_type != -1);
+ sliceParam->idr_pic_id = m_idrNum;
+ sliceParam->pic_order_cnt_lsb = picture->m_poc % m_maxPicOrderCnt;
+
+--
+2.14.1
+
diff --git a/bsp/meta-intel/recipes-multimedia/libyami/libyami_1.3.1.bb b/bsp/meta-intel/recipes-multimedia/libyami/libyami_1.3.1.bb
new file mode 100644
index 00000000..58895c81
--- /dev/null
+++ b/bsp/meta-intel/recipes-multimedia/libyami/libyami_1.3.1.bb
@@ -0,0 +1,30 @@
+SUMMARY = "Yami is media infrastructure base on libva"
+DESCRIPTION = "Yet Another Media Infrastructure \
+light weight hardware codec library base on VA-API "
+
+HOMEPAGE = "https://github.com/intel/libyami"
+BUGTRACKER = "https://github.com/intel/libyami/issues/new"
+
+LICENSE = "Apache-2.0"
+LIC_FILES_CHKSUM = "file://LICENSE.md;md5=3b83ef96387f14655fc854ddc3c6bd57"
+
+SRC_URI = "git://github.com/intel/libyami.git;branch=apache \
+ file://0001-bitWriter.cpp-Delete-unused-CACHEBYTES.patch \
+ file://0002-typecast-index-from-size_t-to-int.patch \
+ file://0003-Add-Wno-invalid-offsetof-to-compiler-commandline.patch \
+ file://0004-Typecast-POWER32SUB2-to-uint8_t.patch \
+ file://0006-Avoid-namespace-conflicts-by-adding-explicit-using-n.patch \
+ file://0007-Delete-unused-variables.patch \
+ file://0008-NalUnit-is-declared-in-different-namespace.patch \
+ file://0009-Fix-clang-warnings.patch \
+"
+SRCREV = "fb48083de91f837ddbf599dd4b5ad1eb1239e1cf"
+S = "${WORKDIR}/git"
+
+PACKAGECONFIG ??= "${@bb.utils.contains("DISTRO_FEATURES", "x11", "x11", "", d)}"
+PACKAGECONFIG[x11] = "--enable-x11,--disable-x11,virtual/libx11 libxrandr libxrender"
+
+DEPENDS = "libva"
+inherit autotools pkgconfig distro_features_check
+
+REQUIRED_DISTRO_FEATURES = "opengl"
diff --git a/bsp/meta-intel/recipes-rt/images/core-image-rt-sdk.bb b/bsp/meta-intel/recipes-rt/images/core-image-rt-sdk.bb
new file mode 100644
index 00000000..920c4cee
--- /dev/null
+++ b/bsp/meta-intel/recipes-rt/images/core-image-rt-sdk.bb
@@ -0,0 +1,20 @@
+require recipes-core/images/core-image-minimal.bb
+
+# Skip processing of this recipe if linux-intel-rt is not explicitly specified as the
+# PREFERRED_PROVIDER for virtual/kernel. This avoids errors when trying
+# to build multiple virtual/kernel providers.
+python () {
+ if d.getVar("PREFERRED_PROVIDER_virtual/kernel") != "linux-intel-rt":
+ raise bb.parse.SkipPackage("Set PREFERRED_PROVIDER_virtual/kernel to linux-intel-rt to enable it")
+}
+
+DESCRIPTION = "Small image capable of booting a device with a test suite and \
+tools for real-time use. It includes the full meta-toolchain, development \
+headers and libraries to form a standalone SDK."
+DEPENDS += "linux-intel-rt"
+
+IMAGE_FEATURES += "dev-pkgs tools-sdk tools-debug eclipse-debug tools-profile tools-testapps debug-tweaks"
+
+IMAGE_INSTALL += "rt-tests hwlatdetect kernel-dev"
+
+LICENSE = "MIT"
diff --git a/bsp/meta-intel/recipes-rt/images/core-image-rt.bb b/bsp/meta-intel/recipes-rt/images/core-image-rt.bb
new file mode 100644
index 00000000..1578c9e6
--- /dev/null
+++ b/bsp/meta-intel/recipes-rt/images/core-image-rt.bb
@@ -0,0 +1,17 @@
+require recipes-core/images/core-image-minimal.bb
+
+# Skip processing of this recipe if linux-intel-rt is not explicitly specified as the
+# PREFERRED_PROVIDER for virtual/kernel. This avoids errors when trying
+# to build multiple virtual/kernel providers.
+python () {
+ if d.getVar("PREFERRED_PROVIDER_virtual/kernel") != "linux-intel-rt":
+ raise bb.parse.SkipPackage("Set PREFERRED_PROVIDER_virtual/kernel to linux-intel-rt to enable it")
+}
+
+DESCRIPTION = "A small image just capable of allowing a device to boot plus a \
+real-time test suite and tools appropriate for real-time use."
+DEPENDS += "linux-intel-rt"
+
+IMAGE_INSTALL += "rt-tests hwlatdetect"
+
+LICENSE = "MIT"
diff --git a/bsp/meta-intel/recipes-selftest/images/files/incorrect.crt b/bsp/meta-intel/recipes-selftest/images/files/incorrect.crt
new file mode 100644
index 00000000..3a2411ab
--- /dev/null
+++ b/bsp/meta-intel/recipes-selftest/images/files/incorrect.crt
@@ -0,0 +1,19 @@
+-----BEGIN CERTIFICATE-----
+MIIDCTCCAfGgAwIBAgIJAIYXAHv3cQNjMA0GCSqGSIb3DQEBCwUAMBsxGTAXBgNV
+BAMMEFRlc3QgWW9jdG8gdGhpbmcwHhcNMTcwMTI1MjI1MjI3WhcNMTgwMTI1MjI1
+MjI3WjAbMRkwFwYDVQQDDBBUZXN0IFlvY3RvIHRoaW5nMIIBIjANBgkqhkiG9w0B
+AQEFAAOCAQ8AMIIBCgKCAQEAukI2ioMeL8qaXxMtryonAT51w+Zre0wB8bDBPuXD
+SwDVXNWfiKKTfCVEkLEUnsUEd7jiKswCT5orTwCD7aQK0mTrkAWEi8hEI3MkNoeh
+T51gkuTfv7A/HgPkhhlU4UQqipI6XoLf7o7PUV33ZfB43//iKY2kLBdsFvs4ALWE
+31hLOkCFb+nqMnfZxq7DgvBwIdxJdLQvaskpDMfkna+zE3QWqkH5v55atW8Bunwk
+/6q5kqNhyrjZb4i0BqJ5AHFUEQzlDcjpyFVUtR14r0IxjBFMHZXrx4uLe7KvGf/4
+GqpqeFOPqxMsfC5ILJJ7nvwFViqftGgtWg/12bKMTB5saQIDAQABo1AwTjAdBgNV
+HQ4EFgQURA8KbgpiGfS2+7MT0H5AvpxeYLowHwYDVR0jBBgwFoAURA8KbgpiGfS2
++7MT0H5AvpxeYLowDAYDVR0TBAUwAwEB/zANBgkqhkiG9w0BAQsFAAOCAQEAK9n+
+9T+hlM2kEpsUgtyihEJbGHzbw+Pj11b0ICntCVuPKewtBMveYp8lejrQwMFNGRMt
+ZQe1LFb9HcLeM3MLUz9Lm4BJIjkey3Jfq1AskROYk/bJnFIJIx6P3U9gBa20P46X
+LH3g6yub1HR7KZC9nfBsak3FPoJR/SYTJs0HsMeL4878+2IbETA4BL0kbKW48FFW
+jF4f6don0eiaF8b4KkfbWKrCaEm+LMxbyBEQ6fIb1cmGY8A9A5houjmgi6YWSkoi
+SLpOC9TZ2R51fO9rRsv7XwLK0V9o9YaEYPBg6V/TeJl5nxAZBeVTKVTQbBGZY+l2
+nzN0pKsl7RXLf3SRYA==
+-----END CERTIFICATE-----
diff --git a/bsp/meta-intel/recipes-selftest/images/files/incorrect.key b/bsp/meta-intel/recipes-selftest/images/files/incorrect.key
new file mode 100644
index 00000000..d05475b6
--- /dev/null
+++ b/bsp/meta-intel/recipes-selftest/images/files/incorrect.key
@@ -0,0 +1,27 @@
+-----BEGIN RSA PRIVATE KEY-----
+MIIEowIBAAKCAQEAukI2ioMeL8qaXxMtryonAT51w+Zre0wB8bDBPuXDSwDVXNWf
+iKKTfCVEkLEUnsUEd7jiKswCT5orTwCD7aQK0mTrkAWEi8hEI3MkNoehT51gkuTf
+v7A/HgPkhhlU4UQqipI6XoLf7o7PUV33ZfB43//iKY2kLBdsFvs4ALWE31hLOkCF
+b+nqMnfZxq7DgvBwIdxJdLQvaskpDMfkna+zE3QWqkH5v55atW8Bunwk/6q5kqNh
+yrjZb4i0BqJ5AHFUEQzlDcjpyFVUtR14r0IxjBFMHZXrx4uLe7KvGf/4GqpqeFOP
+qxMsfC5ILJJ7nvwFViqftGgtWg/12bKMTB5saQIDAQABAoIBAQCEtAox86s9N6d2
+164z3998Zmj3UyL+7K9x6JI2YvMabBSYGOeaLOLRj6fjQxdC63H8brBM958p4di7
+Z82XMco4Dok6yoOeJ+hMLYv+gfGvTJxy7DhyVXsSwok99axg9vUsV3TYw3wSdpNF
+EKLkcUldpu0W2ADBHUr4sLI85xctHH3Kt0sNDzhgADFa5rDYACXTKHtFOhEqBIwN
+FmbuRQirnErUkI3Pczgl2Xy1MlaozH9CB+bLAb5q2FYu4DKgjl4UorC+w2HV41KH
+XoL7L36XXqLRHBfEAwOWb8yro+TK8T7gW7aagTI1wgsbbQkjQmOHxclmJACdMOiJ
+DjPeR0GBAoGBAO7i2eaEoKa9QlKokN+93uOJD/F6DBi6jF0vGOqWlF8AVTj3kGL3
+X8fY/avrSlg7hKZWdei+Q5PyZViKxqmHjq781ZisKck52Tqz4s7ylqRXSgStinZr
+UqrkShCqZ3g1W91gIeVPQz0/b+gBskoHzQ5WQHfV5v9S1PaxjzcYtCrRAoGBAMea
+LcA2jjuEjqxa5v5fh8ygcHasJMRKJxW1OCKiQ94DjjzPsdVqZ1sJZChLW/N3nxe7
+wHlNJmsGbJ2w1zD5+qkkPjLq5Q4B5KAd62NNrWaEHFdEc/PPkn4xP7Zkfuu5K+m2
+7z/MF4ibvVh9PvD3HY8FWKEtkqB4rfD8AoUOVd4ZAoGAXxXAsfa8k2Hl0kzyTXyg
+CWV3CSERS46FbFngyw9gw2e4hFJWEG5ym3ONlS60iuY16JelmxyQfYUQPewPI0+n
+xZMx2fE9OLFj+++6KbF5sLRl6/K/mF8jqo3vxS5uvPRQOo+XLlUcaHalrm1ub/Um
+87v1MT3dEmgACKmoXb/hhuECgYAZluiapePiOYJZEmZe4jx0vXTtofAswhz0qYEC
+3663vdj0buQrqjKJ91BB4jdtpT5eOpHYe02blv1B0jQkcUfze1QGDxtCineXF37g
+Aktiwzkm7v22mjv7tbCnX4buDZVVp0BQ+4dg2iaSO6xgFC5T8amFMGSF8jLKnGRu
+ToIvsQKBgADBTse2vnI85NRsYq48ztQuIU2zlGXIAcoPSvGb8Vhty/joc0jWcI5P
+raGXBARbuVlcEapK3mDRfO0CQjDaTPK4EYYJwGp8k33Hkkcbgs4kfm308jRsclMr
+YeMwQsYyOv45x4iPCwrqZEhpPDvACBi7DB6QvZ0++vJbobTt1jyi
+-----END RSA PRIVATE KEY-----
diff --git a/bsp/meta-intel/recipes-selftest/images/files/refkit-db.crt b/bsp/meta-intel/recipes-selftest/images/files/refkit-db.crt
new file mode 100644
index 00000000..22ad6a89
--- /dev/null
+++ b/bsp/meta-intel/recipes-selftest/images/files/refkit-db.crt
@@ -0,0 +1,18 @@
+-----BEGIN CERTIFICATE-----
+MIIC+zCCAeOgAwIBAgIJANT2SMJoGZGsMA0GCSqGSIb3DQEBCwUAMBQxEjAQBgNV
+BAMMCXJlZmtpdC1kYjAeFw0xNzA0MjAxMjA2MzJaFw0xODA0MjAxMjA2MzJaMBQx
+EjAQBgNVBAMMCXJlZmtpdC1kYjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoC
+ggEBALQcIqYiAVfN8U+vcuPZAYBQVe8CXuuZNct/Knn/tT7sXZIGMCDnla2khC4/
++tdG3Umo6ON5SfaPCx3+Y6jRY6PWDU5sZlzWZibRJpjUT3bJZUhYEwgxvOVHJWWV
+OYlfAvHFBhdYygn99h7Fl9qjThpIvs+WJwRLt21ntlAYBHNR0mot3zur8i2V16i4
+qDChq4uSK2A+OuWGQHHBPy0ukOfW7MzCC3mDcW32o6lMzUaB3O/sUb6BKvF4c0Hb
+VM58zqLjkE9FGvk9iPwO7dNpIkz6CmnRSMCqqTqzjxA6dqgMej3Yec4clmL0Bu5H
+6OBpka7qNM/aqLQ5XvN60IhIR2kCAwEAAaNQME4wHQYDVR0OBBYEFGhgESWFFHgb
+Gp9GEuYh5O/7O6rdMB8GA1UdIwQYMBaAFGhgESWFFHgbGp9GEuYh5O/7O6rdMAwG
+A1UdEwQFMAMBAf8wDQYJKoZIhvcNAQELBQADggEBAI/ShHxDR8pr/YeD0O910yBS
+cxiqMnH7pfTJEaNoTbed5tlGJNzHwjv5sJj87jRuEJs9RG4zCRG4KdYtBs9nj5aF
+nWNyv2RfDePJYxlx1H1MnHdG2iCXbbzdwh/zQDge58xVBXK6JE+zipMMMGDan281
+9vuwH7MA3cSmvOI3waPv2aGG+eukpUU4/06HSkHPbml+l74tIryNoBohj0tykAFc
+uqWcLdclJPz/XFgURjAJfFVkgwu5388l7uz3y9vRW5OTyIoQRriwNRxsDY8Dao8b
+NmjzU4k2WyGA3uOSUpSXnUmJfT7eKVG6Efe6Afer6sGnLqNNZf1AcfHiP2woy9M=
+-----END CERTIFICATE-----
diff --git a/bsp/meta-intel/recipes-selftest/images/files/refkit-db.key b/bsp/meta-intel/recipes-selftest/images/files/refkit-db.key
new file mode 100644
index 00000000..4b54587e
--- /dev/null
+++ b/bsp/meta-intel/recipes-selftest/images/files/refkit-db.key
@@ -0,0 +1,28 @@
+-----BEGIN PRIVATE KEY-----
+MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQC0HCKmIgFXzfFP
+r3Lj2QGAUFXvAl7rmTXLfyp5/7U+7F2SBjAg55WtpIQuP/rXRt1JqOjjeUn2jwsd
+/mOo0WOj1g1ObGZc1mYm0SaY1E92yWVIWBMIMbzlRyVllTmJXwLxxQYXWMoJ/fYe
+xZfao04aSL7PlicES7dtZ7ZQGARzUdJqLd87q/ItldeouKgwoauLkitgPjrlhkBx
+wT8tLpDn1uzMwgt5g3Ft9qOpTM1Ggdzv7FG+gSrxeHNB21TOfM6i45BPRRr5PYj8
+Du3TaSJM+gpp0UjAqqk6s48QOnaoDHo92HnOHJZi9AbuR+jgaZGu6jTP2qi0OV7z
+etCISEdpAgMBAAECggEAbtXplKbUgL4hQ9JKN2Cxhc7qMv0YgI92BVaqQw1S8ffu
+1Q+tynH5MDRPi06gBJ59SvkA6AsZsvrv8nM7zQWd9ZKh+aLHk1X04upOgDoW9JiX
+FV/txlslTUrs/ohIMfsgCrweNXvUSTXZobIi8s8QHyipE4HpXMFjjZYHIV7GTlgA
+PRgGu3NygbWfR8hcx5JtzVz/jka7FFFSbk/pMr0TeJHXP55VfqWLeeSBQmWwooj2
+QcRfqMXgLKgu6uEggaP5HMcfTuWgWNhbke/596CgsUtQ5Gg64Q6v7cKcPy0/lgn1
+PnvfT9uhgEFDLNFkSBxV3ImrNYo73Nqmbp3w5tK9SQKBgQDs/HW7pNnB0LD51qok
+pkX0SBvyKxDT1QuU4z0FY9GT7OKOg8Xa0ZGyErt+ZbyFiyUGF5Axc3rJ3DyGslgu
+5O+AqcpCQOlOyovGQ6ST9x/gEeVcRnZn1MV4vMxwaOSXtY7u0IGyaDlFn1QWHWCN
+imv8OR6YuhivwBIXGzJ16oEqDwKBgQDCj3ls7tlPrLvUQIh8gfjCoInU8fRAqtAe
+Ab/OximLsKQPKLDma6xd+X2Fk8Dowdb88GNT99x3VZjHqVJM9URDkiOGKAXA/rBp
+jAXhnQwahT8YCzOUHqDYNMMQrXHvbiHqLodGrrO2WjYNmH69prQAk8WYAIwl+hdx
+BS70LGLPBwKBgQDU9RinAkBcFjiyieBjBreeCJ50Q5bfhHbf2EOhcE2IbDo6bteB
+Bwmxx3uM3cdHCf6/NrVweqFAfBQ3xlPP8BH4wJrsZoBBOWnZRDfEbzHJnMtK3FbS
+fzTkhmQAL4Ibgh9rIxspQtcUZVSees+k4VqgUIPaIoDEjgizktEJfS2MqQKBgQDA
+rOFtVaRz2PYyHq6LzxMRe3bEIdDn8cEk1kqjdW9TXV07feqiZmNOtXLvRAG4/63u
+1Akp8L6ul2Az6qUMfaBa4nC3vQ7lr9P40qhIZATGhsqS/xTXTPWw55999qZsnL6N
+cgKZpw1mOzRohmqNWnfMUotOGsywF1n7nUyAlyxLJQKBgElTaNTFYF3MbGfhl1He
+fnDXlf8OCOK1i5oIzMLqverb2UN/qp6p0b3SAtcw5cUXcaPlajHrfYgacF/0Qyua
+Cerey9GLEdJ7saDWhz0GyJ8yyEXy8CVs0svVaLPWI0s2B7/obzP9+gTb/WE9qZqu
+bNoVEpJ/wZhk+IL4+KPmqphu
+-----END PRIVATE KEY-----
diff --git a/bsp/meta-intel/recipes-selftest/images/secureboot-selftest-image-signed.bb b/bsp/meta-intel/recipes-selftest/images/secureboot-selftest-image-signed.bb
new file mode 100644
index 00000000..3ce11f32
--- /dev/null
+++ b/bsp/meta-intel/recipes-selftest/images/secureboot-selftest-image-signed.bb
@@ -0,0 +1,6 @@
+require secureboot-selftest-image-unsigned.bb
+
+IMAGE_FEATURES += "secureboot"
+
+SECURE_BOOT_SIGNING_KEY ?= "${THISDIR}/files/refkit-db.key"
+SECURE_BOOT_SIGNING_CERT ?= "${THISDIR}/files/refkit-db.crt"
diff --git a/bsp/meta-intel/recipes-selftest/images/secureboot-selftest-image-unsigned.bb b/bsp/meta-intel/recipes-selftest/images/secureboot-selftest-image-unsigned.bb
new file mode 100644
index 00000000..e03e7b47
--- /dev/null
+++ b/bsp/meta-intel/recipes-selftest/images/secureboot-selftest-image-unsigned.bb
@@ -0,0 +1,20 @@
+require recipes-core/images/core-image-minimal.bb
+
+DEPENDS_remove = "grub-efi"
+
+inherit uefi-comboapp
+
+WKS_FILE = "generic-bootdisk.wks.in"
+
+do_uefiapp_deploy_append() {
+ for i in ${DEPLOY_DIR_IMAGE}/${IMAGE_LINK_NAME}.boot*.efi; do
+ target=`basename $i`
+ target=`echo $target | sed -e 's/${IMAGE_LINK_NAME}.//'`
+
+ cat > ${IMAGE_ROOTFS}/boot/startup.nsh << EOF
+$target
+reset
+EOF
+ break
+ done
+}
diff --git a/bsp/meta-intel/recipes-support/sbsigntool/sbsigntool-native_git.bb b/bsp/meta-intel/recipes-support/sbsigntool/sbsigntool-native_git.bb
new file mode 100644
index 00000000..430a6a78
--- /dev/null
+++ b/bsp/meta-intel/recipes-support/sbsigntool/sbsigntool-native_git.bb
@@ -0,0 +1,77 @@
+DESCRIPTION = "Utility for signing and verifying files for UEFI Secure Boot"
+LICENSE = "GPLv3 & LGPL-2.1 & LGPL-3.0 & MIT"
+
+# sbsigntool statically links to libccan.a which is built with modules
+# passed to "create-ccan-tree" (and their dependencies). Therefore,
+# we also keep track of all the ccan module licenses.
+LIC_FILES_CHKSUM = "file://LICENSE.GPLv3;md5=9eef91148a9b14ec7f9df333daebc746 \
+ file://COPYING;md5=a7710ac18adec371b84a9594ed04fd20 \
+ file://lib/ccan.git/ccan/endian/LICENSE;md5=2d5025d4aa3495befef8f17206a5b0a1 \
+ file://lib/ccan.git/ccan/htable/LICENSE;md5=2d5025d4aa3495befef8f17206a5b0a1 \
+ file://lib/ccan.git/ccan/list/LICENSE;md5=2d5025d4aa3495befef8f17206a5b0a1 \
+ file://lib/ccan.git/ccan/read_write_all/LICENSE;md5=2d5025d4aa3495befef8f17206a5b0a1 \
+ file://lib/ccan.git/ccan/talloc/LICENSE;md5=2d5025d4aa3495befef8f17206a5b0a1 \
+ file://lib/ccan.git/ccan/typesafe_cb/LICENSE;md5=2d5025d4aa3495befef8f17206a5b0a1 \
+ file://lib/ccan.git/ccan/failtest/LICENSE;md5=6a6a8e020838b23406c81b19c1d46df6 \
+ file://lib/ccan.git/ccan/tlist/LICENSE;md5=6a6a8e020838b23406c81b19c1d46df6 \
+ file://lib/ccan.git/ccan/time/LICENSE;md5=838c366f69b72c5df05c96dff79b35f2 \
+"
+
+# The original upstream is git://kernel.ubuntu.com/jk/sbsigntool but it has
+# not been maintained and many patches have been backported in this repo.
+SRC_URI = "git://git.kernel.org/pub/scm/linux/kernel/git/jejb/sbsigntools.git;protocol=https;name=sbsigntools \
+ git://github.com/rustyrussell/ccan.git;protocol=https;destsuffix=git/lib/ccan.git;name=ccan \
+ "
+
+SRCREV_sbsigntools ?= "efbb550858e7bd3f43e64228d22aea440ef6a14d"
+SRCREV_ccan ?= "b1f28e17227f2320d07fe052a8a48942fe17caa5"
+SRCREV_FORMAT = "sbsigntools_ccan"
+
+DEPENDS = "binutils-native gnu-efi-native help2man-native openssl10-native util-linux-native"
+
+PV = "0.8-git${SRCPV}"
+
+S = "${WORKDIR}/git"
+
+inherit native autotools pkgconfig
+
+do_configure_prepend() {
+ cd ${S}
+
+ if [ ! -e lib/ccan ]; then
+
+ # Use empty SCOREDIR because 'make scores' is not run.
+ # The default setting depends on (non-whitelisted) host tools.
+ sed -i -e 's#^\(SCOREDIR=\).*#\1#' lib/ccan.git/Makefile
+
+ lib/ccan.git/tools/create-ccan-tree \
+ --build-type=automake lib/ccan \
+ talloc read_write_all build_assert array_size endian
+ fi
+
+ # Create generatable docs from git
+ (
+ echo "Authors of sbsigntool:"
+ echo
+ git log --format='%an' | sort -u | sed 's,^,\t,'
+ ) > AUTHORS
+
+ # Generate simple ChangeLog
+ git log --date=short --format='%ad %t %an <%ae>%n%n * %s%n' > ChangeLog
+
+ cd ${B}
+}
+
+def efi_arch(d):
+ import re
+ harch = d.getVar("HOST_ARCH")
+ if re.match("i[3456789]86", harch):
+ return "ia32"
+ return harch
+
+EXTRA_OEMAKE = "\
+ INCLUDES+='-I${S}/lib/ccan.git/ \
+ -I${STAGING_INCDIR_NATIVE}/efi \
+ -I${STAGING_INCDIR_NATIVE} \
+ -I${STAGING_INCDIR_NATIVE}/efi/${@efi_arch(d)}' \
+ "
diff --git a/bsp/meta-intel/wic/core-image-tiny.wks.in b/bsp/meta-intel/wic/core-image-tiny.wks.in
new file mode 100644
index 00000000..b0decae6
--- /dev/null
+++ b/bsp/meta-intel/wic/core-image-tiny.wks.in
@@ -0,0 +1,14 @@
+# short-description: Create an EFI disk image with systemd-boot and corei7-64/core2-32
+# long-description: Creates a partitioned EFI disk image that the user
+# can directly dd to boot media. The selected bootloader is systemd-boot.
+# This disk image is meant to be used by corei7-64/core2-32 and core-image-tiny-initramfs
+
+part /boot --source bootimg-efi --sourceparams="loader=systemd-boot,initrd=core-image-tiny-initramfs-${MACHINE}.cpio.gz" --ondisk sda --label msdos --active --align 1024
+
+bootloader --ptable gpt --timeout=5 --append="init=/bin/busybox sh init console=ttyS0,115200 console=tty0 rw LABEL=boot debugshell=5"
+
+# Some devices require different console parameters, the console parameter can be given repeatedly, input is taken
+# only from the last listed console, for example on the Minnowboard MAX, the previously listed setting would show
+# a login prompt on its video output and not on the serial terminal.
+#
+# See http://www.tldp.org/HOWTO/Remote-Serial-Console-HOWTO/configure-kernel.html
diff --git a/bsp/meta-intel/wic/generic-bootdisk.wks.in b/bsp/meta-intel/wic/generic-bootdisk.wks.in
new file mode 100644
index 00000000..31c708bc
--- /dev/null
+++ b/bsp/meta-intel/wic/generic-bootdisk.wks.in
@@ -0,0 +1,6 @@
+# based off of refkit's refkit-directdisk.wks.in kickstart template
+# uses the image's boot directory to populate a vfat boot partition,
+# which works with EFI.
+bootloader --ptable gpt
+part /boot --source rootfs --rootfs-dir=${IMAGE_ROOTFS}/boot --fstype=vfat --label msdos --active --align 1024 --use-uuid
+part / --source rootfs --fstype=ext4 --label root --align 1024 --uuid ${DISK_SIGNATURE_UUID}
diff --git a/bsp/meta-intel/wic/grub-bootdisk-microcode.wks b/bsp/meta-intel/wic/grub-bootdisk-microcode.wks
new file mode 100644
index 00000000..7eda3766
--- /dev/null
+++ b/bsp/meta-intel/wic/grub-bootdisk-microcode.wks
@@ -0,0 +1,12 @@
+# short-description: Create an EFI disk image with grub-efi
+# long-description: Creates a partitioned EFI disk image that the user
+# can directly dd to boot media. The selected bootloader is grub-efi.
+# It also includes intel-microcode as an initrd for early update support.
+
+part /boot --source bootimg-efi --sourceparams="loader=grub-efi,initrd=microcode.cpio" --ondisk sda --label msdos --active --align 1024 --use-uuid
+
+part / --source rootfs --ondisk sda --fstype=ext4 --label platform --align 1024 --use-uuid
+
+part swap --ondisk sda --size 44 --label swap1 --fstype=swap --use-uuid
+
+bootloader --ptable gpt --timeout=5 --append="rootwait rootfstype=ext4 console=ttyS0,115200 console=tty0"
diff --git a/bsp/meta-intel/wic/systemd-bootdisk-microcode.wks b/bsp/meta-intel/wic/systemd-bootdisk-microcode.wks
new file mode 100644
index 00000000..c171fd8e
--- /dev/null
+++ b/bsp/meta-intel/wic/systemd-bootdisk-microcode.wks
@@ -0,0 +1,13 @@
+# short-description: Create an EFI disk image with systemd-boot
+# long-description: Creates a partitioned EFI disk image that the user
+# can directly dd to boot media. The selected bootloader is systemd-boot.
+# It also includes intel-microcode as an initrd for early update support.
+# Based on OE-core's systemd-bootdisk.wks file.
+
+part /boot --source bootimg-efi --sourceparams="loader=systemd-boot,initrd=microcode.cpio" --ondisk sda --label msdos --active --align 1024 --use-uuid
+
+part / --source rootfs --ondisk sda --fstype=ext4 --label platform --align 1024 --use-uuid
+
+part swap --ondisk sda --size 44 --label swap1 --fstype=swap --use-uuid
+
+bootloader --ptable gpt --timeout=5 --append="rootwait rootfstype=ext4 console=ttyS0,115200 console=tty0"