ARM: 8294/1: ATAG_DTB_COMPAT: remove the DT workspace's hardcoded 64KB size
authorNicolas Pitre <nicolas.pitre@linaro.org>
Tue, 27 Jan 2015 15:10:42 +0000 (16:10 +0100)
committerRussell King <rmk+kernel@arm.linux.org.uk>
Thu, 29 Jan 2015 15:23:01 +0000 (15:23 +0000)
commitc2607f74aad96d18316a6e709b40e0ffe9def148
tree7ca8b21b5631d9fe31faa075544cfe1c26db5f3f
parentc2273a185354fe9420fb342b1ca09a6fed857fb3
ARM: 8294/1: ATAG_DTB_COMPAT: remove the DT workspace's hardcoded 64KB size

There is currently a hardcoded limit of 64KB for the DTB to live in and
be extended with ATAG info.  Some DTBs have outgrown that limit:

$ du -b arch/arm/boot/dts/omap3-n900.dtb
70212   arch/arm/boot/dts/omap3-n900.dtb

Furthermore, the actual size passed to atags_to_fdt() included the stack
size which is obviously wrong.

The initial DTB size is known, so use it to size the allocated workspace
with a 50% growth assumption and relocate the temporary stack above that.
This is also clamped to 32KB min / 1MB max for robustness against bad
DTB data.

Reported-by: Pali Rohár <pali.rohar@gmail.com>
Tested-by: Pavel Machek <pavel@ucw.cz>
Signed-off-by: Nicolas Pitre <nico@linaro.org>
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
arch/arm/boot/compressed/head.S