Re: [PATCH RFC 15/17] microblaze: Convert from _fdt_start to __dtb_start

From: Michal Simek
Date: Wed Nov 13 2013 - 05:20:20 EST


On 11/12/2013 08:42 PM, Geert Uytterhoeven wrote:
> Kill the microblaze-specific __fdt_blob section, and start using
> .dtb.init.rodata from <asm-generic/sections.h> for built-in DTBs, like
> most other DT enabled architectures.
>
> Signed-off-by: Geert Uytterhoeven <geert@xxxxxxxxxxxxxx>
> Cc: Michal Simek <monstr@xxxxxxxxx>
> Cc: Rob Herring <rob.herring@xxxxxxxxxxx>
> Cc: microblaze-uclinux@xxxxxxxxxxxxxx
> Cc: devicetree@xxxxxxxxxxxxxxx
> ---
> Untested, but the resulting vmlinux after "make simpleImage.system" looks
> sane.
>
> QUESTION: The padding of the DTB is gone, is this OK?

Removing this kernel padding should be fine. I can't remember
why it was there from the beginning.

>
> TODO: Start using the DTB logic in scripts/Makefile.lib instead of
> arch/microblaze/boot/dts/linked_dtb.S
>
> arch/microblaze/boot/Makefile | 2 +-
> arch/microblaze/boot/dts/linked_dtb.S | 2 +-
> arch/microblaze/include/asm/sections.h | 4 +---
> arch/microblaze/kernel/head.S | 2 +-
> arch/microblaze/kernel/setup.c | 4 ++--
> arch/microblaze/kernel/vmlinux.lds.S | 8 --------
> 6 files changed, 6 insertions(+), 16 deletions(-)
>
> diff --git a/arch/microblaze/boot/Makefile b/arch/microblaze/boot/Makefile
> index 8e211cc28dac..e4a99a22dab8 100644
> --- a/arch/microblaze/boot/Makefile
> +++ b/arch/microblaze/boot/Makefile
> @@ -23,7 +23,7 @@ quiet_cmd_cp = CP $< $@$2
>
> quiet_cmd_strip = STRIP $@
> cmd_strip = $(STRIP) -K microblaze_start -K _end -K __log_buf \
> - -K _fdt_start vmlinux -o $@
> + -K __dtb_start vmlinux -o $@

I have started to discuss this change internally because our tools related
on this _fdt_start name.

>
> UIMAGE_LOADADDR = $(CONFIG_KERNEL_BASE_ADDR)
>
> diff --git a/arch/microblaze/boot/dts/linked_dtb.S b/arch/microblaze/boot/dts/linked_dtb.S
> index 23345af3721f..bfc53b5795aa 100644
> --- a/arch/microblaze/boot/dts/linked_dtb.S
> +++ b/arch/microblaze/boot/dts/linked_dtb.S
> @@ -1,2 +1,2 @@
> -.section __fdt_blob,"a"
> +.section .dtb.init.rodata,"a"
> .incbin "arch/microblaze/boot/dts/system.dtb"
> diff --git a/arch/microblaze/include/asm/sections.h b/arch/microblaze/include/asm/sections.h
> index 1b281d3ea734..fb8ab0ba03fc 100644
> --- a/arch/microblaze/include/asm/sections.h
> +++ b/arch/microblaze/include/asm/sections.h
> @@ -16,8 +16,6 @@
> # ifndef __ASSEMBLY__
> extern char _ssbss[], _esbss[];
> extern unsigned long __ivt_start[], __ivt_end[];
> -
> -extern u32 _fdt_start[], _fdt_end[];
> -
> # endif /* !__ASSEMBLY__ */
> +
> #endif /* _ASM_MICROBLAZE_SECTIONS_H */
> diff --git a/arch/microblaze/kernel/head.S b/arch/microblaze/kernel/head.S
> index 817b7eec95b6..6108889f0025 100644
> --- a/arch/microblaze/kernel/head.S
> +++ b/arch/microblaze/kernel/head.S
> @@ -94,7 +94,7 @@ big_endian:
> bnei r11, no_fdt_arg /* No - get out of here */
> _prepare_copy_fdt:
> or r11, r0, r0 /* incremment */
> - ori r4, r0, TOPHYS(_fdt_start)
> + ori r4, r0, TOPHYS(__dtb_start)
> ori r3, r0, (0x8000 - 4)

If others is fine this 0x8000 is that hardcoded pad dtb size in lds file
and needs to be changed too.

Let me discuss this with others but if changing symbol name is fine
then we can fix just this problem and your patch is fine.

Thanks,
Michal

--
Michal Simek, Ing. (M.Eng), OpenPGP -> KeyID: FE3D1F91
w: www.monstr.eu p: +42-0-721842854
Maintainer of Linux kernel - Microblaze cpu - http://www.monstr.eu/fdt/
Maintainer of Linux kernel - Xilinx Zynq ARM architecture
Microblaze U-BOOT custodian and responsible for u-boot arm zynq platform


Attachment: signature.asc
Description: OpenPGP digital signature