cvs commit: src/sys/boot/pc32/libi386 biosacpi.c src/sys/conf acpi.mk files src/sys/dev/acpica5 Makefile Makefile.inc acdragonfly.h acpi.c acpi_acad.c acpi_button.c acpi_cmbat.c acpi_cpu.c acpi_ec.c acpi_lid.c acpi_resource.c acpi_thermal.c ...
YONETANI Tomokazu
qhwt+dfly at les.ath.cx
Thu Jan 18 09:01:22 PST 2007
On Thu, Jan 18, 2007 at 02:56:36PM +0000, Johannes Hofmann wrote:
> YONETANI Tomokazu <qhwt+dfly at les.ath.cx> wrote:
> > On Thu, Jan 18, 2007 at 06:40:05AM +0000, Johannes Hofmann wrote:
> >> YONETANI Tomokazu <qhwt+dfly at les.ath.cx> wrote:
> >> > On Wed, Jan 17, 2007 at 11:18:06PM +0100, Michal Belczyk wrote:
> >> >> On Wed, Jan 17, 2007 at 08:42:49PM +0000, Johannes Hofmann wrote:
> >> >> > Sorry for not testing earlier, but with this commit my thinkpad T42p
> >> >> > no longer boots with acpi enabled. It spits out some warnings and then
> >> >> > hangs (see http://www.ecademix.com/JohannesHofmann/tmp/acpi.jpg for
> >> >> > a screenshot).
> >> >
> >> > What was the next few lines after "acpi0: <IBM TP-1R> on ..." before?
> >> > No ctrl+alt+esc?
> >> >
> >> >> Same here on T60.
> >> >
> >> > Please let me know the result of either or both of the following
> >> > intructions:
> > [snip]
> >> > it should print the function names on the screen, I'd like to know
> >> > the last few ones.
> >>
> >> http://www.ecademix.com/JohannesHofmann/tmp/acpi2.jpg
> >
> > That's somewhere around here in acpi_attach; AcpiInitializeSubsystem()
> > has ACPI_FUNCTION_TRACE but it's not shown in acpi2.jpg, so it's stuck
> > after entering acpi_attach() but before calling AcpiInitializeSubsystem().
> > Can you insert a few kprintf()'s in the section below to see where it's
> > actually stuck?
> >
> > Cheers.
> >
> >
> > [acpi_attach:acpi.c]
> >
> > ACPI_FUNCTION_TRACE((char *)(uintptr_t)__func__);
> > #if __FreeBSD_version >= 500000
> > /* Initialise the ACPI mutex */
> > mtx_init(&acpi_mutex, "ACPI global lock", NULL, MTX_DEF);
> > #endif
> > <<<<<< FROM HERE >>>>>>
> > ACPI_LOCK;
> > sc = device_get_softc(dev);
> > bzero(sc, sizeof(*sc));
> > sc->acpi_dev = dev;
> > callout_init(&sc->acpi_sleep_timer);
> >
> > /*
> > * Set the globals from our tunables. This is needed because ACPI-CA
> > * uses UINT8 for some values and we have no tunable_byte.
> > */
> > AcpiGbl_AllMethodsSerialized = (UINT8)acpi_serialize_methods;
> > AcpiGbl_EnableInterpreterSlack = TRUE;
> >
> > error = ENXIO;
> > #ifdef ACPI_DEBUGGER
> > debugpoint = kgetenv("debug.acpi.debugger");
> > if (debugpoint) {
> > if (!strcmp(debugpoint, "tables"))
> > acpi_EnterDebugger();
> > freeenv(debugpoint);
> > }
> > #endif
> > <<<<<< UNTIL HERE >>>>>>
> > if (ACPI_FAILURE(status = AcpiInitializeSubsystem())) {
> > kprintf("ACPI: initialisation failed: %s\n",
> > AcpiFormatException(status));
> > goto out;
> > }
> >
>
>
> By adding kprintfs() I traced it down to hang somewhere in
> nsload.c:AcpiNsLoadTable.
> But I think there should have been some trace lines if it comes that far.
Hmm, db_print_backtrace() should print the backtrace, but it may not be
very useful if you can't use the keyboard and the trace is too deep.
> So I suspect that there is something wrong with the debugging code.
> Does function tracing work for you?
Yes, with or without ACPI_DEBUG_{LOCKS,MEMMAP}
(but the message buffer is too short to hold the whole trace).
http://les.ath.cx/DragonFly/dmesg.boot
Cheers.
More information about the Commits
mailing list