From 9691b89fd8a0014b7d57c9fc35cf75bfe8da1577 Mon Sep 17 00:00:00 2001 From: Tom Rini Date: Fri, 3 Nov 2017 15:29:15 -0400 Subject: Rework Linux Kernel fragment applications MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - All kernel recipes must inherit linux-agl.inc - All kernel recipes for a given version (e.g. 4.9) should include linux-VER-agl.inc in order to avoid duplication (such as the SMACK label patch or security fixes) - We enforce having merge_config.sh be invoked at the end, in order to make sure fragments will be applied. - Add a new fragment for Raspberry Pi to ensure the Pi Touchscreen is still enabled. With all of the above, we fix a number of minor issues as well, such as platforms manually enabling NBD/RAMDISK for netboot as the previous logic was not working in all cases. Bug-AGL: SPEC-946 Change-Id: Ic688e899df5861d83712af12d8e1c6c3c9643300 Signed-off-by: Tom Rini Reviewed-on: https://gerrit.automotivelinux.org/gerrit/12063 Tested-by: Jenkins Job builder account Reviewed-by: José Bollo Reviewed-by: Jan-Simon Moeller --- meta-agl-bsp/recipes-kernel/linux/linux-%.bbappend | 8 --- ...n-smack_known_web-label-for-kernel-thread.patch | 49 +++++++++++++++ .../recipes-kernel/linux/linux-agl-4.9.inc | 8 +++ meta-agl-bsp/recipes-kernel/linux/linux-agl.inc | 71 +++++++++++++++++++--- .../recipes-kernel/linux/linux-yocto/ath9k_htc.cfg | 4 -- .../recipes-kernel/linux/linux-yocto/drm.cfg | 2 - .../recipes-kernel/linux/linux-yocto/fanotify.cfg | 3 - .../recipes-kernel/linux/linux-yocto/hid.cfg | 1 - .../recipes-kernel/linux/linux-yocto/rtl_sdr.cfg | 4 -- .../recipes-kernel/linux/linux-yocto/uinput.cfg | 3 - .../linux/linux-yocto/vbox-vmware-sata.cfg | 19 ------ .../recipes-kernel/linux/linux/ath9k_htc.cfg | 4 ++ meta-agl-bsp/recipes-kernel/linux/linux/btusb.cfg | 37 +++++++++++ meta-agl-bsp/recipes-kernel/linux/linux/drm.cfg | 2 + .../recipes-kernel/linux/linux/fanotify.cfg | 3 + meta-agl-bsp/recipes-kernel/linux/linux/hid.cfg | 1 + meta-agl-bsp/recipes-kernel/linux/linux/nbd.cfg | 1 + .../recipes-kernel/linux/linux/ramdisk.cfg | 1 + .../recipes-kernel/linux/linux/rtl_sdr.cfg | 4 ++ meta-agl-bsp/recipes-kernel/linux/linux/uinput.cfg | 3 + .../linux/linux/vbox-vmware-sata.cfg | 19 ++++++ 21 files changed, 193 insertions(+), 54 deletions(-) delete mode 100644 meta-agl-bsp/recipes-kernel/linux/linux-%.bbappend create mode 100644 meta-agl-bsp/recipes-kernel/linux/linux-4.9/0004-Smack-Assign-smack_known_web-label-for-kernel-thread.patch create mode 100644 meta-agl-bsp/recipes-kernel/linux/linux-agl-4.9.inc delete mode 100644 meta-agl-bsp/recipes-kernel/linux/linux-yocto/ath9k_htc.cfg delete mode 100644 meta-agl-bsp/recipes-kernel/linux/linux-yocto/drm.cfg delete mode 100644 meta-agl-bsp/recipes-kernel/linux/linux-yocto/fanotify.cfg delete mode 100644 meta-agl-bsp/recipes-kernel/linux/linux-yocto/hid.cfg delete mode 100644 meta-agl-bsp/recipes-kernel/linux/linux-yocto/rtl_sdr.cfg delete mode 100644 meta-agl-bsp/recipes-kernel/linux/linux-yocto/uinput.cfg delete mode 100644 meta-agl-bsp/recipes-kernel/linux/linux-yocto/vbox-vmware-sata.cfg create mode 100644 meta-agl-bsp/recipes-kernel/linux/linux/ath9k_htc.cfg create mode 100644 meta-agl-bsp/recipes-kernel/linux/linux/btusb.cfg create mode 100644 meta-agl-bsp/recipes-kernel/linux/linux/drm.cfg create mode 100644 meta-agl-bsp/recipes-kernel/linux/linux/fanotify.cfg create mode 100644 meta-agl-bsp/recipes-kernel/linux/linux/hid.cfg create mode 100644 meta-agl-bsp/recipes-kernel/linux/linux/nbd.cfg create mode 100644 meta-agl-bsp/recipes-kernel/linux/linux/ramdisk.cfg create mode 100644 meta-agl-bsp/recipes-kernel/linux/linux/rtl_sdr.cfg create mode 100644 meta-agl-bsp/recipes-kernel/linux/linux/uinput.cfg create mode 100644 meta-agl-bsp/recipes-kernel/linux/linux/vbox-vmware-sata.cfg (limited to 'meta-agl-bsp/recipes-kernel/linux') diff --git a/meta-agl-bsp/recipes-kernel/linux/linux-%.bbappend b/meta-agl-bsp/recipes-kernel/linux/linux-%.bbappend deleted file mode 100644 index f64e49ae0..000000000 --- a/meta-agl-bsp/recipes-kernel/linux/linux-%.bbappend +++ /dev/null @@ -1,8 +0,0 @@ -FILESEXTRAPATHS_prepend := "${THISDIR}/linux:" - -# Extra configuration options for the AGL kernel -SRC_URI_append = " file://can-bus.cfg \ - file://usb.cfg \ - file://uvc.cfg \ - file://joystick.cfg \ - " diff --git a/meta-agl-bsp/recipes-kernel/linux/linux-4.9/0004-Smack-Assign-smack_known_web-label-for-kernel-thread.patch b/meta-agl-bsp/recipes-kernel/linux/linux-4.9/0004-Smack-Assign-smack_known_web-label-for-kernel-thread.patch new file mode 100644 index 000000000..a1eeac3d7 --- /dev/null +++ b/meta-agl-bsp/recipes-kernel/linux/linux-4.9/0004-Smack-Assign-smack_known_web-label-for-kernel-thread.patch @@ -0,0 +1,49 @@ +From c8bbb0f916de54610513e376070aea531af19dd6 Mon Sep 17 00:00:00 2001 +From: jooseong lee +Date: Thu, 3 Nov 2016 10:55:43 +0100 +Subject: [PATCH 4/4] Smack: Assign smack_known_web label for kernel thread's +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Assign smack_known_web label for kernel thread's socket in the sk_alloc_security hook + +Creating struct sock by sk_alloc function in various kernel subsystems +like bluetooth dosen't call smack_socket_post_create(). In such case, +received sock label is the floor('_') label and makes access deny. + +Refers-to: https://review.tizen.org/gerrit/#/c/80717/4 + +Change-Id: I2e5c9359bfede84a988fd4d4d74cdb9dfdfc52d8 +Signed-off-by: jooseong lee +Signed-off-by: José Bollo +--- + security/smack/smack_lsm.c | 12 ++++++++++-- + 1 file changed, 10 insertions(+), 2 deletions(-) + +diff --git a/security/smack/smack_lsm.c b/security/smack/smack_lsm.c +index cf8a93f..21651bc 100644 +--- a/security/smack/smack_lsm.c ++++ b/security/smack/smack_lsm.c +@@ -2321,8 +2321,16 @@ static int smack_sk_alloc_security(struct sock *sk, int family, gfp_t gfp_flags) + if (ssp == NULL) + return -ENOMEM; + +- ssp->smk_in = skp; +- ssp->smk_out = skp; ++ /* ++ * Sockets created by kernel threads receive web label. ++ */ ++ if (unlikely(current->flags & PF_KTHREAD)) { ++ ssp->smk_in = &smack_known_web; ++ ssp->smk_out = &smack_known_web; ++ } else { ++ ssp->smk_in = skp; ++ ssp->smk_out = skp; ++ } + ssp->smk_packet = NULL; + + sk->sk_security = ssp; +-- +2.7.4 + diff --git a/meta-agl-bsp/recipes-kernel/linux/linux-agl-4.9.inc b/meta-agl-bsp/recipes-kernel/linux/linux-agl-4.9.inc new file mode 100644 index 000000000..3235ff4d1 --- /dev/null +++ b/meta-agl-bsp/recipes-kernel/linux/linux-agl-4.9.inc @@ -0,0 +1,8 @@ +FILESEXTRAPATHS_prepend := "${THISDIR}/linux-4.9:" + +#------------------------------------------------------------------------- +# smack patches for handling bluetooth + +SRC_URI_append_smack = "\ + file://0004-Smack-Assign-smack_known_web-label-for-kernel-thread.patch \ + " diff --git a/meta-agl-bsp/recipes-kernel/linux/linux-agl.inc b/meta-agl-bsp/recipes-kernel/linux/linux-agl.inc index fcd028062..2c8dab4ad 100644 --- a/meta-agl-bsp/recipes-kernel/linux/linux-agl.inc +++ b/meta-agl-bsp/recipes-kernel/linux/linux-agl.inc @@ -1,20 +1,71 @@ -FILESEXTRAPATHS_prepend := "${THISDIR}/linux-yocto:" +FILESEXTRAPATHS_prepend := "${THISDIR}/linux:" -# Extra configuration options for the QEMU kernel -SRC_URI += "file://fanotify.cfg \ +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 + 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 \ " +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 required features for the agl-netboot feature +SRC_URI_append_netboot = " file://nbd.cfg \ + file://ramdisk.cfg" +KERNEL_CONFIG_FRAGMENTS_append = " ${WORKDIR}/nbd.cfg ${WORKDIR}/ramdisk.cfg" # Enable support for TP-Link TL-W722N USB Wifi adapter -SRC_URI += " file://ath9k_htc.cfg \ - " +SRC_URI_append = " file://ath9k_htc.cfg" +KERNEL_CONFIG_FRAGMENTS_append = " ${WORKDIR}/ath9k_htc.cfg" # Enable support for RTLSDR -SRC_URI += " file://rtl_sdr.cfg \ - " +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" -# disk drivers for vmdk -SRC_URI_append_qemux86 = " file://vbox-vmware-sata.cfg " -SRC_URI_append_qemux86-64 = " file://vbox-vmware-sata.cfg " +# Enable support for smack +KERNEL_CONFIG_FRAGMENTS_append_smack = "\ + ${WORKDIR}/audit.cfg \ + ${WORKDIR}/smack.cfg \ + ${WORKDIR}/smack-default-lsm.cfg \ +" diff --git a/meta-agl-bsp/recipes-kernel/linux/linux-yocto/ath9k_htc.cfg b/meta-agl-bsp/recipes-kernel/linux/linux-yocto/ath9k_htc.cfg deleted file mode 100644 index 6f7d49880..000000000 --- a/meta-agl-bsp/recipes-kernel/linux/linux-yocto/ath9k_htc.cfg +++ /dev/null @@ -1,4 +0,0 @@ -CONFIG_CFG80211=m -CONFIG_MAC80211=m -CONFIG_ATH_CARDS=m -CONFIG_ATH9K_HTC=m diff --git a/meta-agl-bsp/recipes-kernel/linux/linux-yocto/drm.cfg b/meta-agl-bsp/recipes-kernel/linux/linux-yocto/drm.cfg deleted file mode 100644 index 65fe71cd0..000000000 --- a/meta-agl-bsp/recipes-kernel/linux/linux-yocto/drm.cfg +++ /dev/null @@ -1,2 +0,0 @@ -CONFIG_DRM_BOCHS=y -CONFIG_DRM_VIRTIO_GPU=y diff --git a/meta-agl-bsp/recipes-kernel/linux/linux-yocto/fanotify.cfg b/meta-agl-bsp/recipes-kernel/linux/linux-yocto/fanotify.cfg deleted file mode 100644 index de5dd8d31..000000000 --- a/meta-agl-bsp/recipes-kernel/linux/linux-yocto/fanotify.cfg +++ /dev/null @@ -1,3 +0,0 @@ -# Enable the fanotify API (notification/interception of FS events) -CONFIG_FANOTIFY=y -CONFIG_FANOTIFY_ACCESS_PERMISSIONS=y diff --git a/meta-agl-bsp/recipes-kernel/linux/linux-yocto/hid.cfg b/meta-agl-bsp/recipes-kernel/linux/linux-yocto/hid.cfg deleted file mode 100644 index 327c753ae..000000000 --- a/meta-agl-bsp/recipes-kernel/linux/linux-yocto/hid.cfg +++ /dev/null @@ -1 +0,0 @@ -CONFIG_HID_MULTITOUCH=y diff --git a/meta-agl-bsp/recipes-kernel/linux/linux-yocto/rtl_sdr.cfg b/meta-agl-bsp/recipes-kernel/linux/linux-yocto/rtl_sdr.cfg deleted file mode 100644 index d4574700a..000000000 --- a/meta-agl-bsp/recipes-kernel/linux/linux-yocto/rtl_sdr.cfg +++ /dev/null @@ -1,4 +0,0 @@ -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-bsp/recipes-kernel/linux/linux-yocto/uinput.cfg b/meta-agl-bsp/recipes-kernel/linux/linux-yocto/uinput.cfg deleted file mode 100644 index 7996ef1dd..000000000 --- a/meta-agl-bsp/recipes-kernel/linux/linux-yocto/uinput.cfg +++ /dev/null @@ -1,3 +0,0 @@ -# Enable the User-level Input driver (required by "wayland-fits") -CONFIG_INPUT_MISC=y -CONFIG_INPUT_UINPUT=m diff --git a/meta-agl-bsp/recipes-kernel/linux/linux-yocto/vbox-vmware-sata.cfg b/meta-agl-bsp/recipes-kernel/linux/linux-yocto/vbox-vmware-sata.cfg deleted file mode 100644 index ce1eca1a7..000000000 --- a/meta-agl-bsp/recipes-kernel/linux/linux-yocto/vbox-vmware-sata.cfg +++ /dev/null @@ -1,19 +0,0 @@ -# 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-bsp/recipes-kernel/linux/linux/ath9k_htc.cfg b/meta-agl-bsp/recipes-kernel/linux/linux/ath9k_htc.cfg new file mode 100644 index 000000000..6f7d49880 --- /dev/null +++ b/meta-agl-bsp/recipes-kernel/linux/linux/ath9k_htc.cfg @@ -0,0 +1,4 @@ +CONFIG_CFG80211=m +CONFIG_MAC80211=m +CONFIG_ATH_CARDS=m +CONFIG_ATH9K_HTC=m diff --git a/meta-agl-bsp/recipes-kernel/linux/linux/btusb.cfg b/meta-agl-bsp/recipes-kernel/linux/linux/btusb.cfg new file mode 100644 index 000000000..dd7c460bb --- /dev/null +++ b/meta-agl-bsp/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-bsp/recipes-kernel/linux/linux/drm.cfg b/meta-agl-bsp/recipes-kernel/linux/linux/drm.cfg new file mode 100644 index 000000000..65fe71cd0 --- /dev/null +++ b/meta-agl-bsp/recipes-kernel/linux/linux/drm.cfg @@ -0,0 +1,2 @@ +CONFIG_DRM_BOCHS=y +CONFIG_DRM_VIRTIO_GPU=y diff --git a/meta-agl-bsp/recipes-kernel/linux/linux/fanotify.cfg b/meta-agl-bsp/recipes-kernel/linux/linux/fanotify.cfg new file mode 100644 index 000000000..de5dd8d31 --- /dev/null +++ b/meta-agl-bsp/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-bsp/recipes-kernel/linux/linux/hid.cfg b/meta-agl-bsp/recipes-kernel/linux/linux/hid.cfg new file mode 100644 index 000000000..327c753ae --- /dev/null +++ b/meta-agl-bsp/recipes-kernel/linux/linux/hid.cfg @@ -0,0 +1 @@ +CONFIG_HID_MULTITOUCH=y diff --git a/meta-agl-bsp/recipes-kernel/linux/linux/nbd.cfg b/meta-agl-bsp/recipes-kernel/linux/linux/nbd.cfg new file mode 100644 index 000000000..af37685e4 --- /dev/null +++ b/meta-agl-bsp/recipes-kernel/linux/linux/nbd.cfg @@ -0,0 +1 @@ +CONFIG_BLK_DEV_NBD=y diff --git a/meta-agl-bsp/recipes-kernel/linux/linux/ramdisk.cfg b/meta-agl-bsp/recipes-kernel/linux/linux/ramdisk.cfg new file mode 100644 index 000000000..41530dd6e --- /dev/null +++ b/meta-agl-bsp/recipes-kernel/linux/linux/ramdisk.cfg @@ -0,0 +1 @@ +CONFIG_BLK_DEV_RAM=y diff --git a/meta-agl-bsp/recipes-kernel/linux/linux/rtl_sdr.cfg b/meta-agl-bsp/recipes-kernel/linux/linux/rtl_sdr.cfg new file mode 100644 index 000000000..d4574700a --- /dev/null +++ b/meta-agl-bsp/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-bsp/recipes-kernel/linux/linux/uinput.cfg b/meta-agl-bsp/recipes-kernel/linux/linux/uinput.cfg new file mode 100644 index 000000000..7996ef1dd --- /dev/null +++ b/meta-agl-bsp/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-bsp/recipes-kernel/linux/linux/vbox-vmware-sata.cfg b/meta-agl-bsp/recipes-kernel/linux/linux/vbox-vmware-sata.cfg new file mode 100644 index 000000000..ce1eca1a7 --- /dev/null +++ b/meta-agl-bsp/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 -- cgit 1.2.3-korg