Re: [PATCH] sparc64: shut down to OBP correctly

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 21 Dec 16 14:06, David Miller wrote:
> From: Larry Bassel <larry.bassel@xxxxxxxxxx>
> Date: Wed, 21 Dec 2016 10:51:33 -0800
> 
> > On 21 Dec 16 13:07, David Miller wrote:
> >> From: Larry Bassel <larry.bassel@xxxxxxxxxx>
> >> 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@xxxxxxxxxx>
> >> 
> >> 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).

If ldom_domaining_enabled is always set, what is the purpose of the "exit"
call in prom_halt() at all? It appears that ldc_init() is always called
upon kernel initialization (assuming CONFIG_SUN_LDOMS is set) which (barring
some error in ldc_init()) permanently sets ldom_domaining_enabled. It appears
that CONFIG_SUN_LDOMS is set by defconfig (and I would presume we would want
this set so that the same kernel could work in both an LDOM and a bare metal
environment).

Therefore, I'm looking for some way to know whether I'm really bare metal
or not besides checking ldom_domaining_enabled. Should (during kernel
initialization) ldc_init() *not* be called when we are bare metal
(assuming this can be determined)?

My apologies if I'm missing something obvious here.

Larry

> --
> To unsubscribe from this list: send the line "unsubscribe sparclinux" in
> the body of a message to majordomo@xxxxxxxxxxxxxxx
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
--
To unsubscribe from this list: send the line "unsubscribe sparclinux" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html



[Index of Archives]     [Kernel Development]     [DCCP]     [Linux ARM Development]     [Linux]     [Photo]     [Yosemite Help]     [Linux ARM Kernel]     [Linux SCSI]     [Linux x86_64]     [Linux Hams]

  Powered by Linux