diff mbox

scripts/dtc: pad DTBs to facilitate later modification

Message ID 1400888507-11637-1-git-send-email-khilman@linaro.org
State New
Headers show

Commit Message

Kevin Hilman May 23, 2014, 11:41 p.m. UTC
By default, add some padding to the DT blobs to facilitate later
patching.

An example need for DTB patching is the need to modifiy the command
line on platforms where ATAGS are not (or cannot) be used to pass the
commandline.  For example, we do not support a big-endian kernel
reading ATAGS from a little-endian u-boot, so the only way to pass a
command line in the DT.

Also, without ATAG support (or if u-boot was built without
CONFIG_INITRD_TAG) the only way to pass an initrd is by adding an
initrd= option to command line (in the DT).

Therefore, to facilitate adding to the DT command line directly in the
DTB, add some padding.

Cc: Nicolas Pitre <nico@linaro.org>
Cc: Stephen Warren <swarren@wwwdotorg.org>
Cc: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
Signed-off-by: Kevin Hilman <khilman@linaro.org>
---
I kinda pulled 64 bytes out of the air here since it's enough to add
some common things to the commandline like debug, earlyprink
initrd=<addr>,<size>, etc., but I'm certainlly not opposed to more
padding.

 scripts/Makefile.lib | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

Comments

Stephen Warren May 29, 2014, 3:55 p.m. UTC | #1
On 05/23/2014 05:41 PM, Kevin Hilman wrote:
> By default, add some padding to the DT blobs to facilitate later
> patching.
> 
> An example need for DTB patching is the need to modifiy the command
> line on platforms where ATAGS are not (or cannot) be used to pass the
> commandline.  For example, we do not support a big-endian kernel
> reading ATAGS from a little-endian u-boot, so the only way to pass a
> command line in the DT.
> 
> Also, without ATAG support (or if u-boot was built without
> CONFIG_INITRD_TAG) the only way to pass an initrd is by adding an
> initrd= option to command line (in the DT).
> 
> Therefore, to facilitate adding to the DT command line directly in the
> DTB, add some padding.
> 
> Cc: Nicolas Pitre <nico@linaro.org>
> Cc: Stephen Warren <swarren@wwwdotorg.org>
> Cc: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
> Signed-off-by: Kevin Hilman <khilman@linaro.org>
> ---
> I kinda pulled 64 bytes out of the air here since it's enough to add
> some common things to the commandline like debug, earlyprink
> initrd=<addr>,<size>, etc., but I'm certainlly not opposed to more
> padding.

Conceptually,
Acked-by: Stephen Warren <swarren@nvidia.com>

But I would expect a pad of something like 4KB to be more future-proof.
U-Boot appears to use 4KB on ARM at least:

./arch/arm/dts/Makefile:37:DTC_FLAGS += -R 4 -p 0x1000
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/
Kevin Hilman May 29, 2014, 5:20 p.m. UTC | #2
On Thu, May 29, 2014 at 8:55 AM, Stephen Warren <swarren@wwwdotorg.org> wrote:
> On 05/23/2014 05:41 PM, Kevin Hilman wrote:
>> By default, add some padding to the DT blobs to facilitate later
>> patching.
>>
>> An example need for DTB patching is the need to modifiy the command
>> line on platforms where ATAGS are not (or cannot) be used to pass the
>> commandline.  For example, we do not support a big-endian kernel
>> reading ATAGS from a little-endian u-boot, so the only way to pass a
>> command line in the DT.
>>
>> Also, without ATAG support (or if u-boot was built without
>> CONFIG_INITRD_TAG) the only way to pass an initrd is by adding an
>> initrd= option to command line (in the DT).
>>
>> Therefore, to facilitate adding to the DT command line directly in the
>> DTB, add some padding.
>>
>> Cc: Nicolas Pitre <nico@linaro.org>
>> Cc: Stephen Warren <swarren@wwwdotorg.org>
>> Cc: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
>> Signed-off-by: Kevin Hilman <khilman@linaro.org>
>> ---
>> I kinda pulled 64 bytes out of the air here since it's enough to add
>> some common things to the commandline like debug, earlyprink
>> initrd=<addr>,<size>, etc., but I'm certainlly not opposed to more
>> padding.
>
> Conceptually,
> Acked-by: Stephen Warren <swarren@nvidia.com>
>
> But I would expect a pad of something like 4KB to be more future-proof.
> U-Boot appears to use 4KB on ARM at least:
>
> ./arch/arm/dts/Makefile:37:DTC_FLAGS += -R 4 -p 0x1000

Great.  As I mentioned above, I'm certainly not opposed to more
padding, and agree that it would be more future proof.  I was simply
being rather conservative in case folks didn't want to see every .dtb
grow by 4k.

I'll wait a bit to see if there are any other opinions, and the respin
with 4k padding.

Kevin
--
To unsubscribe from this list: send the line "unsubscribe devicetree" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
diff mbox

Patch

diff --git a/scripts/Makefile.lib b/scripts/Makefile.lib
index 6a5b0decb797..d7a57c2620f3 100644
--- a/scripts/Makefile.lib
+++ b/scripts/Makefile.lib
@@ -264,7 +264,7 @@  $(obj)/%.dtb.S: $(obj)/%.dtb
 
 quiet_cmd_dtc = DTC     $@
 cmd_dtc = $(CPP) $(dtc_cpp_flags) -x assembler-with-cpp -o $(dtc-tmp) $< ; \
-	$(objtree)/scripts/dtc/dtc -O dtb -o $@ -b 0 \
+	$(objtree)/scripts/dtc/dtc -O dtb -o $@ -b 0 -p 64 \
 		-i $(dir $<) $(DTC_FLAGS) \
 		-d $(depfile).dtc.tmp $(dtc-tmp) ; \
 	cat $(depfile).pre.tmp $(depfile).dtc.tmp > $(depfile)