DragonFly bugs List (threaded) for 2007-02
DragonFly BSD
DragonFly bugs List (threaded) for 2007-02
[Date Prev][Date Next]  [Thread Prev][Thread Next]  [Date Index][Thread Index]

Re: [issue557] 1.9.0-DEVELOPMENT hangs with ACPI enabled


From: YONETANI Tomokazu <qhwt+dfly@xxxxxxxxxx>
Date: Thu, 22 Feb 2007 15:52:42 +0900

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.



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