From: Leon Woestenberg Date: Thu, 22 Dec 2011 19:32:51 +0000 (+0100) Subject: linux-imx: Workaround kernel oops when devtmpfs is enabled. X-Git-Tag: 2.1~1954 X-Git-Url: https://code.ossystems.io/gitweb?a=commitdiff_plain;h=eed26a47425f540426013fd3d39c8ad224e7ee93;p=meta-freescale.git linux-imx: Workaround kernel oops when devtmpfs is enabled. More details in head of patch. Signed-off-by: Leon Woestenberg --- diff --git a/meta-fsl-arm/recipes-kernel/linux/linux-imx/devtmpfs-init-options-alignment.patch b/meta-fsl-arm/recipes-kernel/linux/linux-imx/devtmpfs-init-options-alignment.patch new file mode 100644 index 00000000..19e5ef2f --- /dev/null +++ b/meta-fsl-arm/recipes-kernel/linux/linux-imx/devtmpfs-init-options-alignment.patch @@ -0,0 +1,38 @@ +Make the devtmpfs options static. This works around an issue that is still +under investigation. + +The toolchain assumes it can generate unaligned accesses for ARMv6+, as these +cores can handle this, PROVIDED the bit is set in the CP15 control register. + +However, Linux sets this bit lazely (upon first trap), which does not work for +kernel space code. + +There was a lengthy thread over this, the agreement was the kernel should not +have non-aligned structures on stacks anyway. + +Forcing this structure to be aligned on the stack did not help, unsure why. +This requires further investigation. + +This fixes a kernel failure if devtmpfs was enabled in the kernel config. + +Signed-off-by: Leon Woestenberg +diff -Nur orig/drivers/base/devtmpfs.c git/drivers/base/devtmpfs.c +--- orig/drivers/base/devtmpfs.c 2011-12-22 15:11:18.752904263 +0100 ++++ git/drivers/base/devtmpfs.c 2011-12-22 18:03:09.060928840 +0100 +@@ -365,6 +365,8 @@ + return err; + } + ++static char options[] = "mode=0755"; ++ + /* + * Create devtmpfs instance, driver-core devices will add their device + * nodes here. +@@ -373,7 +375,6 @@ + { + int err; + struct vfsmount *mnt; +- char options[] = "mode=0755"; + + err = register_filesystem(&dev_fs_type); + if (err) { diff --git a/meta-fsl-arm/recipes-kernel/linux/linux-imx_2.6.35.3.bb b/meta-fsl-arm/recipes-kernel/linux/linux-imx_2.6.35.3.bb index 94bfb6f9..18f6d66c 100644 --- a/meta-fsl-arm/recipes-kernel/linux/linux-imx_2.6.35.3.bb +++ b/meta-fsl-arm/recipes-kernel/linux/linux-imx_2.6.35.3.bb @@ -4,7 +4,7 @@ DESCRIPTION = "Linux kernel for imx platforms" LICENSE = "GPLv2" LIC_FILES_CHKSUM = "file://COPYING;md5=d7810fab7487fb0aad327b76f1be7cd7" -PR = "r4" +PR = "r5" inherit kernel COMPATIBLE_MACHINE = "(imx53qsb|imx53ard)" @@ -12,6 +12,7 @@ COMPATIBLE_MACHINE = "(imx53qsb|imx53ard)" SRC_URI = "git://opensource.freescale.com/pub/scm/imx/linux-2.6-imx.git;tag=rel_imx_2.6.35_11.09.01;protocol=http \ file://egalax_ts-enable-single-event-support.patch \ file://plat-mxc-double-dma-zone-max.patch \ + file://devtmpfs-init-options-alignment.patch \ file://defconfig \ "