While debugging a memory instability problem with a 6sl board running 4.1 (Debugging memory instability with 4.1/yocto 2.1 jethro on 6sl ), I found that the root cause had to do with CONFIG_CPU_FREQ. When it is enabled, then I observe varying levels of instability ranging from memory corruption up to failure to boot or hang during bootup. When it is disabled, the system is stable.
I wanted to note that with the 4.1 kernel, there are problems when one tries to disable CONFIG_CPU_FREQ. You'll get the following compile errors:
make: `include/generated/mach-types.h' is up to date.
arch/arm/mach-imx/busfreq-imx.c:147:5: error: redefinition of 'register_busfreq_notifier'
int register_busfreq_notifier(struct notifier_block *nb)
In file included from arch/arm/mach-imx/busfreq-imx.c:21:0:
include/linux/busfreq-imx.h:57:19: note: previous definition of 'register_busfreq_notifier' was here
static inline int register_busfreq_notifier(struct notifier_block *nb)
<full log attached below>
One has to disable the busfreq inclusion line to get the compile to work.
+obj-y += busfreq_lpddr2.o busfreq-imx.o busfreq_ddr3.o
That seems like a bad problem as it should be reasonable to disable CPU_FREQ and still have a working kernel build. I hope it can be fixed. I have attached the .config and kernel compile logs showing the behavior with and without cpufreq.
Original Attachment has been moved to: compile_works_with_busfreq_only_if_cpufreq.txt.zip
Original Attachment has been moved to: .config_without_cpu_freq.zip
Original Attachment has been moved to: compile_err_with_busfreq_without_cpufreq.txt.zip