kern/94939: [acpi] [patch] reboot(8) fails on IBM / Intel blades
John Baldwin
jhb at freebsd.org
Thu Mar 30 13:10:14 UTC 2006
The following reply was made to PR kern/94939; it has been noted by GNATS.
From: John Baldwin <jhb at freebsd.org>
To: "Devon H. O'Dell" <dodell at ixsystems.com>
Cc: Nate Lawson <nate at root.org>, bug-followup at freebsd.org
Subject: Re: kern/94939: [acpi] [patch] reboot(8) fails on IBM / Intel blades
Date: Thu, 30 Mar 2006 08:03:23 -0500
On Tuesday 28 March 2006 02:22 pm, Devon H. O'Dell wrote:
> On Tue, Mar 28, 2006 at 11:08:02AM -0800, Nate Lawson wrote:
> > John Baldwin wrote:
> > > Nate,
> > >
> > > I'm curious where you think this code should go if not here? I'd
> > > imagine we don't want to do this after AcpiTerminate() since perhaps
> > > the specified register may no longer be available (I might be wrong
> > > though, I haven't checked the spec).
> >
> > I don't have a specific idea since I didn't look at it closely. I think
> > there might be some requirements of writes to the reset register
> > (delays, expectation of chipset configuration, order with other shutdown
> > tasks). Here are the requirements from the spec:
> >
> >
> > 4.7.3.6 Reset Register
> > The optional ACPI reset mechanism specifies a standard mechanism that
> > provides a complete system reset. When implemented, this mechanism must
> > reset the entire system. This includes processors, core logic, all
> > buses, and all peripherals. From an OSPM perspective, asserting the
> > reset mechanism is the logical equivalent to power cycling the machine.
> > Upon gaining control after a reset, OSPM will perform actions in
> > like manner to a cold boot.
> > ...
> > The system must reset immediately following the write to this register.
> > OSPM assumes that the processor will not execute beyond the write
> > instruction. OSPM should execute spin loops on the CPUs in the system
> > following a write to this register.
>
> My interpretation of this is ``don't do anything else after
> the write to the register, because you can't expect to do
> it.'' Since they say that the system ``must reset immediately
> following the write'', it seems that this is implemented in
> hardware, and we can't assume that we will be able to do
> anything afterwards, anyway.
>
> > So I'm ok with the patch being committed if no other tasks need to
> > happen after this shutdown handler is called. Also, all APs should be
> > stopped before this happens and it should only occur once on the BSP.
>
> I was curious if anything happens after this handler is
> called -- if there is, we definitely need to move it back
> to later in the process. Again, I put the code here because it
> looked to me like the procedure already assumed nothing else
> is happening, but it sounds like there are other procedures
> that are in the call queue after this one.
It really should be much later I think: in cpu_reset_real() as that
is the only place that you know that the APs are stopped.
=2D-=20
John Baldwin <jhb at FreeBSD.org> =A0<>< =A0http://www.FreeBSD.org/~jhb/
"Power Users Use the Power to Serve" =A0=3D =A0http://www.FreeBSD.org
More information about the freebsd-bugs
mailing list