Re: Blackfin link issue (Was: linux-next: triage for March 27, 2012)

From: Mike Frysinger
Date: Tue Mar 27 2012 - 23:35:02 EST

On Tue, Mar 27, 2012 at 20:03, Stephen Rothwell wrote:
> On Tue, 27 Mar 2012 17:36:27 -0400 Paul Gortmaker wrote:
>> The blackfin builds are no longer failing on vm_is_stack but instead
>> are all failing with "L1 data A overflow!" at final link, which smells
>> like some kind of binutils/toolchain issue.
>> bfin:***all-builds***
>> Â Â Â when: Â Mar 26
>> Â Â Â why: Â Âbfin-uclinux-ld: L1 data A overflow!
>> Â Â Â status: unknown, binutils issue?
>> Â Â Â fix:
>> Â Â Â ref: Â Â
> It actually looks like this comes from an ASSERT in the blackfin
> ... looks like some sections overflowed.

yes, the assert is doing the right thing. it's attempting to put
24KiB into a region that can only hold 16KiB.

this is due to the recent lib/gen_crc32table.c change:
crc32: bolt on crc32c

it added 8KiB more data. looks to me like it's a complete waste of
space ... it's forced into __cacheline_aligned which doesn't let the
linker do garbage collection on symbols/sections, so all systems are
forced to carry this. seems like this should be a Kconfig knob that
other people would select if they actually need it ?

at any rate, would be easy to fix by disabling Kconfig
CACHELINE_ALIGNED_L1 when CRC32 is enabled considering that makes the
optimization completely useless by totally blowing the size out of the

--- a/arch/blackfin/Kconfig
+++ b/arch/blackfin/Kconfig
@@ -823,7 +823,7 @@
bool "Locate cacheline_aligned data to L1 Data Memory"
default y if !BF54x
default n if BF54x
- depends on !SMP && !BF531
+ depends on !SMP && !BF531 && !CRC32
If enabled, cacheline_aligned data is linked
into L1 data memory. (less latency)
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at
Please read the FAQ at