From: Johan Hovold <johan@kernel.org>
To: Russell King - ARM Linux <linux@arm.linux.org.uk>
Cc: "Johan Hovold" <johan@kernel.org>,
"Andrew Morton" <akpm@linux-foundation.org>,
"Felipe Balbi" <balbi@ti.com>,
"Alessandro Zummo" <a.zummo@towertech.it>,
"Tony Lindgren" <tony@atomide.com>,
"Benoît Cousson" <bcousson@baylibre.com>,
"Lokesh Vutla" <lokeshvutla@ti.com>,
"Guenter Roeck" <linux@roeck-us.net>,
nsekhar@ti.com, t-kristo@ti.com, j-keerthy@ti.com,
linux-omap@vger.kernel.org, linux-arm-kernel@lists.infradead.org,
devicetree@vger.kernel.org, rtc-linux@googlegroups.com,
linux-kernel@vger.kernel.org
Subject: Re: [PATCH v2 00/20] rtc: omap: fixes and power-off feature
Date: Wed, 29 Oct 2014 14:22:44 +0100 [thread overview]
Message-ID: <20141029132244.GD2265@localhost> (raw)
In-Reply-To: <20141029131020.GB12379@n2100.arm.linux.org.uk>
On Wed, Oct 29, 2014 at 01:10:20PM +0000, Russell King - ARM Linux wrote:
> On Wed, Oct 29, 2014 at 01:34:18PM +0100, Johan Hovold wrote:
> > On Tue, Oct 28, 2014 at 03:16:10PM +0000, Russell King - ARM Linux wrote:
> > > And how is that different from having a set of power-off handlers, and
> > > reporting when each individual one fails? Don't you want to know if
> > > your primary high priority reboot handler fails, just as much as you
> > > want to know if your final last-resort power-off handler fails?
> >
> > Good point. Failed power-off should probably be logged by the power-off
> > call chain implementation (which seems to makes notifier chains a bad
> > fit).
> >
> > And what about any power-off latencies? Should this always be dealt with
> > in the power-off handler?
> >
> > Again, if it's predictable and high, as in the OMAP RTC case, it should
> > go in the handler. But what if it's just normal bus latencies
> > (peripheral busses, i2c, or whatever people may come up with)?
> >
> > Should there always be a short delay before calling the next handler?
>
> If the handler has determined that it has failed, then why delay before
> trying the next handler? At the point it has decided it has failed,
> surely that's after it has waited sufficient time to determine that
> failure?
The current handlers we have are not expecting any other handler to be
run after they return. My question was whether all these handlers should
get a short mdelay added to them (e.g. to compensate for bus latencies)
or if this could be done in the power-off handler (e.g. before printing
the error message).
> > > Or different from having no power-off handlers.
> >
> > That is actually quite different, as in that case we call machine_halt
> > instead (via kernel_halt).
>
> Today, ARM does exactly what x86 does. If there's no power off handler
> registered, machine_power_off() shuts down other CPUs and returns.
No, if there are no power-off handlers registered, kernel/reboot.c will
never call machine_power_off:
/* Instead of trying to make the power_off code look like
* halt when pm_power_off is not set do it the easy way.
*/
if ((cmd == LINUX_REBOOT_CMD_POWER_OFF) && !pm_power_off)
cmd = LINUX_REBOOT_CMD_HALT;
So in that case on arm, a system-halted message is printed, and we never
return to user-space.
> > > Here's the x86 code:
> > >
> > > void machine_power_off(void)
> > > {
> > > machine_ops.power_off();
> > > }
> > >
> > > struct machine_ops machine_ops = {
> > > .power_off = native_machine_power_off,
> > > ...
> > >
> > > static void native_machine_power_off(void)
> > > {
> > > if (pm_power_off) {
> > > if (!reboot_force)
> > > machine_shutdown();
> > > pm_power_off();
> > > }
> > > /* A fallback in case there is no PM info available */
> > > tboot_shutdown(TB_SHUTDOWN_HALT);
> > > }
> > >
> > > void tboot_shutdown(u32 shutdown_type)
> > > {
> > > void (*shutdown)(void);
> > >
> > > if (!tboot_enabled())
> > > return;
> > >
> > > See - x86 can very well just fall straight back out of machine_power_off()
> > > if there's no pm_power_off() hook and tboot is not enabled.
> >
> > I never doubted that, but is the right thing to do? Not all arches do it
> > that way.
>
> Well, the biggest question there is: if the power off or restart syscall
> fails, what is the _generic_ non-architecture action which is supposed to
> happen?
>
> Whatever the answer is to that question, that action should be performed
> by the _generic_ non-architecture code, rather than having the same
> implementation spread across all 30 architectures which the kernel
> supports today.
I fully agree.
> > And what about the killing of init? Shall we simply consider that a
> > systemd bug?
> >
> > case LINUX_REBOOT_CMD_POWER_OFF:
> > kernel_power_off();
> > do_exit(0);
> > break;
> >
> > If power-off fails (for whatever reason), do_exit(0) will trigger a
> > panic when called from PID 1.
>
> Oh, systemd calls this from PID1? I guess that's another reason to hate
> systemd with vitriol. :) SysVinit and upstart implementations call it
> from the "halt" command, which is itself normally run from a script,
> which totally avoids that problem.
Yeah, that's why I never noticed the missing mdelay.
> I'm quite sure the insane systemd lobby will scream that this is a kernel
> bug and will want to change it somehow, just like they want to change the
> kernel in soo many other silly ways.
Will be interesting to follow. :)
Johan
next prev parent reply other threads:[~2014-10-29 13:22 UTC|newest]
Thread overview: 113+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-10-09 19:06 [PATCH 00/12] rtc: omap: fixes and power-off feature Johan Hovold
2014-10-09 19:06 ` [PATCH 01/12] rtc: omap: fix clock-source configuration Johan Hovold
2014-10-10 17:55 ` Felipe Balbi
2014-10-09 19:06 ` [PATCH 02/12] rtc: omap: fix missing wakealarm attribute Johan Hovold
2014-10-10 17:55 ` Felipe Balbi
2014-10-09 19:06 ` [PATCH 03/12] rtc: omap: fix class-device registration Johan Hovold
2014-10-10 17:59 ` Felipe Balbi
2014-10-11 9:59 ` Johan Hovold
2014-10-13 15:57 ` Felipe Balbi
2014-10-09 19:06 ` [PATCH 04/12] rtc: omap: remove unused register-base define Johan Hovold
2014-10-10 17:59 ` Felipe Balbi
2014-10-09 19:06 ` [PATCH 05/12] rtc: omap: remove redundant debug message Johan Hovold
2014-10-10 17:59 ` Felipe Balbi
2014-10-09 19:06 ` [PATCH 06/12] rtc: omap: use dev_info and dev_dbg Johan Hovold
2014-10-10 18:00 ` Felipe Balbi
2014-10-09 19:06 ` [PATCH 07/12] rtc: omap: silence bogus power-up reset message at probe Johan Hovold
2014-10-10 18:00 ` Felipe Balbi
2014-10-10 18:02 ` Felipe Balbi
2014-10-11 10:20 ` Johan Hovold
2014-10-12 0:50 ` Felipe Balbi
2014-10-12 18:42 ` Johan Hovold
2014-10-13 15:56 ` Felipe Balbi
2014-10-09 19:06 ` [PATCH 08/12] rtc: omap: restore irq state after reading TC registers Johan Hovold
2014-10-10 18:02 ` Felipe Balbi
2014-10-11 10:12 ` Johan Hovold
2014-10-12 0:47 ` Felipe Balbi
2014-10-22 10:50 ` Johan Hovold
2014-10-23 18:52 ` Felipe Balbi
2014-10-09 19:06 ` [PATCH 09/12] rtc: omap: add support for pmic_power_en Johan Hovold
2014-10-10 18:07 ` Felipe Balbi
2014-10-11 10:31 ` Johan Hovold
2014-10-22 10:18 ` Johan Hovold
2014-10-23 18:52 ` Felipe Balbi
2014-10-09 19:06 ` [PATCH 10/12] rtc: omap: enable wake-up from power off Johan Hovold
2014-10-10 18:08 ` Felipe Balbi
2014-10-09 19:06 ` [PATCH 11/12] ARM: dts: am33xx: update rtc node compatible property Johan Hovold
2014-10-10 18:08 ` Felipe Balbi
2014-10-09 19:06 ` [PATCH 12/12] ARM: dts: am335x-bone-common: enable power off and rtc wake up Johan Hovold
2014-10-10 18:09 ` Felipe Balbi
2014-10-11 10:34 ` Johan Hovold
2014-10-10 17:54 ` [PATCH 00/12] rtc: omap: fixes and power-off feature Felipe Balbi
2014-10-11 9:38 ` Johan Hovold
2014-10-11 19:08 ` Tony Lindgren
2014-10-22 11:07 ` Johan Hovold
2014-10-22 15:29 ` Tony Lindgren
2014-10-22 16:21 ` Johan Hovold
2014-10-22 16:43 ` Tony Lindgren
2014-10-15 16:55 ` Felipe Balbi
2014-10-15 17:06 ` Johan Hovold
2014-10-15 17:08 ` Felipe Balbi
2014-10-22 10:23 ` Johan Hovold
2014-10-23 18:55 ` Felipe Balbi
2014-10-24 7:58 ` Johan Hovold
2014-10-21 17:37 ` [PATCH v2 00/20] " Johan Hovold
[not found] ` <1413913086-12730-1-git-send-email-johan-DgEjT+Ai2ygdnm+yROfE0A@public.gmane.org>
2014-10-21 17:37 ` [PATCH v2 01/20] rtc: omap: fix clock-source configuration Johan Hovold
2014-10-21 17:37 ` [PATCH v2 02/20] rtc: omap: fix missing wakealarm attribute Johan Hovold
2014-10-21 17:37 ` [PATCH v2 03/20] rtc: omap: fix interrupt disable at probe Johan Hovold
2014-10-21 17:37 ` [PATCH v2 04/20] rtc: omap: clean up probe error handling Johan Hovold
2014-10-21 17:37 ` [PATCH v2 05/20] rtc: omap: fix class-device registration Johan Hovold
2014-10-21 17:37 ` [PATCH v2 06/20] rtc: omap: remove unused register-base define Johan Hovold
2014-10-21 17:37 ` [PATCH v2 07/20] rtc: omap: use dev_info Johan Hovold
2014-10-21 17:37 ` [PATCH v2 08/20] rtc: omap: make platform-device id table const Johan Hovold
2014-10-21 17:37 ` [PATCH v2 09/20] rtc: omap: add device abstraction Johan Hovold
2014-10-21 17:37 ` [PATCH v2 10/20] rtc: omap: remove DRIVER_NAME macro Johan Hovold
2014-10-21 17:37 ` [PATCH v2 11/20] rtc: omap: add structured device-type info Johan Hovold
2014-10-21 17:37 ` [PATCH v2 12/20] rtc: omap: silence bogus power-up reset message at probe Johan Hovold
2014-10-21 17:37 ` [PATCH v2 13/20] rtc: omap: add helper to read raw bcd time Johan Hovold
2014-10-21 17:38 ` [PATCH v2 14/20] rtc: omap: add helper to read 32-bit registers Johan Hovold
2014-10-21 17:38 ` [PATCH v2 15/20] rtc: omap: add support for pmic_power_en Johan Hovold
2014-10-21 17:38 ` [PATCH v2 16/20] rtc: omap: enable wake-up from power off Johan Hovold
2014-10-21 17:38 ` [PATCH v2 17/20] rtc: omap: fix minor coding style issues Johan Hovold
2014-10-21 17:38 ` [PATCH v2 18/20] rtc: omap: add copyright entry Johan Hovold
2014-10-21 17:38 ` [PATCH v2 19/20] ARM: dts: am33xx: update rtc-node compatible property Johan Hovold
2014-10-21 17:38 ` [PATCH v2 20/20] ARM: dts: am335x-boneblack: enable power off and rtc wake up Johan Hovold
2014-10-24 16:08 ` [PATCH v2 00/20] rtc: omap: fixes and power-off feature Felipe Balbi
2014-10-24 19:02 ` Johan Hovold
2014-10-24 19:25 ` Felipe Balbi
2014-10-24 19:29 ` Felipe Balbi
2014-10-24 19:36 ` Johan Hovold
2014-10-24 19:44 ` Felipe Balbi
2014-10-24 19:55 ` Johan Hovold
2014-10-24 20:08 ` Felipe Balbi
2014-10-27 23:22 ` Andrew Morton
2014-10-28 0:25 ` Russell King - ARM Linux
[not found] ` <20141028002552.GX12379-l+eeeJia6m9vn6HldHNs0ANdhmdF6hFW@public.gmane.org>
2014-10-28 8:16 ` Johan Hovold
2014-10-28 8:47 ` Russell King - ARM Linux
2014-10-28 13:12 ` Johan Hovold
2014-10-28 15:16 ` Russell King - ARM Linux
2014-10-29 12:34 ` Johan Hovold
2014-10-29 12:55 ` Romain Perier
[not found] ` <CABgxDo+ewxNwb3RrBVZA7kqYMvSujLb9U6A6FCvnHQH1W8V0kg-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2014-10-29 13:00 ` Johan Hovold
2014-10-29 13:11 ` Romain Perier
2014-10-29 13:44 ` Johan Hovold
2014-10-29 13:10 ` Russell King - ARM Linux
2014-10-29 13:22 ` Johan Hovold [this message]
2014-10-29 15:25 ` Guenter Roeck
2014-10-29 15:51 ` Johan Hovold
2014-10-30 10:01 ` Johan Hovold
2014-10-29 13:20 ` Guenter Roeck
2014-10-29 13:35 ` Johan Hovold
2014-10-29 15:36 ` Guenter Roeck
2014-10-29 15:54 ` Johan Hovold
2014-10-27 8:09 ` [PATCH v3] rtc: omap: add support for pmic_power_en Johan Hovold
2014-10-27 16:45 ` Felipe Balbi
2014-10-27 16:56 ` Johan Hovold
2014-10-27 17:09 ` Felipe Balbi
2014-10-27 22:40 ` Andrew Morton
[not found] ` <20141027154031.4492ea11d401045ca04a3ff8-de/tnXTf+JLsfHDXvbKv3WD2FQJk+8+b@public.gmane.org>
2014-10-28 8:36 ` Johan Hovold
2014-10-28 21:18 ` Andrew Morton
2014-10-29 12:46 ` Johan Hovold
2014-10-29 12:50 ` Johan Hovold
2014-10-29 19:14 ` Andrew Morton
2014-10-30 9:55 ` [PATCH v4] " Johan Hovold
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=20141029132244.GD2265@localhost \
--to=johan@kernel.org \
--cc=a.zummo@towertech.it \
--cc=akpm@linux-foundation.org \
--cc=balbi@ti.com \
--cc=bcousson@baylibre.com \
--cc=devicetree@vger.kernel.org \
--cc=j-keerthy@ti.com \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-omap@vger.kernel.org \
--cc=linux@arm.linux.org.uk \
--cc=linux@roeck-us.net \
--cc=lokeshvutla@ti.com \
--cc=nsekhar@ti.com \
--cc=rtc-linux@googlegroups.com \
--cc=t-kristo@ti.com \
--cc=tony@atomide.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;
as well as URLs for NNTP newsgroup(s).