Date: Thu, 9 Feb 2006 11:24:02 -0500 From: John Baldwin <jhb@freebsd.org> To: Nate Lawson <nate@root.org> Cc: freebsd-acpi@freebsd.org Subject: Re: Kernel panic with ACPI enabled Message-ID: <200602091124.05153.jhb@freebsd.org> In-Reply-To: <43EA42B6.4000603@root.org> References: <43E7D1A2.1030008@o2.pl> <200602081036.34530.jhb@freebsd.org> <43EA42B6.4000603@root.org>
next in thread | previous in thread | raw e-mail | index | archive | help
On Wednesday 08 February 2006 14:12, Nate Lawson wrote: > John Baldwin wrote: > > On Wednesday 08 February 2006 02:59, Nate Lawson wrote: > >>John Baldwin wrote: > >>>On Tuesday 07 February 2006 15:13, Donald J. O'Neill wrote: > >>>>Other things can affect what he's trying to do and cause him to think > >>>> he has an ACPI problem. I had a bad USB mouse that was causing > >>>> problems on one of my computers, in fact anything USB on that computer > >>>> caused a problem with ACPI (it had to be disabled to allow the > >>>> computer to boot-up) if that mouse was plugged in, until I found the > >>>> mouse was bad and switched it with one that was ok. On another > >>>> computer, I could only boot-up if I either disabled ACPI or had the > >>>> USB mouse unplugged. After it was up, the mouse could be plugged back > >>>> in and it would work, ACPI would work, but I would be left wondering > >>>> about the situation. I finally decided to just use a PS-2 mouse and > >>>> wait a while. That works fine, although I hate ball mice. > >>> > >>>Actually, in his case I'm fairly sure MAXMEM is the problem. Several > >>>people have had problems trying to use the tunable equivalent > >>>(hw.physmem=3g and the like) because if the new maxmem value is greater > >>>than the highest memory address we found, we just extend the last > >>> segment of physical memory. However, in the case of modern machines > >>> with SMAPs, this extension can result in including memory that was > >>> specifically marked as unavailable (because it was in use by the BIOS > >>> to store the ACPI tables) suddenly being used by the kernel. As part > >>> of this process, the kernel does test writes to each page, so it would > >>> corrupt the ACPI tables and eventually lead to issues such as this. > >> > >>Can we at least put a printf() in the boot sequence that says "warning: > >>maxmem set and acpi enabled, this may cause problems"? This keeps > >>coming up. > > > > We don't know we are using ACPI when we do the maxmem and hw.physmem > > stuff. > > I was thinking this goes in the ACPI init. if (maxmem != 0) printf() Something like this: Index: dev/acpica/acpi.c =================================================================== RCS file: /usr/cvs/src/sys/dev/acpica/acpi.c,v retrieving revision 1.219 diff -u -r1.219 acpi.c --- dev/acpica/acpi.c 7 Nov 2005 21:52:06 -0000 1.219 +++ dev/acpica/acpi.c 9 Feb 2006 16:22:51 -0000 @@ -30,6 +30,9 @@ #include <sys/cdefs.h> __FBSDID("$FreeBSD: src/sys/dev/acpica/acpi.c,v 1.219 2005/11/07 21:52:06 jhb Exp $"); +#ifdef __i386__ +#include "opt_maxmem.h" +#endif #include "opt_acpi.h" #include <sys/param.h> #include <sys/kernel.h> @@ -284,6 +287,19 @@ return_VALUE (0); started = 1; +#ifdef __i386__ + /* Warn about MAXMEM or hw.physmem use. */ + do { +#ifndef MAXMEM + u_long tmp; + + if (TUNABLE_ULONG_FETCH("hw.physmem", &tmp)) +#endif + printf("WARNING: Usage of MAXMEM or hw.physmem may cause " + "ACPI to panic!\n"); + } while (0); +#endif + /* Initialise the ACPI mutex */ mtx_init(&acpi_mutex, "ACPI global lock", NULL, MTX_DEF); Index: modules/acpi/acpi/Makefile =================================================================== RCS file: /usr/cvs/src/sys/modules/acpi/acpi/Makefile,v retrieving revision 1.15 diff -u -r1.15 Makefile --- modules/acpi/acpi/Makefile 1 Nov 2005 22:44:08 -0000 1.15 +++ modules/acpi/acpi/Makefile 9 Feb 2006 16:19:25 -0000 @@ -49,7 +49,7 @@ SRCS+= OsdDebug.c SRCS+= OsdHardware.c OsdInterrupt.c OsdMemory.c OsdSchedule.c SRCS+= OsdStream.c OsdSynch.c OsdTable.c OsdEnvironment.c -SRCS+= opt_acpi.h opt_bus.h opt_ddb.h +SRCS+= opt_acpi.h opt_bus.h opt_ddb.h opt_maxmem.h SRCS+= acpi_if.h acpi_quirks.h bus_if.h cpufreq_if.h device_if.h SRCS+= isa_if.h pci_if.h pcib_if.h -- John Baldwin <jhb@FreeBSD.org> <>< http://www.FreeBSD.org/~jhb/ "Power Users Use the Power to Serve" = http://www.FreeBSD.org
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200602091124.05153.jhb>