summaryrefslogtreecommitdiffstats
path: root/meta-agl-core/recipes-kernel
diff options
context:
space:
mode:
authorJan-Simon Moeller <jsmoeller@linuxfoundation.org>2020-12-08 11:12:45 +0100
committerJan-Simon Moeller <jsmoeller@linuxfoundation.org>2020-12-17 13:59:52 +0000
commit1c3c06842ac1b9c089d0a08e91c60f44e4844fac (patch)
tree21e97368be8f78a3e76b66dfda24c1d5e774519f /meta-agl-core/recipes-kernel
parentc1e048fc05542d859115990312e0753ce2dea72e (diff)
SPEC-3723: restructure meta-agl
Goal is to reach a minimal meta-agl-core as base for IVI and IC work at the same time. Trim dependencies and move most 'demo' related recipes to meta-agl-demo. v2: changed to bbapend + .inc , added description v3: testbuild of all images v4: restore -test packagegroup and -qa images, compare manifests and adapt packagegroups. v5: rebased v6: merged meta-agl-distro into meta-agl-core, due to dependency on meta-oe, moved -test packagegroup and -qa images to own layer meta-agl-core-test v7: Fixed comments from Paul Barker v8: Update the markdown files v9: restore wayland/weston/agl-compositor recipes/appends, reworked to move app f/w specific changes to bbappends in meta-app-framework and only demo specific weston-init changes to meta-agl-demo v10: fix s/agldemo/aglcore/ missed in weston-init.bbappend Description: This patch is part 1 out of 2 large patches that implement the layer rework discussed during the previous workshop. Essentially meta-agl-core is the small but versatile new core layer of AGL serving as basis for the work done by the IC and IVI EGs. All demo related work is moved to meta-agl-demo in the 2nd patchset. This should be applied together as atomic change. The resulting meta-agl/* follows these guidelines: - only bsp adaptations in meta-agl-bsp - remove the agl-profile-* layers for simplicity -- the packagegroup-agl(-profile)-graphical and so on have been kept in meta-agl-demo - meta-agl-profile-core is now meta-agl-core - meta-agl-core does pass yocto-check-layer -- therefore use the bbappend + conditional + .inc file construct found in meta-virtualization - meta-agl/meta-security has been merged into meta-agl/meta-app-framework - meta-netboot does pass yocto-check-layer - meta-pipewire does pass yocto-check-layer Migration: All packagegroups are preserved but they're now enabled by 'agl-demo'. Bug-AGL: SPEC-3723 Signed-off-by: Jan-Simon Moeller <jsmoeller@linuxfoundation.org> Signed-off-by: Scott Murray <scott.murray@konsulko.com> Change-Id: Ia6c6e5e6ce2b4ffa69ea94959cdc57c310ba7c53 Reviewed-on: https://gerrit.automotivelinux.org/gerrit/c/AGL/meta-agl/+/25769
Diffstat (limited to 'meta-agl-core/recipes-kernel')
-rw-r--r--meta-agl-core/recipes-kernel/linux/kernel-devsrc.bbappend1
-rw-r--r--meta-agl-core/recipes-kernel/linux/kernel-devsrc_agl.inc6
-rw-r--r--meta-agl-core/recipes-kernel/linux/linux-4.14/Smack-Handle-CGROUP2-in-the-same-way-that-CGROUP.patch40
-rw-r--r--meta-agl-core/recipes-kernel/linux/linux-4.14/Smack-Privilege-check-on-key-operations.patch109
-rw-r--r--meta-agl-core/recipes-kernel/linux/linux-4.14/net-sch_generic-add-if_afp.h-header-to-get-ARPHRD_CA.patch25
-rw-r--r--meta-agl-core/recipes-kernel/linux/linux-agl-4.14.inc14
-rw-r--r--meta-agl-core/recipes-kernel/linux/linux-agl-4.19.inc5
-rw-r--r--meta-agl-core/recipes-kernel/linux/linux-agl.inc132
-rw-r--r--meta-agl-core/recipes-kernel/linux/linux/btusb.cfg37
-rw-r--r--meta-agl-core/recipes-kernel/linux/linux/can-bus.cfg42
-rw-r--r--meta-agl-core/recipes-kernel/linux/linux/drm.cfg2
-rw-r--r--meta-agl-core/recipes-kernel/linux/linux/fanotify.cfg3
-rw-r--r--meta-agl-core/recipes-kernel/linux/linux/hid.cfg1
-rw-r--r--meta-agl-core/recipes-kernel/linux/linux/i2c-led.cfg3
-rw-r--r--meta-agl-core/recipes-kernel/linux/linux/iiodevice.cfg26
-rw-r--r--meta-agl-core/recipes-kernel/linux/linux/joystick.cfg9
-rw-r--r--meta-agl-core/recipes-kernel/linux/linux/nbd.cfg3
-rw-r--r--meta-agl-core/recipes-kernel/linux/linux/net-sch_generic-Use-pfifo_fast-as-fallback-scheduler.patch75
-rw-r--r--meta-agl-core/recipes-kernel/linux/linux/netfilter.cfg1
-rw-r--r--meta-agl-core/recipes-kernel/linux/linux/nfc.cfg34
-rw-r--r--meta-agl-core/recipes-kernel/linux/linux/overlayfs.cfg7
-rw-r--r--meta-agl-core/recipes-kernel/linux/linux/procevent.cfg2
-rw-r--r--meta-agl-core/recipes-kernel/linux/linux/ramdisk.cfg2
-rw-r--r--meta-agl-core/recipes-kernel/linux/linux/rtc.cfg7
-rw-r--r--meta-agl-core/recipes-kernel/linux/linux/rtl_sdr.cfg4
-rw-r--r--meta-agl-core/recipes-kernel/linux/linux/scheddebug.cfg1
-rw-r--r--meta-agl-core/recipes-kernel/linux/linux/sound-hda.cfg20
-rw-r--r--meta-agl-core/recipes-kernel/linux/linux/sound.cfg7
-rw-r--r--meta-agl-core/recipes-kernel/linux/linux/systemtap.cfg9
-rw-r--r--meta-agl-core/recipes-kernel/linux/linux/uinput.cfg3
-rw-r--r--meta-agl-core/recipes-kernel/linux/linux/usb.cfg8
-rw-r--r--meta-agl-core/recipes-kernel/linux/linux/usbaudio.cfg2
-rw-r--r--meta-agl-core/recipes-kernel/linux/linux/usbmodem.cfg7
-rw-r--r--meta-agl-core/recipes-kernel/linux/linux/uvc.cfg4
-rw-r--r--meta-agl-core/recipes-kernel/linux/linux/vbox-vmware-sata.cfg19
-rw-r--r--meta-agl-core/recipes-kernel/linux/linux/wifi.cfg6
-rw-r--r--meta-agl-core/recipes-kernel/linux/linux/x86-extra-graphic-devices.cfg40
-rw-r--r--meta-agl-core/recipes-kernel/linux/linux/x86-net-devices.cfg3
-rw-r--r--meta-agl-core/recipes-kernel/linux/linux/x86-security-tpm.cfg3
-rw-r--r--meta-agl-core/recipes-kernel/linux/linux/x86-upsquare.cfg11
-rw-r--r--meta-agl-core/recipes-kernel/linux/linux/x86-usb-devices.cfg82
-rw-r--r--meta-agl-core/recipes-kernel/linux/linux/xen_domu.cfg25
42 files changed, 840 insertions, 0 deletions
diff --git a/meta-agl-core/recipes-kernel/linux/kernel-devsrc.bbappend b/meta-agl-core/recipes-kernel/linux/kernel-devsrc.bbappend
new file mode 100644
index 000000000..3d5903d85
--- /dev/null
+++ b/meta-agl-core/recipes-kernel/linux/kernel-devsrc.bbappend
@@ -0,0 +1 @@
+require ${@bb.utils.contains('AGL_FEATURES', 'aglcore', '${BPN}_agl.inc', '', d)}
diff --git a/meta-agl-core/recipes-kernel/linux/kernel-devsrc_agl.inc b/meta-agl-core/recipes-kernel/linux/kernel-devsrc_agl.inc
new file mode 100644
index 000000000..52fe69d24
--- /dev/null
+++ b/meta-agl-core/recipes-kernel/linux/kernel-devsrc_agl.inc
@@ -0,0 +1,6 @@
+# fix for kernel using hardcoded awk while our filesystem only provides gawk
+do_install_append() {
+ # enforce all scripts to use /usr/bin/awk . This fixes the rpm dependency failure on install of kernel-devsrc
+ cd ${D} || true
+ ( for i in `grep -srI "\!/bin/awk" | cut -d":" -f1 ` ; do sed -i -e "s#\!/bin/awk#\!/usr/bin/env awk#g" $i ; done ) || true
+} \ No newline at end of file
diff --git a/meta-agl-core/recipes-kernel/linux/linux-4.14/Smack-Handle-CGROUP2-in-the-same-way-that-CGROUP.patch b/meta-agl-core/recipes-kernel/linux/linux-4.14/Smack-Handle-CGROUP2-in-the-same-way-that-CGROUP.patch
new file mode 100644
index 000000000..c595dfdf5
--- /dev/null
+++ b/meta-agl-core/recipes-kernel/linux/linux-4.14/Smack-Handle-CGROUP2-in-the-same-way-that-CGROUP.patch
@@ -0,0 +1,40 @@
+From 63f5acdf097b7baca8d0f7056a037f8811b48aaa Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Jos=C3=A9=20Bollo?= <jose.bollo@iot.bzh>
+Date: Tue, 27 Feb 2018 17:06:21 +0100
+Subject: [PATCH] Smack: Handle CGROUP2 in the same way that CGROUP
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+The new file system CGROUP2 isn't actually handled
+by smack. This changes makes Smack treat equally
+CGROUP and CGROUP2 items.
+
+Signed-off-by: José Bollo <jose.bollo@iot.bzh>
+---
+ security/smack/smack_lsm.c | 2 ++
+ 1 file changed, 2 insertions(+)
+
+diff --git a/security/smack/smack_lsm.c b/security/smack/smack_lsm.c
+index 03fdecba93bb..5d77ed04422c 100644
+--- a/security/smack/smack_lsm.c
++++ b/security/smack/smack_lsm.c
+@@ -3431,6 +3431,7 @@ static void smack_d_instantiate(struct dentry *opt_dentry, struct inode *inode)
+ if (opt_dentry->d_parent == opt_dentry) {
+ switch (sbp->s_magic) {
+ case CGROUP_SUPER_MAGIC:
++ case CGROUP2_SUPER_MAGIC:
+ /*
+ * The cgroup filesystem is never mounted,
+ * so there's no opportunity to set the mount
+@@ -3474,6 +3475,7 @@ static void smack_d_instantiate(struct dentry *opt_dentry, struct inode *inode)
+ switch (sbp->s_magic) {
+ case SMACK_MAGIC:
+ case CGROUP_SUPER_MAGIC:
++ case CGROUP2_SUPER_MAGIC:
+ /*
+ * Casey says that it's a little embarrassing
+ * that the smack file system doesn't do
+--
+2.14.3
+
diff --git a/meta-agl-core/recipes-kernel/linux/linux-4.14/Smack-Privilege-check-on-key-operations.patch b/meta-agl-core/recipes-kernel/linux/linux-4.14/Smack-Privilege-check-on-key-operations.patch
new file mode 100644
index 000000000..4100bb8fd
--- /dev/null
+++ b/meta-agl-core/recipes-kernel/linux/linux-4.14/Smack-Privilege-check-on-key-operations.patch
@@ -0,0 +1,109 @@
+Smack: Privilege check on key operations
+
+Operations on key objects are subjected to Smack policy
+even if the process is privileged. This is inconsistent
+with the general behavior of Smack and may cause issues
+with authentication by privileged daemons. This patch
+allows processes with CAP_MAC_OVERRIDE to access keys
+even if the Smack rules indicate otherwise.
+
+Reported-by: Jose Bollo <jobol@nonadev.net>
+Signed-off-by: Casey Schaufler <casey@schaufler-ca.com>
+---
+ security/smack/smack.h | 1 +
+ security/smack/smack_access.c | 40 +++++++++++++++++++++++++++++-----------
+ security/smack/smack_lsm.c | 4 ++++
+ 3 files changed, 34 insertions(+), 11 deletions(-)
+
+diff --git a/security/smack/smack.h b/security/smack/smack.h
+index 6a71fc7..f7db791 100644
+--- a/security/smack/smack.h
++++ b/security/smack/smack.h
+@@ -321,6 +321,7 @@ struct smack_known *smk_import_entry(const char *, int);
+ void smk_insert_entry(struct smack_known *skp);
+ struct smack_known *smk_find_entry(const char *);
+ bool smack_privileged(int cap);
++bool smack_privileged_cred(int cap, const struct cred *cred);
+ void smk_destroy_label_list(struct list_head *list);
+
+ /*
+diff --git a/security/smack/smack_access.c b/security/smack/smack_access.c
+index 1a30041..141ffac 100644
+--- a/security/smack/smack_access.c
++++ b/security/smack/smack_access.c
+@@ -623,26 +623,24 @@ struct smack_known *smack_from_secid(const u32 secid)
+ LIST_HEAD(smack_onlycap_list);
+ DEFINE_MUTEX(smack_onlycap_lock);
+
+-/*
++/**
++ * smack_privileged_cred - are all privilege requirements met by cred
++ * @cap: The requested capability
++ * @cred: the credential to use
++ *
+ * Is the task privileged and allowed to be privileged
+ * by the onlycap rule.
+ *
+ * Returns true if the task is allowed to be privileged, false if it's not.
+ */
+-bool smack_privileged(int cap)
++bool smack_privileged_cred(int cap, const struct cred *cred)
+ {
+- struct smack_known *skp = smk_of_current();
++ struct task_smack *tsp = cred->security;
++ struct smack_known *skp = tsp->smk_task;
+ struct smack_known_list_elem *sklep;
+ int rc;
+
+- /*
+- * All kernel tasks are privileged
+- */
+- if (unlikely(current->flags & PF_KTHREAD))
+- return true;
+-
+- rc = cap_capable(current_cred(), &init_user_ns, cap,
+- SECURITY_CAP_AUDIT);
++ rc = cap_capable(cred, &init_user_ns, cap, SECURITY_CAP_AUDIT);
+ if (rc)
+ return false;
+
+@@ -662,3 +660,23 @@ bool smack_privileged(int cap)
+
+ return false;
+ }
++
++/**
++ * smack_privileged - are all privilege requirements met
++ * @cap: The requested capability
++ *
++ * Is the task privileged and allowed to be privileged
++ * by the onlycap rule.
++ *
++ * Returns true if the task is allowed to be privileged, false if it's not.
++ */
++bool smack_privileged(int cap)
++{
++ /*
++ * All kernel tasks are privileged
++ */
++ if (unlikely(current->flags & PF_KTHREAD))
++ return true;
++
++ return smack_privileged_cred(cap, current_cred());
++}
+diff --git a/security/smack/smack_lsm.c b/security/smack/smack_lsm.c
+index 30f2c3d..03fdecb 100644
+--- a/security/smack/smack_lsm.c
++++ b/security/smack/smack_lsm.c
+@@ -4369,6 +4369,10 @@ static int smack_key_permission(key_ref_t key_ref,
+ */
+ if (tkp == NULL)
+ return -EACCES;
++
++ if (smack_privileged_cred(CAP_MAC_OVERRIDE, cred))
++ return 0;
++
+ #ifdef CONFIG_AUDIT
+ smk_ad_init(&ad, __func__, LSM_AUDIT_DATA_KEY);
+ ad.a.u.key_struct.key = keyp->serial;
+
diff --git a/meta-agl-core/recipes-kernel/linux/linux-4.14/net-sch_generic-add-if_afp.h-header-to-get-ARPHRD_CA.patch b/meta-agl-core/recipes-kernel/linux/linux-4.14/net-sch_generic-add-if_afp.h-header-to-get-ARPHRD_CA.patch
new file mode 100644
index 000000000..7c34fb306
--- /dev/null
+++ b/meta-agl-core/recipes-kernel/linux/linux-4.14/net-sch_generic-add-if_afp.h-header-to-get-ARPHRD_CA.patch
@@ -0,0 +1,25 @@
+From 17d0075d95b5087d5df553444cca390fa479bad9 Mon Sep 17 00:00:00 2001
+From: Matt Ranostay <matt.ranostay@konsulko.com>
+Date: Tue, 10 Mar 2020 22:27:28 -0700
+Subject: [PATCH] net: sch_generic: add if_afp.h header to get ARPHRD_CAN macro
+
+Signed-off-by: Matt Ranostay <matt.ranostay@konsulko.com>
+---
+ net/sched/sch_generic.c | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/net/sched/sch_generic.c b/net/sched/sch_generic.c
+index bf8c81e07c70..1845ef8c7dbd 100644
+--- a/net/sched/sch_generic.c
++++ b/net/sched/sch_generic.c
+@@ -25,6 +25,7 @@
+ #include <linux/rcupdate.h>
+ #include <linux/list.h>
+ #include <linux/slab.h>
++#include <linux/if_arp.h>
+ #include <linux/if_vlan.h>
+ #include <net/sch_generic.h>
+ #include <net/pkt_sched.h>
+--
+2.25.0
+
diff --git a/meta-agl-core/recipes-kernel/linux/linux-agl-4.14.inc b/meta-agl-core/recipes-kernel/linux/linux-agl-4.14.inc
new file mode 100644
index 000000000..6d5c67021
--- /dev/null
+++ b/meta-agl-core/recipes-kernel/linux/linux-agl-4.14.inc
@@ -0,0 +1,14 @@
+FILESEXTRAPATHS_prepend := "${THISDIR}/linux-4.14:"
+
+#-------------------------------------------------------------------------
+# smack patches for kernels keys
+
+SRC_URI_append_with-lsm-smack = "\
+ file://Smack-Privilege-check-on-key-operations.patch \
+ file://Smack-Handle-CGROUP2-in-the-same-way-that-CGROUP.patch \
+ "
+
+SRC_URI_append = "\
+ file://net-sch_generic-add-if_afp.h-header-to-get-ARPHRD_CA.patch \
+ file://net-sch_generic-Use-pfifo_fast-as-fallback-scheduler.patch \
+ "
diff --git a/meta-agl-core/recipes-kernel/linux/linux-agl-4.19.inc b/meta-agl-core/recipes-kernel/linux/linux-agl-4.19.inc
new file mode 100644
index 000000000..da4e0c067
--- /dev/null
+++ b/meta-agl-core/recipes-kernel/linux/linux-agl-4.19.inc
@@ -0,0 +1,5 @@
+FILESEXTRAPATHS_prepend := "${THISDIR}/linux-4.19:"
+
+SRC_URI_append = "\
+ file://net-sch_generic-Use-pfifo_fast-as-fallback-scheduler.patch \
+ "
diff --git a/meta-agl-core/recipes-kernel/linux/linux-agl.inc b/meta-agl-core/recipes-kernel/linux/linux-agl.inc
new file mode 100644
index 000000000..cd960ef6d
--- /dev/null
+++ b/meta-agl-core/recipes-kernel/linux/linux-agl.inc
@@ -0,0 +1,132 @@
+FILESEXTRAPATHS_prepend := "${THISDIR}/linux:"
+
+DEPENDS += "kern-tools-native"
+
+# returns all the elements from the src uri that are .cfg files
+def find_cfgs(d):
+ sources=src_patches(d, True)
+ sources_list=[]
+ for s in sources:
+ if s.endswith('.cfg'):
+ sources_list.append(s)
+
+ return sources_list
+
+do_configure_append () {
+ [ ! -f .config ] && cp -a ${WORKDIR}/defconfig .config
+ # Need to clear CONFIG_LSM for 5.1+ kernels to ensure it'll get
+ # regenerated to reflect configuration changes (e.g. SMACK).
+ sed -i '/^CONFIG_LSM/d' .config
+ merge_config.sh -m .config ${@" ".join(find_cfgs(d))}
+ yes '' | make oldconfig
+}
+
+# Extra configuration options for the AGL kernel
+SRC_URI_append = "\
+ file://can-bus.cfg \
+ file://usb.cfg \
+ file://uvc.cfg \
+ file://joystick.cfg \
+ file://fanotify.cfg \
+ file://uinput.cfg \
+ file://hid.cfg \
+ file://drm.cfg \
+ file://btusb.cfg \
+ file://usbaudio.cfg \
+ file://usbmodem.cfg \
+ file://i2c-led.cfg \
+ file://nfc.cfg \
+ file://overlayfs.cfg \
+ "
+
+SRC_URI_append = " ${@bb.utils.contains('AGL_XEN_GUEST_WANTED','1','file://xen_domu.cfg','',d)}"
+
+KERNEL_CONFIG_FRAGMENTS_append = " ${WORKDIR}/can-bus.cfg"
+# Enable support for usb video class for usb camera devices
+KERNEL_CONFIG_FRAGMENTS_append = " ${WORKDIR}/uvc.cfg"
+# Enable support for joystick devices
+KERNEL_CONFIG_FRAGMENTS_append = " ${WORKDIR}/joystick.cfg"
+KERNEL_CONFIG_FRAGMENTS_append = " ${WORKDIR}/fanotify.cfg"
+KERNEL_CONFIG_FRAGMENTS_append = " ${WORKDIR}/uinput.cfg"
+KERNEL_CONFIG_FRAGMENTS_append = " ${WORKDIR}/hid.cfg"
+# Enable DRM support for graphics
+KERNEL_CONFIG_FRAGMENTS_append = " ${WORKDIR}/drm.cfg"
+# Enable Bluetooth USB devices
+KERNEL_CONFIG_FRAGMENTS_append = " ${WORKDIR}/btusb.cfg"
+# Enable USB audio devices
+KERNEL_CONFIG_FRAGMENTS_append = " ${WORKDIR}/usbaudio.cfg"
+# Enable I2C and LED for demontrator
+KERNEL_CONFIG_FRAGMENTS_append = " ${WORKDIR}/i2c-led.cfg"
+# Enable NFC devices
+KERNEL_CONFIG_FRAGMENTS_append = " ${WORKDIR}/nfc.cfg"
+# Enable overlayfs filesystem support
+KERNEL_CONFIG_FRAGMENTS_append = " ${WORKDIR}/overlayfs.cfg"
+# Enable XEN support of the guest
+KERNEL_CONFIG_FRAGMENTS_append = " ${@bb.utils.contains('AGL_XEN_GUEST_WANTED','1','${WORKDIR}/xen_domu.cfg','',d)}"
+
+# Enable required features for the agl-netboot feature
+SRC_URI_append_netboot = " file://nbd.cfg \
+ file://ramdisk.cfg"
+KERNEL_CONFIG_FRAGMENTS_append_netboot = " ${WORKDIR}/nbd.cfg ${WORKDIR}/ramdisk.cfg"
+
+# Enable support for TP-Link TL-W722N USB Wifi adapter (rev 1 and 2)
+SRC_URI_append = " file://wifi.cfg"
+KERNEL_CONFIG_FRAGMENTS_append = " ${WORKDIR}/wifi.cfg"
+
+# Enable support for RTLSDR
+SRC_URI_append = " file://rtl_sdr.cfg"
+KERNEL_CONFIG_FRAGMENTS_append = " ${WORKDIR}/rtl_sdr.cfg"
+
+# Additional drivers for virtual machines
+# OVERRIDES save us some c'n'p below ...
+OVERRIDES_prepend_qemux86 = "virtualmachine:"
+OVERRIDES_prepend_qemux86-64 = "virtualmachine:"
+SRC_URI_append_virtualmachine = " file://vbox-vmware-sata.cfg"
+KERNEL_CONFIG_FRAGMENTS_append_virtualmachine = " ${WORKDIR}/vbox-vmware-sata.cfg"
+
+# Extra configuration for using qemux86-64 image on physical hardware
+SRC_URI_append_qemux86-64 = "\
+ file://x86-extra-graphic-devices.cfg \
+ file://x86-net-devices.cfg \
+ file://x86-security-tpm.cfg \
+ file://x86-usb-devices.cfg \
+ file://x86-upsquare.cfg \
+"
+KERNEL_CONFIG_FRAGMENTS_append_qemux86-64 = "\
+ ${WORKDIR}/x86-extra-graphic-devices.cfg \
+ ${WORKDIR}/x86-net-devices.cfg \
+ ${WORKDIR}/x86-security-tpm.cfg \
+ ${WORKDIR}/x86-usb-devices.cfg \
+ ${WORKDIR}/x86-upsquare.cfg \
+"
+
+# Enable support for smack
+KERNEL_CONFIG_FRAGMENTS_append_with-lsm-smack = "\
+ ${WORKDIR}/audit.cfg \
+ ${WORKDIR}/smack.cfg \
+ ${WORKDIR}/smack-default-lsm.cfg \
+"
+
+# ALSA support and other sound related configuration
+SRC_URI_append = " file://sound.cfg"
+KERNEL_CONFIG_FRAGMENTS_append = " ${WORKDIR}/sound.cfg"
+
+# add hda audio for qemu
+SRC_URI_append_qemuall = " file://sound-hda.cfg"
+KERNEL_CONFIG_FRAGMENTS_append_qemuall = " ${WORKDIR}/sound-hda.cfg"
+
+# iio-dummy-device support for test iiodevice
+SRC_URI_append = " file://iiodevice.cfg"
+KERNEL_CONFIG_FRAGMENTS_append = " ${WORKDIR}/iiodevice.cfg"
+
+# external rtc support via e.g. http://wiki.seeedstudio.com/Grove-RTC/
+SRC_URI_append = " file://rtc.cfg"
+KERNEL_CONFIG_FRAGMENTS_append = " ${WORKDIR}/rtc.cfg"
+
+# netfilter options
+SRC_URI_append = " file://netfilter.cfg"
+KERNEL_CONFIG_FRAGMENTS_append = " ${WORKDIR}/netfilter.cfg"
+
+# Enable support for SystemTap
+SRC_URI_append = " ${@bb.utils.contains('DISTRO_FEATURES', 'agl-devel', 'file://systemtap.cfg', '', d)}"
+KERNEL_CONFIG_FRAGMENTS_append = " ${@bb.utils.contains('DISTRO_FEATURES', 'agl-devel', '${WORKDIR}/systemtap.cfg', '', d)}"
diff --git a/meta-agl-core/recipes-kernel/linux/linux/btusb.cfg b/meta-agl-core/recipes-kernel/linux/linux/btusb.cfg
new file mode 100644
index 000000000..dd7c460bb
--- /dev/null
+++ b/meta-agl-core/recipes-kernel/linux/linux/btusb.cfg
@@ -0,0 +1,37 @@
+CONFIG_BT=m
+CONFIG_BT_BREDR=y
+CONFIG_BT_RFCOMM=m
+CONFIG_BT_RFCOMM_TTY=y
+CONFIG_BT_BNEP=m
+CONFIG_BT_BNEP_MC_FILTER=y
+CONFIG_BT_BNEP_PROTO_FILTER=y
+CONFIG_BT_HIDP=m
+CONFIG_BT_HS=y
+CONFIG_BT_LE=y
+CONFIG_BT_LEDS=y
+# CONFIG_BT_SELFTEST is not set
+CONFIG_BT_DEBUGFS=y
+
+#
+# Bluetooth device drivers
+#
+CONFIG_BT_INTEL=m
+CONFIG_BT_BCM=m
+CONFIG_BT_RTL=m
+CONFIG_BT_HCIBTUSB=m
+CONFIG_BT_HCIBTUSB_BCM=y
+CONFIG_BT_HCIBTUSB_RTL=y
+# CONFIG_BT_HCIBTSDIO is not set
+# CONFIG_BT_HCIUART is not set
+CONFIG_BT_HCIBCM203X=m
+CONFIG_BT_HCIBFUSB=m
+# CONFIG_BT_HCIVHCI is not set
+# CONFIG_BT_MRVL is not set
+# CONFIG_BT_ATH3K is not set
+CONFIG_CRYPTO_ECB=m
+CONFIG_CRYPTO_CMAC=m
+
+#
+# Bluetooth AVRCP support
+#
+CONFIG_INPUT_UINPUT=y
diff --git a/meta-agl-core/recipes-kernel/linux/linux/can-bus.cfg b/meta-agl-core/recipes-kernel/linux/linux/can-bus.cfg
new file mode 100644
index 000000000..2f24b7607
--- /dev/null
+++ b/meta-agl-core/recipes-kernel/linux/linux/can-bus.cfg
@@ -0,0 +1,42 @@
+CONFIG_TASKSTATS=y
+CONFIG_TASK_DELAY_ACCT=y
+# CONFIG_TASK_XACCT is not set
+CONFIG_USER_RETURN_NOTIFIER=y
+CONFIG_PREEMPT_NOTIFIERS=y
+CONFIG_CAN=m
+CONFIG_CAN_RAW=m
+CONFIG_CAN_BCM=m
+CONFIG_CAN_GW=m
+CONFIG_CAN_J1939=m
+
+#
+# CAN Device Drivers
+#
+CONFIG_CAN_C_CAN=m
+CONFIG_CAN_C_CAN_PLATFORM=m
+CONFIG_CAN_VCAN=m
+CONFIG_CAN_SLCAN=m
+CONFIG_CAN_DEV=m
+CONFIG_CAN_CALC_BITTIMING=y
+# CONFIG_CAN_LEDS is not set
+# CONFIG_CAN_SJA1000 is not set
+# CONFIG_CAN_M_CAN is not set
+# CONFIG_CAN_CC770 is not set
+
+#
+# CAN SPI interfaces
+#
+CONFIG_CAN_MCP251X=m
+
+#
+# CAN USB interfaces
+#
+# CONFIG_CAN_EMS_USB is not set
+CONFIG_CAN_ESD_USB2=m
+CONFIG_CAN_GS_USB=m
+CONFIG_CAN_KVASER_USB=m
+CONFIG_CAN_PEAK_USB=m
+CONFIG_CAN_8DEV_USB=m
+CONFIG_CAN_MCBA_USB=m
+# CONFIG_CAN_SOFTING is not set
+# CONFIG_CAN_DEBUG_DEVICES is not set
diff --git a/meta-agl-core/recipes-kernel/linux/linux/drm.cfg b/meta-agl-core/recipes-kernel/linux/linux/drm.cfg
new file mode 100644
index 000000000..65fe71cd0
--- /dev/null
+++ b/meta-agl-core/recipes-kernel/linux/linux/drm.cfg
@@ -0,0 +1,2 @@
+CONFIG_DRM_BOCHS=y
+CONFIG_DRM_VIRTIO_GPU=y
diff --git a/meta-agl-core/recipes-kernel/linux/linux/fanotify.cfg b/meta-agl-core/recipes-kernel/linux/linux/fanotify.cfg
new file mode 100644
index 000000000..de5dd8d31
--- /dev/null
+++ b/meta-agl-core/recipes-kernel/linux/linux/fanotify.cfg
@@ -0,0 +1,3 @@
+# Enable the fanotify API (notification/interception of FS events)
+CONFIG_FANOTIFY=y
+CONFIG_FANOTIFY_ACCESS_PERMISSIONS=y
diff --git a/meta-agl-core/recipes-kernel/linux/linux/hid.cfg b/meta-agl-core/recipes-kernel/linux/linux/hid.cfg
new file mode 100644
index 000000000..327c753ae
--- /dev/null
+++ b/meta-agl-core/recipes-kernel/linux/linux/hid.cfg
@@ -0,0 +1 @@
+CONFIG_HID_MULTITOUCH=y
diff --git a/meta-agl-core/recipes-kernel/linux/linux/i2c-led.cfg b/meta-agl-core/recipes-kernel/linux/linux/i2c-led.cfg
new file mode 100644
index 000000000..248b5118a
--- /dev/null
+++ b/meta-agl-core/recipes-kernel/linux/linux/i2c-led.cfg
@@ -0,0 +1,3 @@
+# enabling I2C and LED for demonstrator
+CONFIG_I2C_TINY_USB=y
+CONFIG_LEDS_BLINKM=y
diff --git a/meta-agl-core/recipes-kernel/linux/linux/iiodevice.cfg b/meta-agl-core/recipes-kernel/linux/linux/iiodevice.cfg
new file mode 100644
index 000000000..c5b8ff35e
--- /dev/null
+++ b/meta-agl-core/recipes-kernel/linux/linux/iiodevice.cfg
@@ -0,0 +1,26 @@
+#
+# Extcon Device Drivers
+#
+CONFIG_IIO=y
+CONFIG_IIO_BUFFER=y
+CONFIG_IIO_BUFFER_CB=y
+CONFIG_IIO_KFIFO_BUF=y
+CONFIG_IIO_CONFIGFS=m
+CONFIG_IIO_TRIGGER=y
+CONFIG_IIO_CONSUMERS_PER_TRIGGER=2
+CONFIG_IIO_SW_DEVICE=m
+CONFIG_IIO_SW_TRIGGER=m
+
+#
+# IIO dummy driver
+#
+CONFIG_IIO_DUMMY_EVGEN=m
+CONFIG_IIO_SIMPLE_DUMMY=m
+CONFIG_IIO_SIMPLE_DUMMY_EVENTS=y
+CONFIG_IIO_SIMPLE_DUMMY_BUFFER=y
+
+#
+# Triggers - standalone
+#
+CONFIG_IIO_HRTIMER_TRIGGER=m
+CONFIG_IIO_TRIGGERED_BUFFER=m
diff --git a/meta-agl-core/recipes-kernel/linux/linux/joystick.cfg b/meta-agl-core/recipes-kernel/linux/linux/joystick.cfg
new file mode 100644
index 000000000..2201bcb00
--- /dev/null
+++ b/meta-agl-core/recipes-kernel/linux/linux/joystick.cfg
@@ -0,0 +1,9 @@
+CONFIG_INPUT_JOYDEV=y
+CONFIG_INPUT_JOYSTICK=y
+CONFIG_JOYSTICK_ADI=y
+CONFIG_GAMEPORT=y
+CONFIG_HID_LOGITECH=y
+CONFIG_LOGIWHEELS_FF=y
+CONFIG_HID_LOGITECH_HIDPP=y
+CONFIG_LOGITECH_FF=y
+CONFIG_LOGIG940_FF=y
diff --git a/meta-agl-core/recipes-kernel/linux/linux/nbd.cfg b/meta-agl-core/recipes-kernel/linux/linux/nbd.cfg
new file mode 100644
index 000000000..e5d897556
--- /dev/null
+++ b/meta-agl-core/recipes-kernel/linux/linux/nbd.cfg
@@ -0,0 +1,3 @@
+CONFIG_BLK_DEV_NBD=y
+# for CI use enable CONFIG_VETH=y
+CONFIG_VETH=y
diff --git a/meta-agl-core/recipes-kernel/linux/linux/net-sch_generic-Use-pfifo_fast-as-fallback-scheduler.patch b/meta-agl-core/recipes-kernel/linux/linux/net-sch_generic-Use-pfifo_fast-as-fallback-scheduler.patch
new file mode 100644
index 000000000..37ace5a58
--- /dev/null
+++ b/meta-agl-core/recipes-kernel/linux/linux/net-sch_generic-Use-pfifo_fast-as-fallback-scheduler.patch
@@ -0,0 +1,75 @@
+From 546b85bb0aadb5a928b49b53dc02911996169c0b Mon Sep 17 00:00:00 2001
+From: Vincent Prince <vincent.prince.fr@gmail.com>
+Date: Wed, 23 Oct 2019 15:44:20 +0200
+Subject: [PATCH] net: sch_generic: Use pfifo_fast as fallback scheduler for
+ CAN hardware
+
+There is networking hardware that isn't based on Ethernet for layers 1 and 2.
+
+For example CAN.
+
+CAN is a multi-master serial bus standard for connecting Electronic Control
+Units [ECUs] also known as nodes. A frame on the CAN bus carries up to 8 bytes
+of payload. Frame corruption is detected by a CRC. However frame loss due to
+corruption is possible, but a quite unusual phenomenon.
+
+While fq_codel works great for TCP/IP, it doesn't for CAN. There are a lot of
+legacy protocols on top of CAN, which are not build with flow control or high
+CAN frame drop rates in mind.
+
+When using fq_codel, as soon as the queue reaches a certain delay based length,
+skbs from the head of the queue are silently dropped. Silently meaning that the
+user space using a send() or similar syscall doesn't get an error. However
+TCP's flow control algorithm will detect dropped packages and adjust the
+bandwidth accordingly.
+
+When using fq_codel and sending raw frames over CAN, which is the common use
+case, the user space thinks the package has been sent without problems, because
+send() returned without an error. pfifo_fast will drop skbs, if the queue
+length exceeds the maximum. But with this scheduler the skbs at the tail are
+dropped, an error (-ENOBUFS) is propagated to user space. So that the user
+space can slow down the package generation.
+
+On distributions, where fq_codel is made default via CONFIG_DEFAULT_NET_SCH
+during compile time, or set default during runtime with sysctl
+net.core.default_qdisc (see [1]), we get a bad user experience. In my test case
+with pfifo_fast, I can transfer thousands of million CAN frames without a frame
+drop. On the other hand with fq_codel there is more then one lost CAN frame per
+thousand frames.
+
+As pointed out fq_codel is not suited for CAN hardware, so this patch changes
+attach_one_default_qdisc() to use pfifo_fast for "ARPHRD_CAN" network devices.
+
+During transition of a netdev from down to up state the default queuing
+discipline is attached by attach_default_qdiscs() with the help of
+attach_one_default_qdisc(). This patch modifies attach_one_default_qdisc() to
+attach the pfifo_fast (pfifo_fast_ops) if the network device type is
+"ARPHRD_CAN".
+
+[1] https://github.com/systemd/systemd/issues/9194
+
+Suggested-by: Marc Kleine-Budde <mkl@pengutronix.de>
+Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
+Signed-off-by: Vincent Prince <vincent.prince.fr@gmail.com>
+Acked-by: Dave Taht <dave.taht@gmail.com>
+Signed-off-by: David S. Miller <davem@davemloft.net>
+---
+ net/sched/sch_generic.c | 2 ++
+ 1 file changed, 2 insertions(+)
+
+diff --git a/net/sched/sch_generic.c b/net/sched/sch_generic.c
+index ed5b0e9fd395..4c5dfcb01e00 100644
+--- a/net/sched/sch_generic.c
++++ b/net/sched/sch_generic.c
+@@ -1038,6 +1038,8 @@ static void attach_one_default_qdisc(struct net_device *dev,
+
+ if (dev->priv_flags & IFF_NO_QUEUE)
+ ops = &noqueue_qdisc_ops;
++ else if(dev->type == ARPHRD_CAN)
++ ops = &pfifo_fast_ops;
+
+ qdisc = qdisc_create_dflt(dev_queue, ops, TC_H_ROOT, NULL);
+ if (!qdisc) {
+--
+2.25.0
+
diff --git a/meta-agl-core/recipes-kernel/linux/linux/netfilter.cfg b/meta-agl-core/recipes-kernel/linux/linux/netfilter.cfg
new file mode 100644
index 000000000..34be704c1
--- /dev/null
+++ b/meta-agl-core/recipes-kernel/linux/linux/netfilter.cfg
@@ -0,0 +1 @@
+CONFIG_NETFILTER_XT_MATCH_OWNER=m
diff --git a/meta-agl-core/recipes-kernel/linux/linux/nfc.cfg b/meta-agl-core/recipes-kernel/linux/linux/nfc.cfg
new file mode 100644
index 000000000..6d863a075
--- /dev/null
+++ b/meta-agl-core/recipes-kernel/linux/linux/nfc.cfg
@@ -0,0 +1,34 @@
+CONFIG_NFC=m
+CONFIG_NFC_DIGITAL=m
+CONFIG_NFC_NCI=m
+CONFIG_NFC_NCI_SPI=m
+CONFIG_NFC_HCI=m
+CONFIG_NFC_SHDLC=y
+CONFIG_NFC_TRF7970A=m
+CONFIG_NFC_MEI_PHY=m
+CONFIG_NFC_PORT100=m
+CONFIG_NFC_FDP=m
+CONFIG_NFC_FDP_I2C=m
+CONFIG_NFC_PN544=m
+CONFIG_NFC_PN544_I2C=m
+CONFIG_NFC_PN544_MEI=m
+CONFIG_NFC_PN533=m
+CONFIG_NFC_PN533_USB=m
+CONFIG_NFC_PN533_I2C=m
+CONFIG_NFC_MICROREAD=m
+CONFIG_NFC_MICROREAD_I2C=m
+CONFIG_NFC_MICROREAD_MEI=m
+CONFIG_NFC_MRVL=m
+CONFIG_NFC_MRVL_USB=m
+CONFIG_NFC_MRVL_I2C=m
+CONFIG_NFC_MRVL_SPI=m
+CONFIG_NFC_ST21NFCA=m
+CONFIG_NFC_ST21NFCA_I2C=m
+CONFIG_NFC_ST_NCI=m
+CONFIG_NFC_ST_NCI_I2C=m
+CONFIG_NFC_ST_NCI_SPI=m
+CONFIG_NFC_NXP_NCI=m
+CONFIG_NFC_NXP_NCI_I2C=m
+CONFIG_NFC_S3FWRN5=m
+CONFIG_NFC_S3FWRN5_I2C=m
+CONFIG_NFC_ST95HF=m
diff --git a/meta-agl-core/recipes-kernel/linux/linux/overlayfs.cfg b/meta-agl-core/recipes-kernel/linux/linux/overlayfs.cfg
new file mode 100644
index 000000000..025118ed6
--- /dev/null
+++ b/meta-agl-core/recipes-kernel/linux/linux/overlayfs.cfg
@@ -0,0 +1,7 @@
+CONFIG_OVERLAY_FS=y
+CONFIG_OVERLAY_FS_REDIRECT_DIR=y
+CONFIG_OVERLAY_FS_REDIRECT_ALWAYS_FOLLOW=n
+CONFIG_OVERLAY_FS_INDEX=y
+CONFIG_OVERLAY_FS_NFS_EXPORT=n
+CONFIG_OVERLAY_FS_XINO_AUTO=y
+CONFIG_OVERLAY_FS_METACOPY=y
diff --git a/meta-agl-core/recipes-kernel/linux/linux/procevent.cfg b/meta-agl-core/recipes-kernel/linux/linux/procevent.cfg
new file mode 100644
index 000000000..6e08c25bc
--- /dev/null
+++ b/meta-agl-core/recipes-kernel/linux/linux/procevent.cfg
@@ -0,0 +1,2 @@
+CONFIG_CONNECTOR=y
+CONFIG_PROC_EVENTS=y
diff --git a/meta-agl-core/recipes-kernel/linux/linux/ramdisk.cfg b/meta-agl-core/recipes-kernel/linux/linux/ramdisk.cfg
new file mode 100644
index 000000000..3d44de805
--- /dev/null
+++ b/meta-agl-core/recipes-kernel/linux/linux/ramdisk.cfg
@@ -0,0 +1,2 @@
+CONFIG_BLK_DEV_RAM=y
+CONFIG_BLK_DEV_RAM_SIZE=65536
diff --git a/meta-agl-core/recipes-kernel/linux/linux/rtc.cfg b/meta-agl-core/recipes-kernel/linux/linux/rtc.cfg
new file mode 100644
index 000000000..2641958a0
--- /dev/null
+++ b/meta-agl-core/recipes-kernel/linux/linux/rtc.cfg
@@ -0,0 +1,7 @@
+CONFIG_RTC_CLASS=y
+CONFIG_RTC_LIB=y
+CONFIG_RTC_INTF_SYSFS=y
+CONFIG_RTC_INTF_PROC=y
+CONFIG_RTC_INTF_DEV=y
+CONFIG_RTC_DRV_DS1307=m
+CONFIG_RTC_DRV_DS3232=m
diff --git a/meta-agl-core/recipes-kernel/linux/linux/rtl_sdr.cfg b/meta-agl-core/recipes-kernel/linux/linux/rtl_sdr.cfg
new file mode 100644
index 000000000..d4574700a
--- /dev/null
+++ b/meta-agl-core/recipes-kernel/linux/linux/rtl_sdr.cfg
@@ -0,0 +1,4 @@
+CONFIG_MEDIA_USB_SUPPORT=y
+CONFIG_MEDIA_DIGITAL_TV_SUPPORT=y
+CONFIG_DVB_USB_V2=m
+CONFIG_DVB_USB_RTL28XXU=m
diff --git a/meta-agl-core/recipes-kernel/linux/linux/scheddebug.cfg b/meta-agl-core/recipes-kernel/linux/linux/scheddebug.cfg
new file mode 100644
index 000000000..e8b09aa7c
--- /dev/null
+++ b/meta-agl-core/recipes-kernel/linux/linux/scheddebug.cfg
@@ -0,0 +1 @@
+CONFIG_SCHED_DEBUG=y
diff --git a/meta-agl-core/recipes-kernel/linux/linux/sound-hda.cfg b/meta-agl-core/recipes-kernel/linux/linux/sound-hda.cfg
new file mode 100644
index 000000000..115504c39
--- /dev/null
+++ b/meta-agl-core/recipes-kernel/linux/linux/sound-hda.cfg
@@ -0,0 +1,20 @@
+# make sure HDA sound modules are on
+# this is required for CI tests
+CONFIG_SND_HDA_INTEL=m
+CONFIG_SND_HDA_GENERIC=m
+CONFIG_SND_HDA_CODEC_REALTEK=m
+CONFIG_SND_HDA_CODEC_ANALOG=m
+CONFIG_SND_HDA_CODEC_SIGMATEL=m
+CONFIG_SND_HDA_CODEC_VIA=m
+CONFIG_SND_HDA_CODEC_HDMI=m
+CONFIG_SND_HDA_CODEC_CIRRUS=m
+CONFIG_SND_HDA_CODEC_CONEXANT=m
+CONFIG_SND_HDA_CODEC_CA0110=m
+CONFIG_SND_HDA_CODEC_CA0132=m
+CONFIG_SND_HDA_CODEC_CMEDIA=m
+CONFIG_SND_HDA_CODEC_SI3054=m
+CONFIG_SND_HDA_RECONFIG=y
+CONFIG_SND_HDA_PATCH_LOADER=y
+
+# enable dummy sound for special cases in CI
+CONFIG_SND_DUMMY=m
diff --git a/meta-agl-core/recipes-kernel/linux/linux/sound.cfg b/meta-agl-core/recipes-kernel/linux/linux/sound.cfg
new file mode 100644
index 000000000..ad34ea680
--- /dev/null
+++ b/meta-agl-core/recipes-kernel/linux/linux/sound.cfg
@@ -0,0 +1,7 @@
+CONFIG_SOUND=y
+CONFIG_SND=y
+CONFIG_SND_TIMER=y
+CONFIG_SND_PCM=y
+CONFIG_SND_DYNAMIC_MINORS=y
+CONFIG_SND_MAX_CARDS=32
+CONFIG_SND_ALOOP=m
diff --git a/meta-agl-core/recipes-kernel/linux/linux/systemtap.cfg b/meta-agl-core/recipes-kernel/linux/linux/systemtap.cfg
new file mode 100644
index 000000000..4886c27f1
--- /dev/null
+++ b/meta-agl-core/recipes-kernel/linux/linux/systemtap.cfg
@@ -0,0 +1,9 @@
+CONFIG_KPROBES=y
+CONFIG_UPROBES=y
+CONFIG_UPROBE_EVENTS=y
+CONFIG_FTRACE=y
+CONFIG_KPROBE_EVENTS=y
+CONFIG_RELAY=y
+CONFIG_DEBUG_FS=y
+CONFIG_DEBUG_INFO=y
+
diff --git a/meta-agl-core/recipes-kernel/linux/linux/uinput.cfg b/meta-agl-core/recipes-kernel/linux/linux/uinput.cfg
new file mode 100644
index 000000000..7996ef1dd
--- /dev/null
+++ b/meta-agl-core/recipes-kernel/linux/linux/uinput.cfg
@@ -0,0 +1,3 @@
+# Enable the User-level Input driver (required by "wayland-fits")
+CONFIG_INPUT_MISC=y
+CONFIG_INPUT_UINPUT=m
diff --git a/meta-agl-core/recipes-kernel/linux/linux/usb.cfg b/meta-agl-core/recipes-kernel/linux/linux/usb.cfg
new file mode 100644
index 000000000..8e9e98ecb
--- /dev/null
+++ b/meta-agl-core/recipes-kernel/linux/linux/usb.cfg
@@ -0,0 +1,8 @@
+CONFIG_USB_SERIAL=y
+CONFIG_USB_SERIAL_GENERIC=y
+CONFIG_USB_ACM=m
+CONFIG_CRC_CCITT=y
+CONFIG_USB_SERIAL_FTDI_SIO=m
+CONFIG_USB_OHCI_HCD=y
+CONFIG_USB_EHCI_HCD=y
+CONFIG_USB_EHCI_PCI=y
diff --git a/meta-agl-core/recipes-kernel/linux/linux/usbaudio.cfg b/meta-agl-core/recipes-kernel/linux/linux/usbaudio.cfg
new file mode 100644
index 000000000..5961f43d3
--- /dev/null
+++ b/meta-agl-core/recipes-kernel/linux/linux/usbaudio.cfg
@@ -0,0 +1,2 @@
+CONFIG_SND_USB=y
+CONFIG_SND_USB_AUDIO=y
diff --git a/meta-agl-core/recipes-kernel/linux/linux/usbmodem.cfg b/meta-agl-core/recipes-kernel/linux/linux/usbmodem.cfg
new file mode 100644
index 000000000..3ded931e5
--- /dev/null
+++ b/meta-agl-core/recipes-kernel/linux/linux/usbmodem.cfg
@@ -0,0 +1,7 @@
+CONFIG_USB_USBNET=m
+CONFIG_USB_NET_CDC_MBIM=m
+CONFIG_USB_NET_QMI_WWAN=m
+CONFIG_USB_SIERRA_NET=m
+CONFIG_USB_SERIAL_OPTION=m
+CONFIG_USB_SERIAL_SIERRAWIRELESS=m
+CONFIG_USB_SERIAL_QUALCOMM=m
diff --git a/meta-agl-core/recipes-kernel/linux/linux/uvc.cfg b/meta-agl-core/recipes-kernel/linux/linux/uvc.cfg
new file mode 100644
index 000000000..7c6556c11
--- /dev/null
+++ b/meta-agl-core/recipes-kernel/linux/linux/uvc.cfg
@@ -0,0 +1,4 @@
+CONFIG_VIDEOBUF2_VMALLOC=y
+CONFIG_MEDIA_USB_SUPPORT=y
+CONFIG_USB_VIDEO_CLASS=m
+CONFIG_USB_VIDEO_CLASS_INPUT_EVDEV=y
diff --git a/meta-agl-core/recipes-kernel/linux/linux/vbox-vmware-sata.cfg b/meta-agl-core/recipes-kernel/linux/linux/vbox-vmware-sata.cfg
new file mode 100644
index 000000000..ce1eca1a7
--- /dev/null
+++ b/meta-agl-core/recipes-kernel/linux/linux/vbox-vmware-sata.cfg
@@ -0,0 +1,19 @@
+# enable harddrive driver for vmware/virtualbox
+CONFIG_ATA_PIIX=y
+CONFIG_SATA_AHCI=y
+CONFIG_ATA_SFF=y
+CONFIG_ATA_BMDMA=y
+CONFIG_ATA_GENERIC=y
+CONFIG_ATA_ACPI=y
+
+# needed for VMWare
+CONFIG_SCSI=y
+CONFIG_BLK_DEV_SD=y
+CONFIG_FUSION=y
+CONFIG_FUSION_SPI=y
+CONFIG_DRM_VMWGFX=y
+CONFIG_DRM_VMWGFX_FBCON=y
+CONFIG_VMWARE_BALLOON=m
+CONFIG_VMWARE_VMCI=m
+CONFIG_VMWARE_VMCI_VSOCKETS=m
+CONFIG_SND_ENS1371=m
diff --git a/meta-agl-core/recipes-kernel/linux/linux/wifi.cfg b/meta-agl-core/recipes-kernel/linux/linux/wifi.cfg
new file mode 100644
index 000000000..00c2e06e4
--- /dev/null
+++ b/meta-agl-core/recipes-kernel/linux/linux/wifi.cfg
@@ -0,0 +1,6 @@
+CONFIG_CFG80211=m
+CONFIG_MAC80211=m
+CONFIG_WLAN_VENDOR_ATH=m
+CONFIG_ATH9K_HTC=m
+CONFIG_STAGING=y
+CONFIG_R8188EU=m
diff --git a/meta-agl-core/recipes-kernel/linux/linux/x86-extra-graphic-devices.cfg b/meta-agl-core/recipes-kernel/linux/linux/x86-extra-graphic-devices.cfg
new file mode 100644
index 000000000..d2b64de67
--- /dev/null
+++ b/meta-agl-core/recipes-kernel/linux/linux/x86-extra-graphic-devices.cfg
@@ -0,0 +1,40 @@
+CONFIG_MWIFIEX_PCIE=m
+CONFIG_MWIFIEX_USB=m
+CONFIG_RSI_91X=m
+CONFIG_RSI_DEBUGFS=y
+CONFIG_RSI_SDIO=m
+CONFIG_RSI_USB=m
+CONFIG_DRM_RADEON=m
+CONFIG_DRM_RADEON_USERPTR=y
+CONFIG_DRM_NOUVEAU=m
+CONFIG_NOUVEAU_DEBUG=5
+CONFIG_NOUVEAU_DEBUG_DEFAULT=3
+CONFIG_DRM_NOUVEAU_BACKLIGHT=y
+CONFIG_DRM_VGEM=m
+CONFIG_DRM_VMWGFX=m
+CONFIG_DRM_VMWGFX_FBCON=y
+CONFIG_DRM_GMA500=m
+CONFIG_DRM_GMA600=y
+CONFIG_DRM_GMA3600=y
+CONFIG_DRM_UDL=m
+CONFIG_FB_DEFERRED_IO=y
+CONFIG_FB_BACKLIGHT=y
+CONFIG_IRQ_BYPASS_MANAGER=m
+CONFIG_ACPI_WMI=m
+CONFIG_MXM_WMI=m
+CONFIG_SCHED_INFO=y
+CONFIG_HAVE_KVM_IRQCHIP=y
+CONFIG_HAVE_KVM_IRQFD=y
+CONFIG_HAVE_KVM_IRQ_ROUTING=y
+CONFIG_HAVE_KVM_EVENTFD=y
+CONFIG_KVM_MMIO=y
+CONFIG_KVM_ASYNC_PF=y
+CONFIG_HAVE_KVM_MSI=y
+CONFIG_HAVE_KVM_CPU_RELAX_INTERCEPT=y
+CONFIG_KVM_VFIO=y
+CONFIG_KVM_GENERIC_DIRTYLOG_READ_PROTECT=y
+CONFIG_KVM_COMPAT=y
+CONFIG_HAVE_KVM_IRQ_BYPASS=y
+CONFIG_KVM=m
+CONFIG_KVM_INTEL=m
+CONFIG_CRC7=m
diff --git a/meta-agl-core/recipes-kernel/linux/linux/x86-net-devices.cfg b/meta-agl-core/recipes-kernel/linux/linux/x86-net-devices.cfg
new file mode 100644
index 000000000..6c5b698a9
--- /dev/null
+++ b/meta-agl-core/recipes-kernel/linux/linux/x86-net-devices.cfg
@@ -0,0 +1,3 @@
+CONFIG_IGB=y
+CONFIG_IGB_DCA=y
+CONFIG_R8169=y
diff --git a/meta-agl-core/recipes-kernel/linux/linux/x86-security-tpm.cfg b/meta-agl-core/recipes-kernel/linux/linux/x86-security-tpm.cfg
new file mode 100644
index 000000000..b66b1b9b1
--- /dev/null
+++ b/meta-agl-core/recipes-kernel/linux/linux/x86-security-tpm.cfg
@@ -0,0 +1,3 @@
+CONFIG_TCG_TPM=y
+CONFIG_TCG_TIS=y
+CONFIG_TCG_CRB=y
diff --git a/meta-agl-core/recipes-kernel/linux/linux/x86-upsquare.cfg b/meta-agl-core/recipes-kernel/linux/linux/x86-upsquare.cfg
new file mode 100644
index 000000000..d2bed63fa
--- /dev/null
+++ b/meta-agl-core/recipes-kernel/linux/linux/x86-upsquare.cfg
@@ -0,0 +1,11 @@
+CONFIG_X86_INTEL_LPSS=y
+CONFIG_EXPERT=y
+CONFIG_SERIAL_8250_DMA=y
+CONFIG_SERIAL_8250_DW=y
+CONFIG_MFD_CORE=y
+CONFIG_MFD_INTEL_LPSS=y
+CONFIG_MFD_INTEL_LPSS_ACPI=y
+CONFIG_MFD_INTEL_LPSS_PCI=y
+CONFIG_IWLWIFI=m
+CONFIG_IWLMVM=m
+CONFIG_IWLDVM=m
diff --git a/meta-agl-core/recipes-kernel/linux/linux/x86-usb-devices.cfg b/meta-agl-core/recipes-kernel/linux/linux/x86-usb-devices.cfg
new file mode 100644
index 000000000..19c57796e
--- /dev/null
+++ b/meta-agl-core/recipes-kernel/linux/linux/x86-usb-devices.cfg
@@ -0,0 +1,82 @@
+CONFIG_BT_QCA=m
+CONFIG_BT_HCIBTSDIO=m
+CONFIG_BT_HCIUART=m
+CONFIG_BT_HCIUART_BCSP=y
+CONFIG_BT_HCIUART_ATH3K=y
+CONFIG_BT_HCIUART_LL=y
+CONFIG_BT_HCIUART_3WIRE=y
+CONFIG_BT_HCIUART_BCM=y
+CONFIG_BT_HCIUART_QCA=y
+CONFIG_BT_HCIBCM203X=m
+CONFIG_BT_HCIBPA10X=m
+CONFIG_BT_HCIBFUSB=m
+CONFIG_BT_HCIVHCI=m
+CONFIG_BT_MRVL=m
+CONFIG_BT_MRVL_SDIO=m
+CONFIG_BT_ATH3K=m
+CONFIG_WIRELESS_EXT=y
+CONFIG_WEXT_SPY=y
+CONFIG_WEXT_PRIV=y
+CONFIG_CFG80211_WEXT_EXPORT=y
+CONFIG_LIB80211=m
+CONFIG_LIB80211_CRYPT_WEP=m
+CONFIG_LIB80211_CRYPT_CCMP=m
+CONFIG_LIB80211_CRYPT_TKIP=m
+# CONFIG_LIB80211_DEBUG is not set
+CONFIG_VHOST_NET=m
+CONFIG_VHOST_RING=m
+CONFIG_VHOST=m
+CONFIG_MICROCHIP_PHY=m
+CONFIG_USB_CATC=m
+CONFIG_USB_KAWETH=m
+CONFIG_USB_PEGASUS=m
+CONFIG_USB_RTL8152=m
+CONFIG_USB_LAN78XX=m
+CONFIG_USB_NET_SR9800=m
+CONFIG_USB_NET_RNDIS_HOST=m
+CONFIG_USB_HSO=m
+CONFIG_USB_IPHETH=m
+CONFIG_USB_ZD1201=m
+CONFIG_USB_NET_RNDIS_WLAN=m
+CONFIG_RTL8180=m
+CONFIG_RTL8187=m
+CONFIG_RTL8187_LEDS=y
+CONFIG_MWL8K=m
+# CONFIG_B43_BUSES_BCMA_AND_SSB is not set
+# CONFIG_B43_BUSES_BCMA is not set
+# CONFIG_B43_BUSES_SSB is not set
+CONFIG_BRCMFMAC_PROTO_MSGBUF=y
+CONFIG_BRCMFMAC_PCIE=y
+CONFIG_IPW2100=m
+CONFIG_IPW2100_MONITOR=y
+CONFIG_IPW2100_DEBUG=y
+CONFIG_IPW2200=m
+CONFIG_IPW2200_MONITOR=y
+CONFIG_IPW2200_RADIOTAP=y
+CONFIG_IPW2200_PROMISCUOUS=y
+CONFIG_IPW2200_QOS=y
+CONFIG_IPW2200_DEBUG=y
+CONFIG_LIBIPW=m
+CONFIG_LIBIPW_DEBUG=y
+CONFIG_LIBERTAS=m
+CONFIG_LIBERTAS_USB=m
+CONFIG_LIBERTAS_SDIO=m
+CONFIG_LIBERTAS_SPI=m
+# CONFIG_LIBERTAS_DEBUG is not set
+# CONFIG_LIBERTAS_MESH is not set
+CONFIG_RTL8XXXU=m
+CONFIG_RTL8XXXU_UNTESTED=y
+CONFIG_WLAN_VENDOR_TI=y
+CONFIG_WL1251=m
+# CONFIG_WL1251_SPI is not set
+# CONFIG_WL1251_SDIO is not set
+CONFIG_WL12XX=m
+CONFIG_WL18XX=m
+CONFIG_WLCORE=m
+CONFIG_WLCORE_SPI=m
+CONFIG_WLCORE_SDIO=m
+CONFIG_WILINK_PLATFORM_DATA=y
+CONFIG_ZD1211RW=m
+CONFIG_ZD1211RW_DEBUG=y
+CONFIG_MWIFIEX=m
+# CONFIG_MWIFIEX_SDIO is not set
diff --git a/meta-agl-core/recipes-kernel/linux/linux/xen_domu.cfg b/meta-agl-core/recipes-kernel/linux/linux/xen_domu.cfg
new file mode 100644
index 000000000..8bc59eb1e
--- /dev/null
+++ b/meta-agl-core/recipes-kernel/linux/linux/xen_domu.cfg
@@ -0,0 +1,25 @@
+CONFIG_XEN=y
+CONFIG_XEN_BLKDEV_FRONTEND=y
+CONFIG_XEN_SCSI_FRONTEND=y
+CONFIG_XEN_NETDEV_FRONTEND=y
+CONFIG_INPUT_XEN_KBDDEV_FRONTEND=y
+CONFIG_HVC_XEN=y
+CONFIG_HVC_XEN_FRONTEND=y
+CONFIG_XEN_FBDEV_FRONTEND=y
+CONFIG_MMC_SDHCI_XENON=y
+CONFIG_XEN_BALLOON=y
+CONFIG_XEN_SCRUB_PAGES_DEFAULT=y
+CONFIG_XEN_DEV_EVTCHN=y
+CONFIG_XEN_BACKEND=y
+CONFIG_XENFS=y
+CONFIG_XEN_COMPAT_XENFS=y
+CONFIG_XEN_SYS_HYPERVISOR=y
+CONFIG_XEN_XENBUS_FRONTEND=y
+CONFIG_XEN_GNTDEV=y
+CONFIG_XEN_GNTDEV_DMABUF=y
+CONFIG_XEN_GRANT_DEV_ALLOC=y
+CONFIG_XEN_GRANT_DMA_ALLOC=y
+CONFIG_SWIOTLB_XEN=y
+CONFIG_XEN_PVCALLS_FRONTEND=y
+CONFIG_XEN_PRIVCMD=y
+CONFIG_XEN_AUTO_XLATE=y \ No newline at end of file