From f870e2215af9aefd2625d336e3afcf4318f851af Mon Sep 17 00:00:00 2001 From: Adrian Dudau Date: Wed, 28 Oct 2015 13:33:10 +0100 Subject: Initial commit result of splitting up meta-enea Signed-off-by: Adrian Dudau --- .../0001-sdhci-fix-Timeout-error-messages.patch | 39 ++++++ .../linux/files/b4860-hard_irq_disable-bug.patch | 24 ++++ recipes-kernel/linux/files/merge_config.sh | 142 +++++++++++++++++++++ ...werpc-fsl-booke64-Set-vmemmap_psize-to-4K.patch | 19 +++ .../linux/files/pramfs-1.5.1-3.12.tar.gz | Bin 0 -> 72817 bytes recipes-kernel/linux/kernel-configure.inc | 49 +++++++ recipes-kernel/linux/linux-qoriq-common.inc | 38 ++++++ recipes-kernel/linux/linux-qoriq_3.12.bbappend | 1 + recipes-kernel/linux/pramfs-3.12.inc | 21 +++ recipes-kernel/linux/staging-kernel.inc | 133 +++++++++++++++++++ 10 files changed, 466 insertions(+) create mode 100644 recipes-kernel/linux/files/0001-sdhci-fix-Timeout-error-messages.patch create mode 100644 recipes-kernel/linux/files/b4860-hard_irq_disable-bug.patch create mode 100755 recipes-kernel/linux/files/merge_config.sh create mode 100644 recipes-kernel/linux/files/powerpc-fsl-booke64-Set-vmemmap_psize-to-4K.patch create mode 100644 recipes-kernel/linux/files/pramfs-1.5.1-3.12.tar.gz create mode 100644 recipes-kernel/linux/kernel-configure.inc create mode 100644 recipes-kernel/linux/linux-qoriq-common.inc create mode 100644 recipes-kernel/linux/linux-qoriq_3.12.bbappend create mode 100644 recipes-kernel/linux/pramfs-3.12.inc create mode 100644 recipes-kernel/linux/staging-kernel.inc (limited to 'recipes-kernel') diff --git a/recipes-kernel/linux/files/0001-sdhci-fix-Timeout-error-messages.patch b/recipes-kernel/linux/files/0001-sdhci-fix-Timeout-error-messages.patch new file mode 100644 index 0000000..9e42dbd --- /dev/null +++ b/recipes-kernel/linux/files/0001-sdhci-fix-Timeout-error-messages.patch @@ -0,0 +1,39 @@ +From 34a06b51a1928ed1692da4fce9f2203dfd306648 Mon Sep 17 00:00:00 2001 +From: "Maxin B. John" +Date: Tue, 22 Apr 2014 07:26:59 +0200 +Subject: [PATCH] sdhci: fix Timeout error messages + +If the driver doesn't implement proper card detection, +we shouldn't flood the console with Timeout error messages + +Upstream-Status: Pending + +Signed-off-by: Maxin B. John +--- + drivers/mmc/host/sdhci.c | 9 ++++++--- + 1 file changed, 6 insertions(+), 3 deletions(-) + +diff --git a/drivers/mmc/host/sdhci.c b/drivers/mmc/host/sdhci.c +index 79db375..c77117c 100644 +--- a/drivers/mmc/host/sdhci.c ++++ b/drivers/mmc/host/sdhci.c +@@ -2149,10 +2149,13 @@ static void sdhci_timeout_timer(unsigned long data) + spin_lock_irqsave(&host->lock, flags); + + if (host->mrq) { +- pr_err("%s: Timeout waiting for hardware " ++ /* If the driver doesn't implement proper card detection, ++ we shouldn't flood the console with Timeout error messages */ ++ if (!(host->quirks & SDHCI_QUIRK_BROKEN_CARD_DETECTION)) { ++ pr_err("%s: Timeout waiting for hardware " + "interrupt.\n", mmc_hostname(host->mmc)); +- sdhci_dumpregs(host); +- ++ sdhci_dumpregs(host); ++ } + if (host->data) { + host->data->error = -ETIMEDOUT; + sdhci_finish_data(host); +-- +1.7.10.4 + diff --git a/recipes-kernel/linux/files/b4860-hard_irq_disable-bug.patch b/recipes-kernel/linux/files/b4860-hard_irq_disable-bug.patch new file mode 100644 index 0000000..b8ef705 --- /dev/null +++ b/recipes-kernel/linux/files/b4860-hard_irq_disable-bug.patch @@ -0,0 +1,24 @@ +linux-qoriq-sdk: Repair a kernel compile issue due to a sintax error. + +The define __hard_irq_disable() was done using ";" character +into the comment so the if structure did not recognized the +"else" branch. + +Upstream-Status: Pending + +Signed-off-by: Alexandru Vaduva + +diff -ruN a/arch/powerpc/kernel/irq.c b/arch/powerpc/kernel/irq.c +--- a/arch/powerpc/kernel/irq.c 2014-01-30 12:56:20.470918180 +0100 ++++ b/arch/powerpc/kernel/irq.c 2014-01-30 12:57:25.228109187 +0100 +@@ -227,8 +227,9 @@ + * common cases that we'll ignore for now), so we skip the + * (expensive) mtmsrd. + */ +- if (unlikely(irq_happened != PACA_IRQ_HARD_DIS)) ++ if (unlikely(irq_happened != PACA_IRQ_HARD_DIS)) { + __hard_irq_disable(); ++ } + #ifdef CONFIG_TRACE_IRQFLAGS + else { + /* diff --git a/recipes-kernel/linux/files/merge_config.sh b/recipes-kernel/linux/files/merge_config.sh new file mode 100755 index 0000000..33f18d4 --- /dev/null +++ b/recipes-kernel/linux/files/merge_config.sh @@ -0,0 +1,142 @@ +#!/bin/sh +# merge_config.sh - Takes a list of config fragment values, and merges +# them one by one. Provides warnings on overridden values, and specified +# values that did not make it to the resulting .config file (due to missed +# dependencies or config symbol removal). +# +# Portions reused from kconf_check and generate_cfg: +# http://git.yoctoproject.org/cgit/cgit.cgi/yocto-kernel-tools/tree/tools/kconf_check +# http://git.yoctoproject.org/cgit/cgit.cgi/yocto-kernel-tools/tree/tools/generate_cfg +# +# Copyright (c) 2009-2010 Wind River Systems, Inc. +# Copyright 2011 Linaro +# +# 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. + + +usage() { + echo "Usage: $0 [OPTIONS] [CONFIG [...]]" +echo " -h display this help text" +echo " -m only merge the fragments, do not execute the make command" +echo " -n use allnoconfig instead of alldefconfig" +echo " -x use allmodconfig instead of alldefconfig" +echo " -d debug. Don't cleanup temporary files" +} + +MAKE_FLAG=true +ALLTARGET=alldefconfig + +# There are two variables that impact where the .config will be dropped, +# O= and KBUILD_OUTPUT=. So we'll respect those variables and use them as +# an output directory as well. These two variables are not propagating +# automatically to the kernel build, so always explicitly setting O= +# and passing it to the kernel build ensures that it is respected. +if [ -n "$KBUILD_OUTPUT" ]; then + O=$KBUILD_OUTPUT +fi +if [ -z "$O" ]; then + O=. +fi + +while true; do + case $1 in + "-n") + ALLTARGET=allnoconfig + shift + continue + ;; + "-m") + MAKE_FLAG=false + shift + continue + ;; + "-d") + DEBUG=true + shift + continue + ;; + "-h") + usage + exit + ;; + *) + break + ;; + esac +done + +clean_up() { + rm -f $TMP_FILE + exit +} +if [ -z "$DEBUG" ]; then + trap clean_up SIGHUP SIGINT SIGTERM +fi + + +MERGE_LIST=$* +SED_CONFIG_EXP="s/^\(# \)\{0,1\}\(CONFIG_[a-zA-Z0-9_]*\)[= ].*/\2/p" +TMP_FILE=$(mktemp $O/.tmp.config.XXXXXXXXXX) + +# Merge files, printing warnings on overrided values +for MERGE_FILE in $MERGE_LIST ; do + echo "Merging $MERGE_FILE" + CFG_LIST=$(sed -n "$SED_CONFIG_EXP" $MERGE_FILE) + + for CFG in $CFG_LIST ; do + grep -q -w $CFG $TMP_FILE + if [ $? -eq 0 ] ; then + PREV_VAL=$(grep -w $CFG $TMP_FILE) + NEW_VAL=$(grep -w $CFG $MERGE_FILE) + if [ "x$PREV_VAL" != "x$NEW_VAL" ] ; then + echo Value of $CFG is redefined by fragment $MERGE_FILE: + echo Previous value: $PREV_VAL + echo New value: $NEW_VAL + echo + fi + sed -i "/$CFG[ =]/d" $TMP_FILE + fi + done + cat $MERGE_FILE >> $TMP_FILE +done + +if [ "$MAKE_FLAG" = "false" ]; then + cp $TMP_FILE $O/.config + echo "#" + echo "# merged configuration written to $O/.config (needs make)" + echo "#" + if [ -z "$DEBUG" ]; then + clean_up + fi + exit +fi + +# Use the merged file as the starting point for: +# alldefconfig: Fills in any missing symbols with Kconfig default +# allnoconfig: Fills in any missing symbols with # CONFIG_* is not set +make KCONFIG_ALLCONFIG=$TMP_FILE O=$O $ALLTARGET + + +# Check all specified config values took (might have missed-dependency issues) +for CFG in $(sed -n "$SED_CONFIG_EXP" $TMP_FILE); do + + REQUESTED_VAL=$(sed -n "$SED_CONFIG_EXP" $TMP_FILE | grep -w -e "$CFG") + ACTUAL_VAL=$(sed -n "$SED_CONFIG_EXP" $O/.config | grep -w -e "$CFG") + if [ "x$REQUESTED_VAL" != "x$ACTUAL_VAL" ] ; then + echo "Value requested for $CFG not in final .config" + echo "Requested value: $REQUESTED_VAL" + echo "Actual value: $ACTUAL_VAL" + echo "" + fi +done + +if [ -z "$DEBUG" ]; then + clean_up +fi diff --git a/recipes-kernel/linux/files/powerpc-fsl-booke64-Set-vmemmap_psize-to-4K.patch b/recipes-kernel/linux/files/powerpc-fsl-booke64-Set-vmemmap_psize-to-4K.patch new file mode 100644 index 0000000..5acf97a --- /dev/null +++ b/recipes-kernel/linux/files/powerpc-fsl-booke64-Set-vmemmap_psize-to-4K.patch @@ -0,0 +1,19 @@ +diff --git a/arch/powerpc/mm/tlb_nohash.c b/arch/powerpc/mm/tlb_nohash.c +index ae3d5b7..92cb18d 100644 +--- a/arch/powerpc/mm/tlb_nohash.c ++++ b/arch/powerpc/mm/tlb_nohash.c +@@ -596,8 +596,13 @@ static void __early_init_mmu(int boot_cpu) + /* XXX This should be decided at runtime based on supported + * page sizes in the TLB, but for now let's assume 16M is + * always there and a good fit (which it probably is) ++ * ++ * Freescale booke only supports 4K pages in TLB0, so use that. + */ +- mmu_vmemmap_psize = MMU_PAGE_16M; ++ if (mmu_has_feature(MMU_FTR_TYPE_FSL_E)) ++ mmu_vmemmap_psize = MMU_PAGE_4K; ++ else ++ mmu_vmemmap_psize = MMU_PAGE_16M; + + /* XXX This code only checks for TLB 0 capabilities and doesn't + * check what page size combos are supported by the HW. It diff --git a/recipes-kernel/linux/files/pramfs-1.5.1-3.12.tar.gz b/recipes-kernel/linux/files/pramfs-1.5.1-3.12.tar.gz new file mode 100644 index 0000000..2d1a065 Binary files /dev/null and b/recipes-kernel/linux/files/pramfs-1.5.1-3.12.tar.gz differ diff --git a/recipes-kernel/linux/kernel-configure.inc b/recipes-kernel/linux/kernel-configure.inc new file mode 100644 index 0000000..f3d0abe --- /dev/null +++ b/recipes-kernel/linux/kernel-configure.inc @@ -0,0 +1,49 @@ +SRC_URI += " file://merge_config.sh " + +configure_kernel() { + # Add debug flavour config elements from fragments + # Listed in increasing priority order if conflicts are detected. + # + + # + #combine features cfgs with defconfig + # + addon_features="" + if [ -n "${2}" ]; then + for feature in ${2}; do + addon_features="${addon_features} ${WORKDIR}/${feature}" + done + fi + + # Some meta layers like meta-ti use defconfig file to point to a real + # default config file (use-kernel-config=config_filename) which is found + # under kernel path (${S}/arch/${archname}/configs/). + config=`cat ${1} | grep use-kernel-config | cut -d= -f2` + if [ "x${config}" != "x" ] + then + configfilepath=`find ${S}/arch/ -name ${config} -print | head -n 1` + if [ -f ${configfilepath} ] + then + cp ${configfilepath} ${1} + else + bbfatal "Specified config file:${config} was not found!" + fi + fi + + if [ -e "${S}/scripts/kconfig/merge_config.sh" ]; then + O=${B} ${S}/scripts/kconfig/merge_config.sh -m ${1} ${addon_features} + else + O=${B} ${WORKDIR}/merge_config.sh -m ${1} ${addon_features} + fi + + mv -f ${B}/.config ${B}/.mconfig + + # + #in linux kernel 2.6.33, kconfig does not support alldefconfig yet. + # + if [ "x${PV}" = "x2.6.33" ]; then + oe_runmake KCONFIG_ALLCONFIG=${B}/.mconfig O=${B} allnoconfig + else + oe_runmake KCONFIG_ALLCONFIG=${B}/.mconfig O=${B} alldefconfig + fi +} diff --git a/recipes-kernel/linux/linux-qoriq-common.inc b/recipes-kernel/linux/linux-qoriq-common.inc new file mode 100644 index 0000000..4f22f8a --- /dev/null +++ b/recipes-kernel/linux/linux-qoriq-common.inc @@ -0,0 +1,38 @@ +require recipes-kernel/linux/enea-common.inc + +FILESEXTRAPATHS_prepend := "${THISDIR}/files:" + +SRC_URI += "file://b4860-hard_irq_disable-bug.patch \ + file://0001-sdhci-fix-Timeout-error-messages.patch \ + file://powerpc-fsl-booke64-Set-vmemmap_psize-to-4K.patch \ + " + +STAGING_KERNEL_FEATURES += "\ + cfg/00013-localversion.cfg \ + cfg/00006-with_modules.cfg \ + cfg/00001-embedded.cfg \ + cfg/00012-preempt.cfg \ + cfg/00002-root_nfs.cfg \ + cfg/00029-devtmpfs.cfg \ + cfg/00021-bootlogd.cfg \ + cfg/00022-mtd_tests.cfg \ + cfg/00030-latencytop.cfg \ + cfg/00026-ltp.cfg \ + cfg/00003-fuse.cfg \ + cfg/00032-dpa.cfg \ + cfg/00033-kprobes.cfg \ + cfg/00019-i2c.cfg \ + cfg/00027-lttng.cfg \ + cfg/00025-powertop.cfg \ + cfg/00004-systemtap.cfg \ + cfg/00014-kgdb.cfg \ + cfg/00049-gpio.cfg \ + cfg/00034-cpusets.cfg \ + " + +STAGING_KERNEL_FEATURES_append_p2020rdb="cfg/00015-uio.cfg" + +DELTA_KERNEL_DEFCONFIG += " ${STAGING_KERNEL_FEATURES} \ + " + +require recipes-kernel/linux/pramfs-3.12.inc diff --git a/recipes-kernel/linux/linux-qoriq_3.12.bbappend b/recipes-kernel/linux/linux-qoriq_3.12.bbappend new file mode 100644 index 0000000..f9311e9 --- /dev/null +++ b/recipes-kernel/linux/linux-qoriq_3.12.bbappend @@ -0,0 +1 @@ +require recipes-kernel/linux/linux-qoriq-common.inc diff --git a/recipes-kernel/linux/pramfs-3.12.inc b/recipes-kernel/linux/pramfs-3.12.inc new file mode 100644 index 0000000..ec5775d --- /dev/null +++ b/recipes-kernel/linux/pramfs-3.12.inc @@ -0,0 +1,21 @@ +RRECOMMENDS_${PN} += "pramfs-init" + +PRAMFS_VERSION = '1.5.1-3.12' + +SRC_URI += "file://pramfs-${PRAMFS_VERSION}.tar.gz \ + file://cfg/00005-pramfs.cfg" + +STAGING_KERNEL_FEATURES_append = " cfg/00005-pramfs.cfg" + +do_apply_pramfs() { + # Apply PRAMFS patch + + # Already done by bitbake -> + # tar xvf ${WORKDIR}/pramfs-${PRAMFS_VERSION}.tar.gz -C ${WORKDIR} + cd ${WORKDIR}/pramfs-${PRAMFS_VERSION}/ + ./patch-ker.sh ${S} + cd - +} + +do_apply_pramfs[deptask] = "do_unpack" +addtask apply_pramfs after do_unpack before do_patch diff --git a/recipes-kernel/linux/staging-kernel.inc b/recipes-kernel/linux/staging-kernel.inc new file mode 100644 index 0000000..3ef802d --- /dev/null +++ b/recipes-kernel/linux/staging-kernel.inc @@ -0,0 +1,133 @@ +# This .inc file allows building and deploying staging kernel + modules +# with defconfig + fragment cfgs + +require kernel-configure.inc + +STAGING_NAME ?= "RELEASE" +STAGING_KERNEL_FEATURES ?= "" +KERNEL_FEATURES ?= "" +MODULES_IMAGE_BASE_NAME = "modules-${PV}-${PR}-${MACHINE}" +EXTRA_OEMAKE_prepend_task-stagingkernel = "${PARALLEL_MAKE} " + +do_stagingkernel () { + stagingkernel "${STAGING_KERNEL_FEATURES}" ${STAGING_NAME} +} + +stagingkernel () { + + configure_kernel "${KERNEL_DEFCONFIG}" "${1}" + + # Copy defconfig to .config if .config does not exist. This allows + # recipes to manage the .config themselves in do_configure_prepend(). + if [ -f "${WORKDIR}/defconfig" ] && [ ! -f "${B}/.config" ]; then + cp "${WORKDIR}/defconfig" "${B}/.config" + fi + yes '' | oe_runmake oldconfig + + if [ ! -z "${INITRAMFS_IMAGE}" ]; then + for img in cpio.gz cpio.lzo cpio.lzma cpio.xz; do + if [ -e "${DEPLOY_DIR_IMAGE}/${INITRAMFS_IMAGE}-${MACHINE}.$img" ]; then + cp "${DEPLOY_DIR_IMAGE}/${INITRAMFS_IMAGE}-${MACHINE}.$img" initramfs.$img + fi + done + fi + + # + # Build this alternative kernel + # + + kernel_do_compile + do_compile_kernelmodules + + # + # First install the modules to deploy dir + # + unset CFLAGS CPPFLAGS CXXFLAGS LDFLAGS MACHINE + if (grep -q -i -e '^CONFIG_MODULES=y$' .config); then + oe_runmake DEPMOD=echo INSTALL_MOD_PATH="${D}" modules_install + else + bbnote "no modules to install" + fi + if [ -d "${D}/lib" ]; then + tar -cvzf ${DEPLOY_DIR_IMAGE}/${MODULES_IMAGE_BASE_NAME}-${2}.tgz -C ${D} lib + fi + rm -fr ${D}/lib + + # + # Dont build any dtb:s for the staging kernel + # + + # + # Drop the resulting images in the deploy dir + # + cd ${S} + install -d ${DEPLOY_DIR_IMAGE} + install -m 0644 ${KERNEL_OUTPUT} ${DEPLOY_DIR_IMAGE}/${KERNEL_IMAGE_BASE_NAME}-${2}.bin + mv ${KERNEL_OUTPUT} ${KERNEL_OUTPUT}-${2} + + # + # Install the final config alongside the images + # + cd ${S} + cp .config ${DEPLOY_DIR_IMAGE}/config-${PV}-${PR}-${MACHINE}-${2}.config + rm -f .config + + # + # Create symlinks + # + cd ${DEPLOY_DIR_IMAGE} + rm -f ${KERNEL_IMAGE_SYMLINK_NAME}-${2}.bin + ln -sf ${KERNEL_IMAGE_BASE_NAME}-${2}.bin ${KERNEL_IMAGE_SYMLINK_NAME}-${2}.bin + + rm -f config-${MACHINE}-${2}.config + ln -sf config-${PV}-${PR}-${MACHINE}-${2}.config config-${MACHINE}-${2}.config + +} + +do_stagingkernel[dirs] = "${DEPLOY_DIR_IMAGE} ${B}" + +do_stagingkernel[depends] += "u-boot-mkimage-native:do_populate_sysroot virtual/${TARGET_PREFIX}gcc:do_populate_sysroot virtual/${TARGET_PREFIX}gcc:do_populate_sysroot libgcc:do_populate_sysroot" + +addtask stagingkernel after do_patch before do_configure + +# +# For reference, copy .config to deploy image +# +do_deploy_append () { + + install -d ${DEPLOY_DIR_IMAGE} + + # + # Drop the regular defconfig along side the others for consistency + # + cd ${S} + cp .config ${DEPLOY_DIR_IMAGE}/config-${PV}-${PR}-${MACHINE}.config + + # + # add symlink + # + cd ${DEPLOY_DIR_IMAGE} + rm -f config-${MACHINE}.config + ln -s config-${PV}-${PR}-${MACHINE}.config config-${MACHINE}.config + +} + +# +# Clean staging kernel related files in deploy dir +# +do_cleanstagingkernel () { + + cd ${DEPLOY_DIR_IMAGE} + rm -f *-${STAGING_NAME}.* + + rm -f config-${PV}-${PR}-${MACHINE}.config + rm -f config-${MACHINE}.config + +} + +LDFLAGS="" + +do_cleanstagingkernel[nostamp] = "1" + +addtask cleanstagingkernel after do_cleansstate + -- cgit v1.2.3-54-g00ecf