mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
From: Jason Gunthorpe <jgunthorpe@obsidianresearch.com>
To: Dave Martin <dave.martin@linaro.org>
Cc: linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org
Subject: Re: [PATCH] [ARM] Use AT() in the linker script to create correct program headers
Date: Thu, 4 Oct 2012 11:59:07 -0600	[thread overview]
Message-ID: <20121004175907.GB2994@obsidianresearch.com> (raw)
In-Reply-To: <20121004113637.GA2117@linaro.org>

On Thu, Oct 04, 2012 at 12:36:37PM +0100, Dave Martin wrote:

> OK, so it is supported, but not for ARM, yet.  I'm not sure that
> such a patch would be rejected, since building in a DTB is not
> really that different from building in a command-line.

Maybe I will be able to look at this in a few months..

> The other solution to this problem is to distribute the dtb
> alongside the kernel as a supplementary image (similar to
> initramfs), with the bootloader doing the bare minimum of
> modifications to it.

Yes, but we still need rely on complex code like I2C/MTD to create a
correct DTB, which again puts us back to patching the kernel for that
functionality.
 
> Naturally, if zero modifications are needed then the bootloader does not
> need libfdt (or equivalent code) at all.

If only :)

> One other option open to you would be to provide an ELF image loadable
> by your bootloader via a simple wrapper.  This would probably be a more
> robust approach than carrying patches against head.S, since it removes
> any intimate dependency on the kernel code itself.

This is what I ment by having a 2nd stage loader, but this example is
not complete because at this point you also have to patch into the DTB
the initrd address (passed in r0/r1), and the various MAC addresses
(getting them is the hard part..).

The nice thing about the head.S patch is that it lives right after
_entry, so there actually are no dependencies on the kernel code, it
executes in the same environment as the example you presented. 

Anyhow, exploring a CONFIG_ARM_BUILT_IN_DTB.. I think I'd add
something like this to head.S:

#ifdef CONFIG_ARM_BUILT_IN_DTB
       adr     r3,bootloader_r0
       stmia   r3,{r0,r1,r2}
       mov     r2, #0
       mov     r1, #0
       mov     r0, #0
#else
       bl      __vet_atags
#endif

And something like this to early_dt_fixup:

#ifdef CONFIG_ARM_BUILT_IN_DTB
        for_each_dt_provider(dtp) {
	      devtree = dtp->get_dtb();
	      if (devtree)
	      	   break;
        }
#else
        devtree = phys_to_virt(dt_phys);
#endif

Where the 'dev tree provider' would use the stored bootloader
registers and any other information to return the proper DTB. 

Jason

  reply	other threads:[~2012-10-04 17:59 UTC|newest]

Thread overview: 19+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-09-30 23:21 Jason Gunthorpe
2012-10-01 15:39 ` Dave Martin
2012-10-01 16:06   ` Jason Gunthorpe
2012-10-01 17:56     ` Dave Martin
2012-10-01 18:35       ` Jason Gunthorpe
2012-10-02 10:23         ` Dave Martin
2012-10-02 17:47           ` Jason Gunthorpe
2012-10-03 10:43             ` Dave Martin
2012-10-03 18:44               ` Jason Gunthorpe
2012-10-04 11:36                 ` Dave Martin
2012-10-04 17:59                   ` Jason Gunthorpe [this message]
2012-10-08 10:46                     ` Dave Martin
2012-10-09 18:25                       ` Jason Gunthorpe
2012-10-10  9:55                         ` Dave Martin
2012-10-12 21:24                           ` Jason Gunthorpe
2012-10-05  8:45     ` Russell King - ARM Linux
2012-10-08 10:24       ` Dave Martin
2012-10-09 17:37         ` Jason Gunthorpe
2012-10-10  9:18           ` Dave Martin

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=20121004175907.GB2994@obsidianresearch.com \
    --to=jgunthorpe@obsidianresearch.com \
    --cc=dave.martin@linaro.org \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-kernel@vger.kernel.org \
    /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

all inboxes | Powered by JetHome®