From: Grant Likely <grant.likely@secretlab.ca>
To: Sam Ravnborg <sam@ravnborg.org>
Cc: Michal Marek <mmarek@suse.cz>,
linux-arch@vger.kernel.org, linux-kbuild@vger.kernel.org,
linuxppc-dev@lists.ozlabs.org,
devicetree-discuss@lists.ozlabs.org,
linux-kernel@vger.kernel.org, sodaville@linutronix.de,
microblaze-uclinux@itee.uq.edu.au, dirk.brandewie@gmail.com,
arjan@linux.intel.com
Subject: Re: [PATCH 1/5] of: Add support for linking device tree blobs into vmlinux
Date: Wed, 17 Nov 2010 11:07:23 -0700 [thread overview]
Message-ID: <20101117180723.GA7550@angua.secretlab.ca> (raw)
In-Reply-To: <20101117092751.GA19781@merkur.ravnborg.org>
On Wed, Nov 17, 2010 at 10:27:51AM +0100, Sam Ravnborg wrote:
> On Tue, Nov 16, 2010 at 02:41:36PM -0800, dirk.brandewie@gmail.com wrote:
> > From: Dirk Brandewie <dirk.brandewie@gmail.com>
> >
> > This patch adds support for linking device tree blobs into
> > vmlinux. Modifies asm-generic/vmlinux.lds.h to add linking
> > .dtb.init.rodata sections into the .init.data section of the vmlinux
> > image. Modifies scripts/Makefile.lib to add a kbuild command to
> > compile DTS files to device tree blobs and a rule to create objects to
> > wrap the blobs for linking.
> >
> > The DTB's are placed on 32 byte boundries to allow parsing the blob
> > with driver/of/fdt.c during early boot without having to copy the blob
> > to get the structure alignment GCC expects.
> >
> > A DTB is linked in by adding the DTB object to the list of objects to
> > be linked into vmlinux in the archtecture specific Makefile using
> > obj-y += foo.dtb.o
> >
> > Signed-off-by: Dirk Brandewie <dirk.brandewie@gmail.com>
> > ---
> > include/asm-generic/vmlinux.lds.h | 19 +++++++++++++++++--
> > scripts/Makefile.lib | 20 ++++++++++++++++++++
> > 2 files changed, 37 insertions(+), 2 deletions(-)
>
> When you touch Makefiles in scripts/* it is always a good idea to cc:
> kbuild maintainer on the patch - I have added Michal.
>
> Support functionality in Makefile.lib is documented in
> Documentation/kbuild/* - please add documentation there.
>
> >
> > diff --git a/include/asm-generic/vmlinux.lds.h b/include/asm-generic/vmlinux.lds.h
> > index bd69d79..ea671e7 100644
> > --- a/include/asm-generic/vmlinux.lds.h
> > +++ b/include/asm-generic/vmlinux.lds.h
> > @@ -67,7 +67,14 @@
> > * Align to a 32 byte boundary equal to the
> > * alignment gcc 4.5 uses for a struct
> > */
> > -#define STRUCT_ALIGN() . = ALIGN(32)
> > +#define STRUCT_ALIGNMENT 32
> > +#define STRUCT_ALIGN() . = ALIGN(STRUCT_ALIGNMENT)
> > +
> > +/* Device tree blobs linked into the kernel need to have proper
> > + * structure alignment to be parsed by the flat device tree library
> > + * used in early boot
> > +*/
> > +#define DTB_ALIGNMENT STRUCT_ALIGNMENT
>
> It has been discussed in another thread some time ago to move
> to a general 32 byte alignment for everything in vmlinux.lds.h
> So there is not much need for the specific DTB alignment.
>
> > diff --git a/scripts/Makefile.lib b/scripts/Makefile.lib
> > index 4c72c11..29db062 100644
> > --- a/scripts/Makefile.lib
> > +++ b/scripts/Makefile.lib
> > @@ -200,6 +200,26 @@ quiet_cmd_gzip = GZIP $@
> > cmd_gzip = (cat $(filter-out FORCE,$^) | gzip -f -9 > $@) || \
> > (rm -f $@ ; false)
> >
> > +# DTC
> > +# ---------------------------------------------------------------------------
> > +$(obj)/%.dtb.S: $(obj)/%.dtb FORCE
> > + @echo '#include <asm-generic/vmlinux.lds.h>' > $@
> > + @echo '.section .dtb.init.rodata,"a"' >> $@
> > + @echo '.balign DTB_ALIGNMENT' >> $@
> > + @echo '.global __dtb_$(*F)_begin' >> $@
> > + @echo '__dtb_$(*F)_begin:' >> $@
> > + @echo '.incbin "$<" ' >> $@
> > + @echo '__dtb_$(*F)_end:' >> $@
> > + @echo '.global __dtb_$(*F)_end' >> $@
> > + @echo '.balign DTB_ALIGNMENT' >> $@
>
>
> This will be noisy during build. Please use proper macors to supress output.
>
>
> > +
> > +DTC = $(objtree)/scripts/dtc/dtc
> > +
> > +quiet_cmd_dtc = DTC $@
> Please avoid tabs in the output - all other uses spaces. (There is a tab between DTC and $@)
>
> > + cmd_dtc = $(DTC) -O dtb -o $(obj)/$*.dtb -b 0 $(DTS_FLAGS) $(src)/dts/$*.dts
>
> Looks strange. How about:
> cmd_dtc = $(DTC) -O dtb -o $@ -b 0 $(DTS_FLAGS) $<
>
> Then you avoid the hardcoded path in the rule too.
>
>
> > +
> > +$(obj)/%.dtb: $(src)/dts/%.dts
> > + $(call if_changed,dtc)
The rule should be generic (not depend on the presence of a dts
subdirectory. Basically, the .dtb really should be generated in the
same directory as the .dts file. There is no reason for this rule to
have special behaviour.
>
> This snippet belong in the file that uses this.
> This is how we do for other rules like bzip etc.
This rule is intended to be generic and usable anywhere in the tree.
g.
next prev parent reply other threads:[~2010-11-17 18:07 UTC|newest]
Thread overview: 24+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-11-16 22:41 [PATCH 0/5] Add the ability to link device blobs into vmlinux dirk.brandewie
2010-11-16 22:41 ` [PATCH 1/5] of: Add support for linking device tree " dirk.brandewie
2010-11-17 0:39 ` David Daney
2010-11-17 2:21 ` Dirk Brandewie
2010-11-17 2:58 ` Grant Likely
2010-11-17 6:14 ` Dirk Brandewie
2010-11-17 17:54 ` David Daney
2010-11-17 9:27 ` Sam Ravnborg
2010-11-17 18:07 ` Grant Likely [this message]
2010-11-17 20:24 ` Sam Ravnborg
2010-11-16 22:41 ` [PATCH 2/5] of/fdt: add kernel command line option for dtb_compat string dirk.brandewie
2010-11-17 0:16 ` Grant Likely
2010-11-16 22:41 ` [PATCH 3/5] x86/of: Add building device tree blob(s) into image dirk.brandewie
2010-11-17 6:02 ` Grant Likely
2010-11-17 6:43 ` Dirk Brandewie
2010-11-16 22:41 ` [PATCH 4/5] of/powerpc: Move build to use generic dts->dtb rule dirk.brandewie
2010-11-17 6:06 ` Grant Likely
2010-11-17 6:32 ` Dirk Brandewie
2010-11-16 22:41 ` [PATCH 5/5] of/microblaze: " dirk.brandewie
2010-12-01 19:41 ` [PATCH 0/4] V2 Add ability to link device blob(s) into vmlinux dirk.brandewie
2010-12-01 19:41 ` [PATCH 1/4] of: Add support for linking device tree blobs " dirk.brandewie
2010-12-01 19:41 ` [PATCH 2/4] x86/of: Add building device tree blob(s) into image dirk.brandewie
2010-12-01 19:41 ` [PATCH 3/4] of/powerpc: Use generic rule to build dtb's dirk.brandewie
2010-12-01 19:41 ` [PATCH 4/4] microblaze/of: " dirk.brandewie
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20101117180723.GA7550@angua.secretlab.ca \
--to=grant.likely@secretlab.ca \
--cc=arjan@linux.intel.com \
--cc=devicetree-discuss@lists.ozlabs.org \
--cc=dirk.brandewie@gmail.com \
--cc=linux-arch@vger.kernel.org \
--cc=linux-kbuild@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linuxppc-dev@lists.ozlabs.org \
--cc=microblaze-uclinux@itee.uq.edu.au \
--cc=mmarek@suse.cz \
--cc=sam@ravnborg.org \
--cc=sodaville@linutronix.de \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).