Hello, >From time to time I test new kernels with ancient Linksys WRT300N v1.0 device based on BCM4704 SoC. I noticed that after updating kernel from 4.3 to 4.4 it doen't boot anymore. All I can see is the last CFE's (bootloader's) message: > Starting program at 0x80001000 Enabling CONFIG_EARLY_PRINTK doesn't help. After hours or bisecting and testing I found out that it's not caused by any /real/ code change but rather adding a kernel message. It seems that by adding enough print messages I can stop kernel from booting. I didn't know what exactly to look at so I started with "objdump --syms vmlinux". I took 4.1.16 and 4.3.4 and tried adding to them various amount of unique pr_info messages in some random error code path (never executed). I noticed that address of .data was increasing which makes me believe that it's a matter of .rodata size or some affected size/offset in vmlinux. 1) 4.1.6: if .data starts at 80369000 of higher kernel doesn't boot. 2) 4.3.4: if .data starts at 80368000 of higher kernel doesn't boot. Do you have any idea what this problem can be caused by? Any idea how to fix/workaround it? Can I provide any extra info? It doesn't affect all BCM4704 devices. Hauke also has some router using this SoC and he couldn't reproduce this problem. On the other hand Paul also experiences some problems with his Linksys WRT54GL (BCM5352E), the last stable kernel for him seems to be 3.18. Not sure if it's related however. 4.1.16 GOOD > objdump --syms vmlinux | egrep "(ro)?data" | head -n 3 802bd000 l d .rodata 00000000 .rodata 8035c000 l d .data 00000000 .data 8038ebc8 l d .init.data 00000000 .init.data GOOD > objdump --syms vmlinux | egrep "(ro)?data" | head -n 3 802bd000 l d .rodata 00000000 .rodata 80365000 l d .data 00000000 .data 80398bc8 l d .init.data 00000000 .init.data GOOD > objdump --syms vmlinux | egrep "(ro)?data" | head -n 3 802bd000 l d .rodata 00000000 .rodata 80367000 l d .data 00000000 .data 8039abc8 l d .init.data 00000000 .init.data GOOD > objdump --syms vmlinux | egrep "(ro)?data" | head -n 3 802bd000 l d .rodata 00000000 .rodata 80368000 l d .data 00000000 .data 8039abc8 l d .init.data 00000000 .init.data BAD > objdump --syms vmlinux | egrep "(ro)?data" | head -n 3 802bd000 l d .rodata 00000000 .rodata 80369000 l d .data 00000000 .data 8039cbc8 l d .init.data 00000000 .init.data BAD > objdump --syms vmlinux | egrep "(ro)?data" | head -n 3 802bd000 l d .rodata 00000000 .rodata 8036a000 l d .data 00000000 .data 8039cbc8 l d .init.data 00000000 .init.data BAD > objdump --syms vmlinux | egrep "(ro)?data" | head -n 3 802bd000 l d .rodata 00000000 .rodata 8036b000 l d .data 00000000 .data 8039ebc8 l d .init.data 00000000 .init.data 4.3.4 GOOD > objdump --syms vmlinux | egrep "(ro)?data" | head -n 3 802c0000 l d .rodata 00000000 .rodata 80362000 l d .data 00000000 .data 80394f68 l d .init.data 00000000 .init.data GOOD > objdump --syms vmlinux | egrep "(ro)?data" | head -n 3 802c0000 l d .rodata 00000000 .rodata 80365000 l d .data 00000000 .data 80398f68 l d .init.data 00000000 .init.data GOOD > objdump --syms vmlinux | egrep "(ro)?data" | head -n 3 802c0000 l d .rodata 00000000 .rodata 80367000 l d .data 00000000 .data 8039af68 l d .init.data 00000000 .init.data BAD > objdump --syms vmlinux | egrep "(ro)?data" | head -n 3 802c0000 l d .rodata 00000000 .rodata 80368000 l d .data 00000000 .data 8039af68 l d .init.data 00000000 .init.data BAD > objdump --syms vmlinux | egrep "(ro)?data" | head -n 3 802c0000 l d .rodata 00000000 .rodata 8036d000 l d .data 00000000 .data 803a0f68 l d .init.data 00000000 .init.data BAD > objdump --syms vmlinux | egrep "(ro)?data" | head -n 3 802c0000 l d .rodata 00000000 .rodata 8036f000 l d .data 00000000 .data 803a2f68 l d .init.data 00000000 .init.data BAD > objdump --syms vmlinux | egrep "(ro)?data" | head -n 3 802c0000 l d .rodata 00000000 .rodata 80372000 l d .data 00000000 .data 803a4f68 l d .init.data 00000000 .init.data -- Rafał