[issue557] 1.9.0-DEVELOPMENT hangs with ACPI enabled
YONETANI Tomokazu
qhwt+dfly at les.ath.cx
Wed Feb 21 22:55:18 PST 2007
On Wed, Feb 21, 2007 at 09:51:34AM -0300, Mariano Aliaga wrote:
> > HERE: acpi_cpu_attach:206
> >In this case, it means that the driver locked up following the line 206 of
> >acpi_cpu.c(the name before the number is the function name, and it resides
> >in acpi_cpu.c).
> >
>
> OK, the last line was 219.
Really? The lines after 219 until the next kprintf inserted look
like this, right?
219 kprintf("HERE: %s:%d\n", __func__, __LINE__);
220
221 /*
222 * Find the processor associated with our unit. We could use the
223 * ProcId as a key, however, some boxes do not have the same values
224 * in their Processor object as the ProcId values in the MADT.
225 */
226 acpi_id = obj->Processor.ProcId;
227 AcpiOsFree(obj);
228 if (acpi_pcpu_get_id(device_get_unit(dev), &acpi_id, &cpu_id) != 0)
229 return (ENXIO);
230
231 kprintf("HERE: %s:%d\n", __func__, __LINE__);
Hmm.. what happens if you undo the patch, and change above code to:
%%%%
acpi_id = obj->Processor.ProcId;
kprintf("Before calling AcpiOsFree()\n");
AcpiOsFree(obj);
kprintf("After calling AcpiOsFree()\n");
if (acpi_pcpu_get_id(device_get_unit(dev), &acpi_id, &cpu_id) != 0) {
kprintf("acpi_pcpu_get_id() failed\n");
return (ENXIO);
}
kprintf("acpi_id: %d, cpu_id: %d\n", acpi_id, cpu_id);
%%%%
without debug.acpi.layer or debug.acpi.level in /boot/loader.conf.
> >And the next thing I'm going to tell you is to add two lines in the
> >acpi_cpu.c like this:
> >
> > kprintf("HERE: %s:%d\n", __func__, __LINE__); /* <== line 206 */
> > AcpiDbgLayer = ACPI_ALL_COMPONENTS;
> > AcpiDbgLevel = ACPI_LV_ALL;
> > status = AcpiEvaluateObject(handle, NULL, NULL, &buf); /* <==
> > possibly offending statement */
> > if (ACPI_FAILURE(status)) {
> >
>
> I added those two lines below 219, but after that the screen was
> flooded with messages for more than 10 minutes, and I can't see/take a
> picture of the last lines. So I tried with AcpiDbgLayer =
> ACPI_PROCESSOR, and took a picture of the last messages of acpi driver
> before . You can find it here
> http://www.e-nix.com.ar/~maliaga/ACPI_PROCESSOR.jpg
> I also tried with AcpiDbgLayer = ACPI_NAMESPACE, but the screen was
> flooded again.
BTW, to specify "all ACPI-CA components except for namespace and processor",
you can change it to:
AcpiDbgLayer = ACPI_ALL_COMPONENTS & ~(ACPI_NAMESPACE | ACPI_PROCESSOR);
But I wrote that part in the previous message in an assumption that the
lock-up was during one of the calls to AcpiEvaluateObject().
Cheers.
More information about the Bugs
mailing list