"make oldconfig" kills config options when cross compiling
Hello,
I want to build an up-to-date kernel (3.14.4) based on this config:
<https://raw.githubusercontent.com/archlinuxarm/PKGBUILDs/master/core/linux-olinuxino/config>
To do so, I copied this config file as ".config" into the kernel source tree and executed
$ make ARCH=arm CROSS_COMPILE=/path/to/compiler/ oldconfig
My problem is, that this always drops important entries like "CONFIG_ARCH_MXS=y".
If I start with "make mxs_defconfig" and run "make oldconfig" on this default config, then no entries are killed.
What's wrong with the config, I want to start with?
Thanks in advance.
Greetings,
Manuel Reimer
Quoted 11 lines · Manuel Reimer
Hello,
I want to build an up-to-date kernel (3.14.4) based on this config:
<https://raw.githubusercontent.com/archlinuxarm/PKGBUILDs/master/core/linux-olinuxino/config>
To do so, I copied this config file as ".config" into the kernel source tree and executed
$ make ARCH=arm CROSS_COMPILE=/path/to/compiler/ oldconfigMy problem is, that this always drops important entries like "
CONFIG_ARCH_MXS=y".
In 3.7 (where that original config file came from), ARCH_MXS did NOT depend on ARCH_MULTI_V5. Somewhere between 3.7 and 3.14, someone decided that ARCH_MXS should depend on ARCH_MULTI_V5. You can probably enable that kconfig option and then enable ARCH_MXS.
Quoted 3 lines
If I start with "make
mxs_defconfig" and run "make oldconfig" on this default config, then no entries are killed.What's wrong with the config, I want to start with?
as explained above.
Quoted 1 line
Thanks in advance.
Good luck.
Signature · 1 line
~Randy
Quoted 4 lines · Randy Dunlap
In 3.7 (where that original config file came from),
ARCH_MXSdid NOT depend onARCH_MULTI_V5. Somewhere between 3.7 and 3.14, someone decided thatARCH_MXSshould depend onARCH_MULTI_V5. You can probably enable that kconfig option and then enableARCH_MXS.
I had to add the following to my config:
CONFIG_ARCH_MULTI_V5=yCONFIG_ARCH_MULTI_V6_V7=nCONFIG_ARCH_MULTI_V7=n
With these three lines "make oldconfig" seemed to no longer kill important config entries.
"make uImage" failed. I got asked to specify a "LOADADDR" so I created my image like this:
LOADADDR=0x40008000 make uImage
But the resulting kernel fails to boot. The error message makes sense. Maybe a bug in imx23.dtsi? In fact the serial port "duart: serial@80070000" does not have a "dma-names" property:
But is this a blocker and can cause the kernel boot to stop?
Boot log follows:
U-Boot 2013.10 (Jan 08 2014 - 14:49:21) Arch Linux ARM
CPU: Freescale i.MX23 rev1.4 at 454 MHz BOOT: SSP SD/MMC #0 DRAM: 64 MiB MMC: MXS MMC: 0
*** Warning - bad CRC, using default environment
In: serial Out: serial Err: serial Net: Net Initialization Skipped
No ethernet found.
Hit any key to stop autoboot: 0
mmc0 is current device
SD/MMC found on device 0
170 bytes read in 101 ms (1000 Bytes/s) Importing environment from mmc (uEnv.txt)... Checking if uenvcmd is set ...
Running loaduimage ...
2542832 bytes read in 848 ms (2.9 MiB/s) 9888 bytes read in 124 ms (77.1 KiB/s) Booting from mmc ...
## Booting kernel from Legacy Image at 42000000 ...
Image Name: Linux-3.14.4-9-ARCH Image Type: ARM Linux Kernel Image (uncompressed) Data Size: 2542768 Bytes = 2.4 MiB
Load Address: 40008000
Entry Point: 40008000
Verifying Checksum ... OK
## Flattened Device Tree blob at 41000000
Booting using the fdt blob at 0x41000000 Loading Kernel Image ... OK
Loading Device Tree to 43b63000, end 43b6869f ... OK
Starting kernel ...
[ 0.000000] of_irq_init: children remain, but no parents [ 1.970000] of_dma_request_slave_channel: dma-names property of node '/apb@80000000/apbx@80040000/serial@80070000' missing or empty