From: NeilBrown <neilb@suse.de>
To: Colin Cross <ccross@android.com>
Cc: Greg KH <gregkh@linuxfoundation.org>,
Andrew Boie <andrew.p.boie@intel.com>,
arve@android.com, rebecca@android.com,
devel@driverdev.osuosl.org, linux-kernel@vger.kernel.org
Subject: Re: [PATCH] bcb: Android bootloader control block driver
Date: Mon, 2 Jul 2012 10:10:57 +1000 [thread overview]
Message-ID: <20120702101057.2a8dd6a6@notabene.brown> (raw)
In-Reply-To: <CAMbhsRRUs1tHQ+DfWzhKE6M47+Rqu0uB4hQgX7d7ZGzaZi9uyw@mail.gmail.com>
[-- Attachment #1: Type: text/plain, Size: 3615 bytes --]
On Fri, 29 Jun 2012 21:37:36 -0700 Colin Cross <ccross@android.com> wrote:
> What's the point of the existing syscall option if it doesn't work on
> all platforms, or at least all platforms that want to support it? It
> doesn't make sense to me to use REBOOT2 on some SoCs because they
> happen to use something that userspace cannot access, but use direct
> access from userspace and a different reboot syscall option on other
> SoCs.
>
> >> <snip>
> >>
> >> >>
> >> >> diff --git a/drivers/staging/android/Kconfig b/drivers/staging/android/Kconfig
> >> >> index 9a99238..c30fd20 100644
> >> >> --- a/drivers/staging/android/Kconfig
> >> >> +++ b/drivers/staging/android/Kconfig
> >> >> @@ -78,6 +78,17 @@ config ANDROID_INTF_ALARM_DEV
> >> >> elapsed realtime, and a non-wakeup alarm on the monotonic clock.
> >> >> Also exports the alarm interface to user-space.
> >> >>
> >> >> +config BOOTLOADER_CONTROL
> >> >> + tristate "Bootloader Control Block module"
> >> >> + default n
> >> >> + help
> >> >> + This driver installs a reboot hook, such that if reboot() is invoked
> >> >> + with a string argument NNN, "bootonce-NNN" is copied to the command
> >> >> + field in the Bootloader Control Block on the /misc partition, to be
> >> >> + read by the bootloader. If the string matches one of the boot labels
> >> >> + defined in its configuration, it will boot once into that label. The
> >> >> + device and partition number are specified on the kernel command line.
> >> >> +
> >> >> endif # if ANDROID
> >> >>
> >> >> endmenu
> >>
> >> Most of this driver is not unique to Android.
> >
> > Do any other systems use it?
>
> None that I'm aware of, but REBOOT2 existed long before Android, so I
> assume something must have used it.
Dangerous that - making assumptions.
I've just spent a while hunting though the code and the history.
The LINUX_REBOOT_CMD_RESTART2 option to sys_reboot - which is the only one
that uses the the 'arg' option - was added in 2.1.30. This was the same time
that reboot notifiers were added and there seem to be steps towards a more
generic "machine_restart" call.
No code actually *used* the arg.
Looking through current code is rather time consuming as you have to follow
several levels of indirection to find code that might actually use the arg,
but I spend a while looking, trying to cover samples for all archs and driver
classes (there are lots of watchdogs - I didn't check them all).
I only found *1* instance of code which actually used the arg.
This is arch/alpha/kernel/process.c which tests if the arg is NULL, and
selects between a "cold bootstrap" and a "warm bootstrap".
I think we would be well served by a patch that just removes it. Or at
least, that ignores the value of the arg and just passes NULL or (void*)1.
And definitely don't pass it to the reboot notifiers - no code uses it there.
I can certainly see value in having a standard interface to say "the next
reboot should boot 'foo' rather than the default". I don't think there is
any real need for the kernel to provide that interface.
I would suggest that you create
/sbin/next-boot-image
(or some better name), which gets a different program installed depending on
what boot loader is in use. Then your libcutils can just
system("/sbin/next-boot-image foo")
reboot(LINUX_REBOOT_CMD_RESTART);
and work on all platforms.
(Or use a loadable module, or a binder RPC to some service, or dbus or smoke
signals or whatever).
NeilBrown
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 828 bytes --]
next prev parent reply other threads:[~2012-07-02 0:11 UTC|newest]
Thread overview: 13+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-06-29 19:36 [PATCH] bcb: Android bootloader control block driver Andrew Boie
2012-06-29 21:25 ` NeilBrown
2012-06-29 21:56 ` Boie, Andrew P
2012-06-30 3:08 ` gregkh
2012-06-30 3:23 ` Greg KH
2012-06-30 3:43 ` Colin Cross
2012-06-30 4:19 ` Greg KH
2012-06-30 4:37 ` Colin Cross
2012-07-02 0:10 ` NeilBrown [this message]
2012-07-07 22:39 ` Colin Cross
2012-07-07 23:05 ` Greg KH
2012-07-08 0:25 ` Colin Cross
2012-07-08 0:35 ` Boie, Andrew P
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=20120702101057.2a8dd6a6@notabene.brown \
--to=neilb@suse.de \
--cc=andrew.p.boie@intel.com \
--cc=arve@android.com \
--cc=ccross@android.com \
--cc=devel@driverdev.osuosl.org \
--cc=gregkh@linuxfoundation.org \
--cc=linux-kernel@vger.kernel.org \
--cc=rebecca@android.com \
/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