From: Catalin Marinas <catalin.marinas@arm.com>
To: Guenter Roeck <linux@roeck-us.net>
Cc: "linux-watchdog@vger.kernel.org" <linux-watchdog@vger.kernel.org>,
"linux-arm-kernel@lists.infradead.org"
<linux-arm-kernel@lists.infradead.org>,
Wim Van Sebroeck <wim@iguana.be>,
Maxime Ripard <maxime.ripard@free-electrons.com>,
Will Deacon <Will.Deacon@arm.com>, Arnd Bergmann <arnd@arndb.de>,
Heiko Stuebner <heiko@sntech.de>,
Russell King <linux@arm.linux.org.uk>,
Jonas Jensen <jonas.jensen@gmail.com>,
Randy Dunlap <rdunlap@infradead.org>,
Andrew Morton <akpm@linux-foundation.org>,
Steven Rostedt <rostedt@goodmis.org>,
Ingo Molnar <mingo@kernel.org>,
Dmitry Eremin-Solenikov <dbaryshkov@gmail.com>,
David Woodhouse <dwmw2@infradead.org>,
Tomasz Figa <t.figa@samsung.com>,
"linux-doc@vger.kernel.org" <linux-doc@vger.kernel.org>,
"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>
Subject: Re: [PATCH v4 1/7] kernel: Add support for restart notifier call chain
Date: Mon, 14 Jul 2014 15:53:11 +0100 [thread overview]
Message-ID: <20140714145311.GC1112@arm.com> (raw)
In-Reply-To: <1405265431-4561-2-git-send-email-linux@roeck-us.net>
On Sun, Jul 13, 2014 at 04:30:25PM +0100, Guenter Roeck wrote:
> diff --git a/include/linux/reboot.h b/include/linux/reboot.h
> index 48bf152..120db73 100644
> --- a/include/linux/reboot.h
> +++ b/include/linux/reboot.h
> @@ -38,6 +38,9 @@ extern int reboot_force;
> extern int register_reboot_notifier(struct notifier_block *);
> extern int unregister_reboot_notifier(struct notifier_block *);
>
> +extern int register_restart_notifier(struct notifier_block *);
> +extern int unregister_restart_notifier(struct notifier_block *);
> +extern void kernel_restart_notify(char *cmd);
>
> /*
> * Architecture-specific implementations of sys_reboot commands.
> diff --git a/kernel/reboot.c b/kernel/reboot.c
> index a3a9e24..1bc9bf2 100644
> --- a/kernel/reboot.c
> +++ b/kernel/reboot.c
> @@ -104,6 +104,87 @@ int unregister_reboot_notifier(struct notifier_block *nb)
> }
> EXPORT_SYMBOL(unregister_reboot_notifier);
>
> +/*
> + * Notifier list for kernel code which wants to be called
> + * to restart the system.
> + */
> +static BLOCKING_NOTIFIER_HEAD(restart_notifier_list);
> +
> +/**
> + * register_restart_notifier - Register function to be called to reset
> + * the system
> + * @nb: Info about notifier function to be called
> + * @nb->priority: Notifier priority. Notifiers should follow the
> + * following guidelines for setting priorities.
> + * 0: Restart notifier of last resort,
> + * with limited restart capabilities
> + * 128: Default notifier; use if no other
> + * notifier is expected to be available,
> + * and/or if restart functionality is
> + * sufficient to restart the entire system
> + * 255: Highest priority notifier, will preempt
> + * all other notifier functions
I'm not fully convinced implying a 'notifier' is the right approach
here. By analogy with the reboot notifier, this is something drivers
would want to know about and do some work before the actual system
restart (e.g. disable watchdogs as in the reboot notifier case). The
restart notifier here is meant to perform the actual system restart.
Arguably, the actual restart should be handled by priority 0 with some
preparation before but we have reboot notifier already, so I don't think
it's worth another notifier.
While re-using the notifier mechanism behind the scene is fine, I think
we should at least rename the functions to something like
(un)register_restart_handler().
--
Catalin
next prev parent reply other threads:[~2014-07-14 14:53 UTC|newest]
Thread overview: 21+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-07-13 15:30 [PATCH v4 0/7] kernel: Add support for restart notifier call chain Guenter Roeck
2014-07-13 15:30 ` [PATCH v4 1/7] " Guenter Roeck
2014-07-14 14:53 ` Catalin Marinas [this message]
2014-07-14 14:58 ` Guenter Roeck
2014-07-15 16:12 ` Guenter Roeck
2014-07-13 15:30 ` [PATCH v4 2/7] arm64: Support restart through " Guenter Roeck
2014-07-14 14:55 ` Catalin Marinas
2014-07-14 15:01 ` Guenter Roeck
2014-07-14 15:07 ` Catalin Marinas
2014-07-13 15:30 ` [PATCH v4 3/7] arm: " Guenter Roeck
2014-07-13 15:30 ` [PATCH v4 4/7] power/restart: Call machine_restart instead of arm_pm_restart Guenter Roeck
2014-07-13 15:30 ` [PATCH v4 5/7] watchdog: moxart: Register restart handler with restart notifier Guenter Roeck
2014-07-14 14:19 ` Catalin Marinas
2014-07-14 14:41 ` Guenter Roeck
2014-07-14 15:11 ` Catalin Marinas
2014-07-13 15:30 ` [PATCH v4 6/7] watchdog: alim7101: " Guenter Roeck
2014-07-13 15:30 ` [PATCH v4 7/7] arm/arm64: Unexport restart handlers Guenter Roeck
2014-07-14 14:22 ` Catalin Marinas
2014-07-14 14:39 ` Guenter Roeck
2014-07-14 15:09 ` Catalin Marinas
2014-07-14 16:26 ` Guenter Roeck
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=20140714145311.GC1112@arm.com \
--to=catalin.marinas@arm.com \
--cc=Will.Deacon@arm.com \
--cc=akpm@linux-foundation.org \
--cc=arnd@arndb.de \
--cc=dbaryshkov@gmail.com \
--cc=dwmw2@infradead.org \
--cc=heiko@sntech.de \
--cc=jonas.jensen@gmail.com \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-doc@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-watchdog@vger.kernel.org \
--cc=linux@arm.linux.org.uk \
--cc=linux@roeck-us.net \
--cc=maxime.ripard@free-electrons.com \
--cc=mingo@kernel.org \
--cc=rdunlap@infradead.org \
--cc=rostedt@goodmis.org \
--cc=t.figa@samsung.com \
--cc=wim@iguana.be \
/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