Updated acpi_cpu patch
Robert Watson
rwatson at freebsd.org
Tue Nov 18 13:52:11 PST 2003
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 at fledge.watson.org Network Associates Laboratories
More information about the freebsd-current
mailing list