From: Larry Bassel <larry.bassel@oracle.com>
To: sparclinux@vger.kernel.org
Subject: Re: [PATCH] sparc64: shut down to OBP correctly
Date: Thu, 22 Dec 2016 17:29:35 +0000 [thread overview]
Message-ID: <20161222172934.GI28792@ubuette> (raw)
In-Reply-To: <1482340333-65764-1-git-send-email-larry.bassel@oracle.com>
On 22 Dec 16 09:26, Alexandre Chartre wrote:
>
> On 12/21/2016 09:15 PM, David Miller wrote:
> >From: Larry Bassel <larry.bassel@oracle.com>
> >Date: Wed, 21 Dec 2016 11:44:07 -0800
> >
> >>On 21 Dec 16 14:06, David Miller wrote:
> >>>From: Larry Bassel <larry.bassel@oracle.com>
> >>>Date: Wed, 21 Dec 2016 10:51:33 -0800
> >>>
> >>>>On 21 Dec 16 13:07, David Miller wrote:
> >>>>>From: Larry Bassel <larry.bassel@oracle.com>
> >>>>>Date: Wed, 21 Dec 2016 09:12:13 -0800
> >>>>>
> >>>>>>Orabug: 24789774
> >>>>>>
> >>>>>>The command "shutdown -h -H now" should shut down the system to
> >>>>>>OBP, however the machine was incorrectly being powered off instead
> >>>>>>(on both LDOM and bare metal).
> >>>>>>
> >>>>>>The "exit" command to the OBP must be run and then a hard
> >>>>>>loop to prevent return to the kernel.
> >>>>>>
> >>>>>>Signed-off-by: Larry Bassel <larry.bassel@oracle.com>
> >>>>>
> >>>>>On LDOM, once you boot past the early stages of the kernel, OBP is
> >>>>>considered volatile and thus unusable.
> >>>>
> >>>>My code does work on an 4.9.0 LDOM (we get to the ok prompt). So you're saying
> >>>>this was a "lucky accident" and there is no "clean" way of getting back to
> >>>>the OBP when we are in a LDOM (i.e. all we can do is power off which is
> >>>>what the current code does)?
> >>>
> >>>Yes, for a very long time the firmware/hypervisor engineers told me
> >>>exactly this.
> >>>
> >>>>Unfortunately, the variable "ldom_domaining_enabled" is 1 even when
> >>>>we are not in an LDOM (I just double checked this by printing
> >>>>the value out as we shut down) and so the current code will power off in
> >>>>the bare metal case as well. Is there is a good way of determining that
> >>>>we are running on bare metal?
> >>>
> >>>Even for bare metal the condition holds. As long as we use the interfaces
> >>>guarded by ldom_domaining_enabled, the OBP is not reliably available after
> >>>early boot.
> >>
> >>I'm not sure I understand this comment -- are you saying that if we are
> >>bare metal (and somehow can know this), one still cannot call into the OBP?
> >>There are other calls to the OBP (p1275_cmd_direct) in prom/misc_64.c, some
> >>of which are not conditional on ldom_domaining_enabled (which means they
> >>would be called even in the LDOM case).
> >
> >We have to unconditionally allow p1275_cmd_direct() for certain earlier
> >boot calls.
> >
> >The problem, I was told, is that when you boot cpus into the machine using
> >the LDOM cpu start hypercall, you can't use OBP.
> >
> >This is why we pull the entire device tree from OBP into the kernel on
> >the boot processer very early in the boot. That way we don't need to
> >make OBP calls once we start booting up the non-boot cpus.
>
>
> That's correct. The problem is that the OBP won't be aware of any configuration
> change in the domain (like adding/removing cpu, memory or devices) and the OBP
> won't update its device tree. So if you return to the OBP, the behavior is
> unpredictable because the OBP might have outdated information.
>
> For example, on Solaris, a shutdown/halt command won't directly return to the
> OBP. Instead, it will reset the domain and stop at the OBP ok prompt after the
> domain has been reset. This is done by setting the OBP reboot-command to "noop"
> (to prevent an auto-boot after the reset) and then resetting the domain with
> HV_MACH_SIR.
Thanks for mentioning this. I'm aware of what Solaris does and even have an
earlier (on top of 4.6) version of this patch (which I never sent upstream)
which did exactly that (and it worked).
Is there a consensus that this approach is acceptable? If so, I'll clean up
the earlier version, re-test it and then submit that as v3.
>
>
> alex.
Larry
prev parent reply other threads:[~2016-12-22 17:29 UTC|newest]
Thread overview: 9+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-12-21 17:12 [PATCH] sparc64: shut down to OBP correctly Larry Bassel
2016-12-21 17:16 ` Larry Bassel
2016-12-21 18:07 ` David Miller
2016-12-21 18:51 ` Larry Bassel
2016-12-21 19:06 ` David Miller
2016-12-21 19:44 ` Larry Bassel
2016-12-21 20:15 ` David Miller
2016-12-22 8:26 ` Alexandre Chartre
2016-12-22 17:29 ` Larry Bassel [this message]
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=20161222172934.GI28792@ubuette \
--to=larry.bassel@oracle.com \
--cc=sparclinux@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 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.