Skip to contentSkip to conversation

"make oldconfig" kills config options when cross compiling

DISCUSSION Manuel Reimer 2 participants 3 messages May 15, 2014 – May 24, 2014

lore
Share & tools
lore
#0 lore raw

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

#1 lore raw
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/ oldconfig

My 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
#2 lore raw
Quoted 4 lines · Randy Dunlap

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.

I had to add the following to my config:

CONFIG_ARCH_MULTI_V5=y
CONFIG_ARCH_MULTI_V6_V7=n
CONFIG_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:

http://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/tree/arch/arm/boot/dts/imx23.dtsi#n496

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