From: Daniel Gimpelevich <daniel@gimpelevich.san-francisco.ca.us>
To: Hauke Mehrtens <hauke@hauke-m.de>
Cc: linux-mips@linux-mips.org, Jonas Gorski <jogo@openwrt.org>,
Mathias Kresin <openwrt@kresin.me>
Subject: Re: Adding support for device tree and command line
Date: Mon, 23 May 2016 15:12:01 -0700 [thread overview]
Message-ID: <1464041521.5475.18.camel@chimera> (raw)
In-Reply-To: <5743777F.9060801@hauke-m.de>
On Mon, 2016-05-23 at 23:34 +0200, Hauke Mehrtens wrote:
> On 05/23/2016 11:14 PM, Hauke Mehrtens wrote:
> > Section 3 of this document defines some interfaces how a boot loader
> > could forward a command line *or* a device tree to the kernel:
> > http://wiki.prplfoundation.org/w/images/4/42/UHI_Reference_Manual.pdf
> > This allows only a device tree *or* a command line, not both.
> >
> > The Linux kernel also supports an appended device tree. In this case the
> > early code overwrites the fw_args to look like the boot loader added a
> > device tree. This is done when CONFIG_MIPS_RAW_APPENDED_DTB is activated.
> >
> > The problem is when we use an appended device tree and the boot loader
> > adds some important information in the kernel command line. In this case
> > the command line gets overwritten and we do not get this information.
> > This is the case for some lantiq devices were the boot loader provides
> > the mac address to the kernel via the kernel command line.
> >
> > My proposal to solve this problem is to extend the interface and add a
> > option to provide the kernel command line *and* a device tree from the
> > boot loader to the kernel.
> >
> > a) use fw_arg0 ($a0) = -2 and fill the unused registers fw_arg2 ($a2)
> > and fw_arg3 ($a3) with argv and envp.
> >
> > b) add a new boot protocol $a0 = -3 with $a1 = DT address, $a2 = argv
> > and $a3 = envp.
>
> I just looked a little bit more closely and saw that the command line
> uses 3 args. One for the count, one argv and one envp.
>
> I would then only support device tree + count and argv, so the new
> interface would not support envp.
>
> >
> > I would prefer solution b).
> >
> > This way we would not loose the kernel command line when appending a
> > device tree and this could also be used by the boot loader if someone
> > wants to.
> >
> > Should I send a patch for this?
> >
> > Hauke
It was because I looked through the above-linked UHI spec that I became
concerned about CONFIG_MIPS_RAW_APPENDED_DTB only mimicking, rather than
fully implementing, real UHI. In the upstream kernel, the new $a0 == -2
code can be a starting point for adding UHI argv/envp parsing for when a
UHI-compliant bootloader is used. However, on the head.S side, what I
propose for the lantiq target is to remove CONFIG_MIPS_RAW_APPENDED_DTB
from the kernel config, and reintroduce this as a platform patch:
https://github.com/openwrt/openwrt/blob/b3158f781f24ac2ec1c0da86479bfc156c52c80b/target/linux/lantiq/patches-4.4/0036-owrt-generic-dtb-image-hack.patch
The brcm63xx target could then retain CONFIG_MIPS_RAW_APPENDED_DTB, or
not, depending on bootloader specifics there, which I have not
investigated, and likewise the various other targets to which
CONFIG_MIPS_RAW_APPENDED_DTB has since been extended even though it was
apparently initially only an expedient hack only for brcm63xx.
Using $a0 = -3 is expressly prohibited in the above UHI document, and
using $a2/$a3 "would risk becoming incompatible with existing UHI
compliant implementations."
next prev parent reply other threads:[~2016-05-23 22:12 UTC|newest]
Thread overview: 26+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-05-23 21:14 Adding support for device tree and command line Hauke Mehrtens
2016-05-23 21:34 ` Hauke Mehrtens
2016-05-23 22:12 ` Daniel Gimpelevich [this message]
2016-05-24 5:32 ` [RFC PATCH] " Daniel Gimpelevich
2016-05-24 11:27 ` Antony Pavlov
2016-05-24 15:15 ` Daniel Gimpelevich
2016-05-24 15:27 ` Daniel Gimpelevich
2016-05-24 16:48 ` Antony Pavlov
2016-05-24 17:00 ` Daniel Gimpelevich
2016-05-25 3:31 ` Antony Pavlov
2016-05-25 3:33 ` Daniel Gimpelevich
2016-05-27 21:06 ` [PATCH v2] " Daniel Gimpelevich
2016-05-28 10:31 ` Antony Pavlov
2016-05-28 19:05 ` Daniel Gimpelevich
2016-05-29 1:23 ` Daniel Gimpelevich
2016-05-30 17:24 ` Antony Pavlov
2016-05-29 10:53 ` Jonas Gorski
2016-05-29 18:38 ` Daniel Gimpelevich
2016-05-29 19:01 ` Jonas Gorski
2016-05-29 19:08 ` Daniel Gimpelevich
2016-05-29 19:22 ` Jonas Gorski
2016-05-29 19:26 ` Daniel Gimpelevich
2016-05-29 19:30 ` Jonas Gorski
2016-05-29 21:19 ` Daniel Gimpelevich
2016-05-26 16:25 ` [RFC PATCH] " Hauke Mehrtens
2016-05-26 17:24 ` Daniel Gimpelevich
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=1464041521.5475.18.camel@chimera \
--to=daniel@gimpelevich.san-francisco.ca.us \
--cc=hauke@hauke-m.de \
--cc=jogo@openwrt.org \
--cc=linux-mips@linux-mips.org \
--cc=openwrt@kresin.me \
/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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.