Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 01 Sep 2001 23:25:04 +0900
From:      Mitsuru IWASAKI <iwasaki@jp.FreeBSD.org>
To:        acpi-jp@jp.freebsd.org
Cc:        current@freebsd.org
Subject:   panic on current ACPI
Message-ID:  <20010901232504F.iwasaki@jp.FreeBSD.org>

next in thread | raw e-mail | index | archive | help
Hi,  I've noticed that the recent CURRENT got panic on some machines
if we have `device acpica' in kernel config.

----
ACPI debug layer 0x0  debug level 0x0
Copyright (c) 1992-2001 The FreeBSD Project.
Copyright (c) 1979, 1980, 1983, 1986, 1988, 1989, 1991, 1992, 1993, 1994
	The Regents of the University of California. All rights reserved.
FreeBSD 5.0-CURRENT #8: Sat Sep  1 20:02:07 JST 2001
    root@tp1620:/usr/obj/usr/CURRENT/src/sys/TP1620
Timecounter "i8254"  frequency 1193182 Hz
Timecounter "TSC"  frequency 597407237 Hz
CPU: Pentium III/Pentium III Xeon/Celeron (597.41-MHz 686-class CPU)
  Origin = "GenuineIntel"  Id = 0x686  Stepping = 6
  Features=0x383f9ff<FPU,VME,DE,PSE,TSC,MSR,PAE,MCE,CX8,SEP,MTRR,PGE,MCA,CMOV,PAT,PSE36,MMX,FXSR,SSE>
real memory  = 402587648 (393152K bytes)
avail memory = 385839104 (376796K bytes)
Preloaded elf kernel "kernel" at 0xc05a5000.
Preloaded userconfig_script "/boot/kernel.conf" at 0xc05a509c.
Preloaded elf module "acpi.ko" at 0xc05a50ec.
can't re-use a leaf (acpi_debug_layer)!
can't re-use a leaf (acpi_debug_level)!
can't re-use a leaf (acpi_timecounter)!
can't re-use a leaf (acpi_timer_freq)!
can't re-use a leaf (acpi_wakeup)!
Warning: module nexus/acpi already exists
Warning: module acpi/acpi_acad already exists
Warning: module acpi/acpi_button already exists
Warning: module acpi/acpi_cmbat already exists
Warning: module acpi/acpi_cpu already exists
Warning: module acpi/acpi_ec already exists
Warning: module acpi/acpi_lid already exists
Warning: module acpi/acpi_pcib already exists
Warning: module acpi/acpi_sysresource already exists
Warning: module acpi/acpi_tz already exists
Warning: module acpi/acpi_timer already exists
Warning: module pci/acpi_timer_pci already exists
Pentium Pro MTRR support enabled
WARNING: Driver mistake: destroy_dev on 154/0
Using $PIR table, 11 entries at 0xc00fdee0
acpi0: <PTLTD    RSDT  > on motherboard
acpi0: power button is handled as a fixed feature programming model.
Timecounter "ACPI"  frequency 3579545 Hz
acpi_timer1: couldn't allocate I/O resource (port 0x1008)
acpi_timer1 port 0x1008-0x100b on acpi0
acpi_cpu0: <CPU> on acpi0
acpi_tz0: <thermal zone> on acpi0
acpi_lid0: <Control Method Lid Switch> on acpi0
acpi_button0: <Sleep Button> on acpi0
acpi_pcib0: <Host-PCI bridge> port 0xcf8-0xcff on acpi0
pci0: <PCI bus> on acpi_pcib0
pcib1: <PCI-PCI bridge> at device 1.0 on pci0
pci1: <PCI bus> on pcib1
pci1: <display, VGA> at 0.0 (no driver attached)
isab0: <PCI-ISA bridge> at device 7.0 on pci0
isa0: <ISA bus> on isab0
atapci0: <Intel PIIX4 ATA33 controller> port 0x1800-0x180f at device 7.1 on pci0
ata0: at 0x1f0 irq 14 on atapci0


Fatal trap 12: page fault while in kernel mode
fault virtual address	= 0x28
fault code		= supervisor read, page not present
instruction pointer	= 0x8:0xc058ed3c
stack pointer	        = 0x10:0xc05c6be0
frame pointer	        = 0x10:0xc05c6be0
code segment		= base 0x0, limit 0xfffff, type 0x1b
			= DPL 0, pres 1, def32 1, gran 1
processor eflags	= interrupt enabled, resume, IOPL = 0
current process		= 0 (swapper)
kernel: type 12 trap, code=0
Stopped at	acpi_timer_get_timecount+0x08:	movl	0x28(%eax),%edx
----

I think that this is because acpi_timer device is identified twice,
so I've just made a quick fix for this so that acpi_timer_identify()
is called only once.

I hope more proper fixes would be made...

Thanks

Index: acpi_timer.c
===================================================================
RCS file: /home/ncvs/src/sys/dev/acpica/acpi_timer.c,v
retrieving revision 1.10
diff -u -r1.10 acpi_timer.c
--- acpi_timer.c	5 Aug 2001 23:20:32 -0000	1.10
+++ acpi_timer.c	1 Sep 2001 12:04:14 -0000
@@ -55,7 +55,7 @@
 #define _COMPONENT	ACPI_SYSTEM
 MODULE_NAME("TIMER")
 
-static device_t	acpi_timer_dev;
+static device_t	acpi_timer_dev = NULL;
 struct resource	*acpi_timer_reg;
 #define TIMER_READ	bus_space_read_4(rman_get_bustag(acpi_timer_reg),	\
 					 rman_get_bushandle(acpi_timer_reg),	\
@@ -122,6 +122,9 @@
 	return_VOID;
 
     if (AcpiGbl_FADT == NULL)
+	return_VOID;
+
+    if (acpi_timer_dev != NULL)
 	return_VOID;
     
     if ((dev = BUS_ADD_CHILD(parent, 0, "acpi_timer", 0)) == NULL) {


To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-current" in the body of the message




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20010901232504F.iwasaki>