From owner-freebsd-acpi@FreeBSD.ORG Thu Jan 5 22:20:16 2006 Return-Path: X-Original-To: freebsd-acpi@hub.freebsd.org Delivered-To: freebsd-acpi@hub.freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id BF12816A420 for ; Thu, 5 Jan 2006 22:20:16 +0000 (GMT) (envelope-from gnats@FreeBSD.org) Received: from freefall.freebsd.org (freefall.freebsd.org [216.136.204.21]) by mx1.FreeBSD.org (Postfix) with ESMTP id 6B15343D88 for ; Thu, 5 Jan 2006 22:20:07 +0000 (GMT) (envelope-from gnats@FreeBSD.org) Received: from freefall.freebsd.org (gnats@localhost [127.0.0.1]) by freefall.freebsd.org (8.13.4/8.13.4) with ESMTP id k05MK7n6044323 for ; Thu, 5 Jan 2006 22:20:07 GMT (envelope-from gnats@freefall.freebsd.org) Received: (from gnats@localhost) by freefall.freebsd.org (8.13.4/8.13.4/Submit) id k05MK78w044322; Thu, 5 Jan 2006 22:20:07 GMT (envelope-from gnats) Date: Thu, 5 Jan 2006 22:20:07 GMT Message-Id: <200601052220.k05MK78w044322@freefall.freebsd.org> To: freebsd-acpi@FreeBSD.org From: Anders Nordby Cc: Subject: Re: i386/89545: Compaq DL 360 ACPI boot problem X-BeenThere: freebsd-acpi@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list Reply-To: Anders Nordby List-Id: ACPI and power management development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 05 Jan 2006 22:20:17 -0000 The following reply was made to PR i386/89545; it has been noted by GNATS. From: Anders Nordby To: John Baldwin Cc: bug-followup@freebsd.org Subject: Re: i386/89545: Compaq DL 360 ACPI boot problem Date: Thu, 5 Jan 2006 23:18:56 +0100 On Wed, Jan 04, 2006 at 01:13:27PM -0500, John Baldwin wrote: >> I will check to see if I can change anything useful in the BIOS >> tomorrow, but I doubt it. :-/ > Hmm, ok. I'd really need to know what source file:line that page fault maps > to (you can use gdb to find that if you have a kernel.debug). OTOH, you can > also try this patch which just prints a warning for bogus _PRT entries when > we bump reference counts and only panics if we actually try to route an > interrupt via the busted link device. You can try this w/o the custom DSDT. > > Index: acpi_pci_link.c > =================================================================== > RCS file: /usr/cvs/src/sys/dev/acpica/acpi_pci_link.c,v > retrieving revision 1.51 > diff -u -r1.51 acpi_pci_link.c > --- acpi_pci_link.c 5 Dec 2005 19:50:00 -0000 1.51 > +++ acpi_pci_link.c 4 Jan 2006 18:07:17 -0000 > @@ -625,8 +625,11 @@ > /* Bump the reference count. */ > ACPI_SERIAL_BEGIN(pci_link); > link = acpi_pci_link_lookup(dev, index); > - if (link == NULL) > - panic("%s: apparently invalid index %d", __func__, index); > + if (link == NULL) { > + device_printf(dev, "apparently invalid index %d\n", index); > + ACPI_SERIAL_END(pci_link); > + return; > + } > link->l_references++; > if (link->l_routed) > pci_link_interrupt_weights[link->l_irq]++; > > > Fatal trap 12: page fault while in kernel mode > > cpuid = 0; apic id = 00 > > fault virtual address = 0x1c > > fault code = supervisor read, page not present > > instruction pointer = 0x20:0xc0a6d69d > > Do a 'l *0xc0a6d69d' in 'gdb kernel.debug' if you can to see what this > corresponds to. Still having http://people.freebsd.org/~anders/patches/pci_link_printf.patch-anders and http://people.freebsd.org/~anders/patches/pci_link_serial-end.patch applied, and with the custom DSDT running 6-STABLE as of december 30, I rebuilt my kernel with DDB and KDB. I get this trap: Timecounter "ACPI-safe" frequency 3579545 Hz quality 1000 acpi_timer0: <24-bit timer at 3.579545MHz> port 0x240-0x243 on acpi0 cpu0: on acpi0 pcib0: on acpi0 Fatal trap 12: page fault while in kernel mode cpuid = 0; apic id = 00 fault virtual address = 0x1c fault code = supervisor read, page not present instruction pointer = 0x20:0xc0a8073d stack pointer = 0x28:0xc0c20ba8 frame pointer = 0x28:0xc0c20bc0 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) [thread pid 0 tid 0 ] Stopped at AcpiRsGetPciRoutingTableLength+0x2d: movl 0x1c(%eax),%ecx db> panic panic: from debugger cpuid = 0 Uptime: 1s Automatic reboot in 15 seconds - press a key on the console to abort Running gdb, I get nothing I'm afraid: root@anderstest:~# gdb /usr/obj/usr/src/sys/ANDERSTEST/kernel.debug GNU gdb 6.1.1 [FreeBSD] Copyright 2004 Free Software Foundation, Inc. GDB is free software, covered by the GNU General Public License, and you are welcome to change it and/or distribute copies of it under certain conditions. Type "show copying" to see the conditions. There is absolutely no warranty for GDB. Type "show warranty" for details. This GDB was configured as "i386-marcel-freebsd"... (gdb) l *0xc0a8073d No source file for address 0xc0a8073d. Talking to you on chat, you suggested decrementing the outer package count outside of the FAKE package. Doing this, and booting with updated DSDT, the system boots, but without SMP (only one CPU detected): KDB: debugger backends: ddb KDB: current backend: ddb Copyright (c) 1992-2005 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 6.0-STABLE #0: Thu Jan 5 20:06:32 UTC 2006 root@anderstest:/usr/obj/usr/src/sys/ANDERSTEST Timecounter "i8254" frequency 1193182 Hz quality 0 CPU: Intel(R) Pentium(R) III CPU family 1133MHz (1130.46-MHz 686-class CPU) Origin = "GenuineIntel" Id = 0x6b1 Stepping = 1 Features=0x383f9ff real memory = 671072256 (639 MB) avail memory = 647356416 (617 MB) ACPI-0377: *** Info: Table [SSDT] replaced by host OS ACPI: overriding DSDT/SSDT with custom table ACPI-0377: *** Info: Table [DSDT] replaced by host OS npx0: [FAST] npx0: on motherboard npx0: INT 16 interface acpi0: on motherboard acpi0: Power Button (fixed) attach started pci_link0: calling _CRS pci_link0: _CRS returned AE_OK pci_link0: num_links = 0 attach started pci_link1: calling _CRS pci_link1: _CRS returned AE_OK pci_link1: num_links = 1 pci_link1: 1 links initialized after child links pci_link1: calling _CRS again pci_link1: _CRS returned AE_OK pci_link1: calling _PRS again pci_link1: _PRS returned AE_OK attach started pci_link2: calling _CRS pci_link2: _CRS returned AE_OK pci_link2: num_links = 1 pci_link2: 1 links initialized after child links pci_link2: calling _CRS again pci_link2: _CRS returned AE_OK pci_link2: calling _PRS again pci_link2: _PRS returned AE_OK attach started pci_link3: calling _CRS pci_link3: _CRS returned AE_OK pci_link3: num_links = 1 pci_link3: 1 links initialized after child links pci_link3: calling _CRS again pci_link3: _CRS returned AE_OK pci_link3: calling _PRS again pci_link3: _PRS returned AE_OK attach started pci_link4: calling _CRS pci_link4: _CRS returned AE_OK pci_link4: num_links = 1 pci_link4: 1 links initialized after child links pci_link4: calling _CRS again pci_link4: _CRS returned AE_OK pci_link4: calling _PRS again pci_link4: _PRS returned AE_OK attach started pci_link5: calling _CRS pci_link5: _CRS returned AE_OK pci_link5: num_links = 1 pci_link5: 1 links initialized after child links pci_link5: calling _CRS again pci_link5: _CRS returned AE_OK pci_link5: calling _PRS again pci_link5: _PRS returned AE_OK attach started pci_link6: calling _CRS pci_link6: _CRS returned AE_OK pci_link6: num_links = 1 pci_link6: 1 links initialized after child links pci_link6: calling _CRS again pci_link6: _CRS returned AE_OK pci_link6: calling _PRS again pci_link6: _PRS returned AE_OK attach started pci_link7: calling _CRS pci_link7: _CRS returned AE_OK pci_link7: num_links = 1 pci_link7: 1 links initialized after child links pci_link7: calling _CRS again pci_link7: _CRS returned AE_OK pci_link7: calling _PRS again pci_link7: _PRS returned AE_OK attach started pci_link8: calling _CRS pci_link8: _CRS returned AE_OK pci_link8: num_links = 1 pci_link8: 1 links initialized after child links pci_link8: calling _CRS again pci_link8: _CRS returned AE_OK pci_link8: calling _PRS again pci_link8: _PRS returned AE_OK attach started pci_link9: calling _CRS pci_link9: _CRS returned AE_OK pci_link9: num_links = 1 pci_link9: 1 links initialized after child links pci_link9: calling _CRS again pci_link9: _CRS returned AE_OK pci_link9: calling _PRS again pci_link9: _PRS returned AE_OK Timecounter "ACPI-safe" frequency 3579545 Hz quality 1000 acpi_timer0: <24-bit timer at 3.579545MHz> port 0x240-0x243 on acpi0 cpu0: on acpi0 pcib0: on acpi0 pci_link6: BIOS IRQ 3 for 0.1.INTA is invalid pci0: on pcib0 ida0: port 0x2000-0x20ff mem 0xc5000000-0xc5ffffff,0xc4000000-0xc4ffffff irq 10 at device 1.0 on pci0 ida0: [GIANT-LOCKED] ida0: drives=1 firm_rev=1.50 idad0: on ida0 idad0: 17359MB (35553120 sectors), blocksize=512 pci0: at device 3.0 (no driver attached) pci0: at device 4.0 (no driver attached) pcib1: at device 5.0 on pci0 pci1: on pcib1 pci1: at device 0.0 (no driver attached) pci0: at device 5.1 (no driver attached) isab0: at device 15.0 on pci0 isa0: on isab0 atapci0: port 0x1f0-0x1f7,0x3f6,0x170-0x177,0x376,0x2800-0x280f at device 15.1 on pci0 ata0: on atapci0 ata1: on atapci0 pcib2: on acpi0 pci_link7: BIOS IRQ 7 for 3.5.INTA is invalid pci3: on pcib2 fxp0: port 0x4000-0x403f mem 0xc6fff000-0xc6ffffff,0xc6e00000-0xc6efffff irq 5 at device 4.0 on pci3 miibus0: on fxp0 inphy0: on miibus0 inphy0: 10baseT, 10baseT-FDX, 100baseTX, 100baseTX-FDX, auto fxp0: Ethernet address: 00:02:a5:e8:41:4d fxp1: port 0x4040-0x407f mem 0xc6dff000-0xc6dfffff,0xc6c00000-0xc6cfffff irq 9 at device 5.0 on pci3 miibus1: on fxp1 inphy1: on miibus1 inphy1: 10baseT, 10baseT-FDX, 100baseTX, 100baseTX-FDX, auto fxp1: Ethernet address: 00:02:a5:e8:41:ca acpi_tz0: on acpi0 atkbdc0: port 0x60,0x64 irq 1 on acpi0 atkbd0: irq 1 on atkbdc0 kbd0 at atkbd0 atkbd0: [GIANT-LOCKED] psm0: irq 12 on atkbdc0 psm0: [GIANT-LOCKED] psm0: model IntelliMouse, device ID 3 fdc0: port 0x3f2-0x3f5 irq 6 drq 2 on acpi0 fdc0: [FAST] fd0: <1440-KB 3.5" drive> on fdc0 drive 0 sio0: port 0x3f8-0x3ff irq 4 flags 0x10 on acpi0 sio0: type 16550A, console pmtimer0 on isa0 orm0: at iomem 0xc0000-0xc7fff,0xc8000-0xcbfff,0xe8000-0xedfff,0xee000-0xeffff on isa0 ppc0: parallel port not found. sc0: at flags 0x100 on isa0 sc0: VGA <16 virtual consoles, flags=0x100> sio1: configured irq 3 not in bitmap of probed irqs 0 sio1: port may not be enabled vga0: at port 0x3c0-0x3df iomem 0xa0000-0xbffff on isa0 Timestray irq7 counter "TSC" frequency 1130457848 Hz quality 800 Timecounters tick every 1.000 msec acd0: CDROM at ata1-master PIO4 Trying to mount root from ufs:/dev/idad0s1a Loading configuration files. kernel dumps on /dev/idad0s1b Entropy harvesting: interrupts ethernet point_to_point kickstart. swapon: adding /dev/idad0s1b as swap device Starting file system checks: /dev/idad0s1a: FILE SYSTEM CLEAN; SKIPPING CHECKS /dev/idad0s1a: clean, 6576911 free (12431 frags, 820560 blocks, 0.2% fragmentation) Setting hostname: anderstest. fxp0: link state changed to UP lo0: flags=8049 mtu 16384 inet6 ::1 prefixlen 128 inet6 fe80::1%lo0 prefixlen 64 scopeid 0x3 inet 127.0.0.1 netmask 0xff000000 fxp0: flags=8843 mtu x1500 options=8p ine1t6 fe80::202:a5f:f:fee8:414d%fxp0 prefixlen 64 telntative scopeid i0x1 inet 192.n168.120.37 netmaksk 0xffffff00 br oadcast 192.168.s120.255 ether t00:02:a5:e8:41:4ad media: Ethertnet 100baseTX st atus: active cadd net default:h gateway 192.168a.120.1 Additionnal routing optiogns:. Starting deevd. d to DOWN hw.acpi.cpu.cx_lowest: C1 -> C1 Mounting NFS file systems:. Creating and/or trimming log files:. Starting syslogd. Checking for core dump on /dev/idad0s1b... savecore: no dumps found ELF ldconfig path: /lib /usr/lib /usr/lib/compat /usr/local/lib a.out ldconfig path: /usr/lib/aout /usr/lib/compat/aout Starting local daemons:. Updating motd. Configuring syscons: blanktime. Starting sshd. Initial i386 initialization:. Additional ABI support:. Starting cron. Local package initialization:. Additional TCP options:. Starting background file system checks in 60 seconds. Thu Jan 5 23:12:07 UTC 2006 FreeBSD/i386 (anderstest) (ttyd0) login: Trying your latest patch to acpi_pci_link (http://people.freebsd.org/~anders/patches/pci_link_no-panic-print-bogus-prt-entries.patch), and disabling the custom DSDT, the system boots. But again without SMP (only one CPU launched): KDB: debugger backends: ddb KDB: current backend: ddb Copyright (c) 1992-2005 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 6.0-STABLE #0: Thu Jan 5 20:06:32 UTC 2006 root@anderstest:/usr/obj/usr/src/sys/ANDERSTEST Timecounter "i8254" frequency 1193182 Hz quality 0 CPU: Intel(R) Pentium(R) III CPU family 1133MHz (1130.46-MHz 686-class CPU) Origin = "GenuineIntel" Id = 0x6b1 Stepping = 1 Features=0x383f9ff real memory = 671072256 (639 MB) avail memory = 647356416 (617 MB) npx0: [FAST] npx0: on motherboard npx0: INT 16 interface acpi0: on motherboard acpi0: Power Button (fixed) attach started pci_link0: calling _CRS pci_link0: _CRS returned AE_OK pci_link0: num_links = 0 attach started pci_link1: calling _CRS pci_link1: _CRS returned AE_OK pci_link1: num_links = 1 pci_link1: 1 links initialized after child links pci_link1: calling _CRS again pci_link1: _CRS returned AE_OK pci_link1: calling _PRS again pci_link1: _PRS returned AE_OK attach started pci_link2: calling _CRS pci_link2: _CRS returned AE_OK pci_link2: num_links = 1 pci_link2: 1 links initialized after child links pci_link2: calling _CRS again pci_link2: _CRS returned AE_OK pci_link2: calling _PRS again pci_link2: _PRS returned AE_OK attach started pci_link3: calling _CRS pci_link3: _CRS returned AE_OK pci_link3: num_links = 1 pci_link3: 1 links initialized after child links pci_link3: calling _CRS again pci_link3: _CRS returned AE_OK pci_link3: calling _PRS again pci_link3: _PRS returned AE_OK attach started pci_link4: calling _CRS pci_link4: _CRS returned AE_OK pci_link4: num_links = 1 pci_link4: 1 links initialized after child links pci_link4: calling _CRS again pci_link4: _CRS returned AE_OK pci_link4: calling _PRS again pci_link4: _PRS returned AE_OK attach started pci_link5: calling _CRS pci_link5: _CRS returned AE_OK pci_link5: num_links = 1 pci_link5: 1 links initialized after child links pci_link5: calling _CRS again pci_link5: _CRS returned AE_OK pci_link5: calling _PRS again pci_link5: _PRS returned AE_OK attach started pci_link6: calling _CRS pci_link6: _CRS returned AE_OK pci_link6: num_links = 1 pci_link6: 1 links initialized after child links pci_link6: calling _CRS again pci_link6: _CRS returned AE_OK pci_link6: calling _PRS again pci_link6: _PRS returned AE_OK attach started pci_link7: calling _CRS pci_link7: _CRS returned AE_OK pci_link7: num_links = 1 pci_link7: 1 links initialized after child links pci_link7: calling _CRS again pci_link7: _CRS returned AE_OK pci_link7: calling _PRS again pci_link7: _PRS returned AE_OK attach started pci_link8: calling _CRS pci_link8: _CRS returned AE_OK pci_link8: num_links = 1 pci_link8: 1 links initialized after child links pci_link8: calling _CRS again pci_link8: _CRS returned AE_OK pci_link8: calling _PRS again pci_link8: _PRS returned AE_OK attach started pci_link9: calling _CRS pci_link9: _CRS returned AE_OK pci_link9: num_links = 1 pci_link9: 1 links initialized after child links pci_link9: calling _CRS again pci_link9: _CRS returned AE_OK pci_link9: calling _PRS again pci_link9: _PRS returned AE_OK Timecounter "ACPI-safe" frequency 3579545 Hz quality 1000 acpi_timer0: <24-bit timer at 3.579545MHz> port 0x240-0x243 on acpi0 cpu0: on acpi0 pcib0: on acpi0 pci_link6: BIOS IRQ 3 for 0.1.INTA is invalid pci_link0: apparently invalid index 0 pci0: on pcib0 ida0: port 0x2000-0x20ff mem 0xc5000000-0xc5ffffff,0xc4000000-0xc4ffffff irq 10 at device 1.0 on pci0 ida0: [GIANT-LOCKED] ida0: drives=1 firm_rev=1.50 idad0: on ida0 idad0: 17359MB (35553120 sectors), blocksize=512 pci0: at device 3.0 (no driver attached) pci0: at device 4.0 (no driver attached) pcib1: at device 5.0 on pci0 pci1: on pcib1 pci1: at device 0.0 (no driver attached) pci0: at device 5.1 (no driver attached) isab0: at device 15.0 on pci0 isa0: on isab0 atapci0: port 0x1f0-0x1f7,0x3f6,0x170-0x177,0x376,0x2800-0x280f at device 15.1 on pci0 ata0: on atapci0 ata1: on atapci0 pcib2: on acpi0 pci_link7: BIOS IRQ 7 for 3.5.INTA is invalid pci3: on pcib2 fxp0: port 0x4000-0x403f mem 0xc6fff000-0xc6ffffff,0xc6e00000-0xc6efffff irq 5 at device 4.0 on pci3 miibus0: on fxp0 inphy0: on miibus0 inphy0: 10baseT, 10baseT-FDX, 100baseTX, 100baseTX-FDX, auto fxp0: Ethernet address: 00:02:a5:e8:41:4d fxp1: port 0x4040-0x407f mem 0xc6dff000-0xc6dfffff,0xc6c00000-0xc6cfffff irq 9 at device 5.0 on pci3 miibus1: on fxp1 inphy1: on miibus1 inphy1: 10baseT, 10baseT-FDX, 100baseTX, 100baseTX-FDX, auto fxp1: Ethernet address: 00:02:a5:e8:41:ca acpi_tz0: on acpi0 atkbdc0: port 0x60,0x64 irq 1 on acpi0 atkbd0: irq 1 on atkbdc0 kbd0 at atkbd0 atkbd0: [GIANT-LOCKED] psm0: irq 12 on atkbdc0 psm0: [GIANT-LOCKED] psm0: model IntelliMouse, device ID 3 fdc0: port 0x3f2-0x3f5 irq 6 drq 2 on acpi0 fdc0: [FAST] fd0: <1440-KB 3.5" drive> on fdc0 drive 0 sio0: port 0x3f8-0x3ff irq 4 flags 0x10 on acpi0 sio0: type 16550A, console pmtimer0 on isa0 orm0: at iomem 0xc0000-0xc7fff,0xc8000-0xcbfff,0xe8000-0xedfff,0xee000-0xeffff on isa0 ppc0: parallel port not found. sc0: at flags 0x100 on isa0 sc0: VGA <16 virtual consoles, flags=0x100> sio1: configured irq 3 not in bitmap of probed irqs 0 sio1: port may not be enabled vga0: at port 0x3c0-0x3df iomem 0xa0000-0xbffff on isa0 Timecounter "TSC" frequency 1130457669 Hz quality 800 Timecoustray irq7 nters tick every 1.000 msec acd0: CDROM at ata1-master PIO4 [-- itannord@localhost attached -- Thu Jan 5 22:55:37 2006] [-- itannord@localhost detached -- Thu Jan 5 22:55:46 2006] Trying to mount root from ufs:/dev/idad0s1a Loading configuration files. kernel dumps on /dev/idad0s1b Entropy harvesting: interrupts ethernet point_to_point kickstart. swapon: adding /dev/idad0s1b as swap device Starting file system checks: /dev/idad0s1a: FILE SYSTEM CLEAN; SKIPPING CHECKS /dev/idad0s1a: clean, 6576928 free (12408 frags, 820565 blocks, 0.2% fragmentation) Setting hostname: anderstest. fxp0: link state changed to UP lo0: flags=8049 mtu 16384 inet6 ::1 prefixlen 128 inet6 fe80::1%lo0 prefixlen 64 scopeid 0x3 inet 127.0.0.1 netmask 0xff000000 fxp0: flags=8843 mtu p1500 options=81 ine:t6 fe80::202:a5f f:fee8:414d%fxp0l prefixlen 64 teintative scopeid n0x1 inet 192.k168.120.37 netma sk 0xffffff00 brsoadcast 192.168.t120.255 ether a00:02:a5:e8:41:4td media: Etherenet 100baseTX stcatus: active hadd net default:a gateway 192.168n.120.1 Additiongal routing optioens:. Starting ddevd. to DOWN hw.acpi.cpu.cx_lowest: C1 -> C1 Mounting NFS file systems:. Creating and/or trimming log files:. Starting syslogd. Checking for core dump on /dev/idad0s1b... savecore: no dumps found ELF ldconfig path: /lib /usr/lib /usr/lib/compat /usr/local/lib a.out ldconfig path: /usr/lib/aout /usr/lib/compat/aout Starting local daemons:. Updating motd. Configuring syscons: blanktime. Starting sshd. Initial i386 initialization:. Additional ABI support:. Starting cron. Local package initialization:. Additional TCP options:. Starting background file system checks in 60 seconds. Thu Jan 5 22:55:59 UTC 2006 FreeBSD/i386 (anderstest) (ttyd0) login: How can I get SMP running? This worked in 5.x and 4.x, I believe. Regards, -- Anders.