Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 18 Nov 2003 16:50:01 -0500 (EST)
From:      Robert Watson <rwatson@freebsd.org>
To:        Nate Lawson <nate@root.org>
Cc:        current@freebsd.org
Subject:   Re: Updated acpi_cpu patch
Message-ID:  <Pine.NEB.3.96L.1031118163325.92350f-100000@fledge.watson.org>
In-Reply-To: <20031118132905.P64933@root.org>

next in thread | previous in thread | raw e-mail | index | archive | help

On Tue, 18 Nov 2003, Nate Lawson wrote:

> On Tue, 18 Nov 2003, Robert Watson wrote:
> > On Tue, 18 Nov 2003, Nate Lawson wrote:
> >
> > > Below you'll find the update patch for acpi_cpu.  Please test this,
> > > especially for SMP and laptops with _CST objects in their ASL.
> > ...
> > > Notes:
> > > * Add a detach method that disables entry to acpi_cpu_idle and in the SMP
> > > case, IPIs all processors to exit sleeping.  This fixes a panic on
> > > shutdown for MP boxes.
> >
> > Sigh, I appear to have been mistaken about the SMP reboot problem being
> > fixed, sorry about that.  Mark's random_harvest panic appears to have
> > caused me to miss the other failure mode in my last test.  Stack trace
> > attached, and I believe I'm running with your latest patch.
> 
> Could you add a printf to the start of acpi_cpu_detach()?  I want to see
> if we're being called before or after ACPI is stopped ("Shutting down

I modified acpi_cpu_detach:

+acpi_cpu_detach(device_t dev)
+{
+
+    printf("\nacpi_cpu_detach\n\n");
+

But sure enough:

syncing disks, buffers remaining... 
done
Uptime: 56s
Shutting down ACPI
kernel trap 12 with interrupts disabled
tanicR:e bAososteirntgi.o.n. 
 d->td_turnstile != NULL failed at ../../../kern/subr_turnstile.c:437
cpuid = 0; 
Debugger("panic")
Stopped at      Debugger+0x55:  xchgl   %ebx,in_Debugger.0
db> 

So indeed, it doesn't look like the ACPI detach call has gone out yet.

> ACPI").  Also, please do:
>    l *AcpiGetRegister+0x61
> I think it's the call to get the bus master status, which is interesting
> since this means that cpu_cx_count != 0 which means that acpi_cpu_detach
> hasn't run yet.

This is using the existing crash from the trace I sent you previously.

(kgdb) l *AcpiGetRegister+0x61
0xc047c071 is in AcpiGetRegister
(../../../contrib/dev/acpica/hwregs.c:375).
370             {
371                 return_ACPI_STATUS (Status);
372             }
373         }
374
375         Status = AcpiHwRegisterRead (ACPI_MTX_DO_NOT_LOCK,
376                         BitRegInfo->ParentRegister, &RegisterValue);
377
378         if (Flags & ACPI_MTX_LOCK)
379         {

Also potentially useful information:

(kgdb) inspect cpu_cx_count
$1 = 1

Robert N M Watson             FreeBSD Core Team, TrustedBSD Projects
robert@fledge.watson.org      Network Associates Laboratories



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?Pine.NEB.3.96L.1031118163325.92350f-100000>