NetBSD-Bugs archive

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

port-i386/40471: ACPI quirk for ASUS CUR-DLS



>Number:         40471
>Category:       port-i386
>Synopsis:       ACPI quirk for ASUS CUR-DLS
>Confidential:   no
>Severity:       serious
>Priority:       medium
>Responsible:    port-i386-maintainer
>State:          open
>Class:          sw-bug
>Submitter-Id:   net
>Arrival-Date:   Sun Jan 25 02:05:00 +0000 2009
>Originator:     Pierre Pronchery <khorben%defora.org@localhost>
>Release:        NetBSD 5.0_BETA
>Organization:
>Environment:
System: NetBSD beast.defora.lan 5.0_BETA NetBSD 5.0_BETA (GENERIC) #8: Sun Jan 
25 02:34:22 CET 2009 
khorben%beast.defora.lan@localhost:/usr/obj/sys/arch/i386/compile/GENERIC i386
Architecture: i386
Machine: i386
>Description:

As already mentioned here:
http://mail-index.netbsd.org/port-i386/2008/05/18/msg000532.html
http://mail-index.netbsd.org/port-i386/2008/02/14/msg000199.html

from 4.0 on my ASUS CUR-DLS board was not willing to boot NetBSD kernels
anymore, due to an apparently broken ACPI BIOS. This board was found in
an HP NetServer E800 box, and runs the latest BIOS update I could find.

I was still able to run this machine by manually disabling ACPI, either
in the kernel config or with "boot -c". Moreover, it would only run
reliably with only one CPU enabled back then. A better solution, solving
this regression by default, is to place an additional ACPI quirk in the
kernel. With the patch found below, the dmesg from 5.0_BETA reads:

=== BEGIN PASTE ===
Copyright (c) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005,
    2006, 2007, 2008
    The NetBSD Foundation, Inc.  All rights reserved.
Copyright (c) 1982, 1986, 1989, 1991, 1993
    The Regents of the University of California.  All rights reserved.

NetBSD 5.0_BETA (GENERIC) #8: Sun Jan 25 02:34:22 CET 2009
        
khorben%beast.defora.lan@localhost:/usr/obj/sys/arch/i386/compile/GENERIC
total memory = 2047 MB
avail memory = 2000 MB
timecounter: Timecounters tick every 10.000 msec
timecounter: Timecounter "i8254" frequency 1193182 Hz quality 100
Hewlett-Packard HP NetServer (E 800)
mainbus0 (root)
ACPI: BIOS implementation in listed as broken:
ACPI: X/RSDT: OemId <HP    ,HWPC20F ,06040012>, AslId < PTL,00000000>
ACPI: not used. set acpi_force_load to use anyway.
mainbus0: Intel MP Specification (Version 1.4) (HP       E 800       )
cpu0 at mainbus0 apid 3: Intel 686-class, 1000MHz, id 0x686
cpu1 at mainbus0 apid 0: Intel 686-class, 1000MHz, id 0x686
mpbios: bus 0 is type PCI   
mpbios: bus 1 is type PCI   
mpbios: bus 2 is type PCI   
mpbios: bus 3 is type PCI   
mpbios: bus 4 is type PCI   
mpbios: bus 5 is type PCI   
mpbios: bus 6 is type PCI   
mpbios: bus 7 is type PCI   
mpbios: bus 8 is type ISA   
ioapic0 at mainbus0 apid 1: pa 0xfec00000, version 11, 16 pins
ioapic1 at mainbus0 apid 2: pa 0xfec01000, version 11, 16 pins
mpbios: WARNING: pin 17 for apic 2 too high; assuming ACPI global int value
pci0 at mainbus0 bus 0: configuration mode 1
pci0: i/o space, memory space enabled, rd/line, rd/mult, wr/inv ok
pchb0 at pci0 dev 0 function 0
pchb0: vendor 0x1166 product 0x0009 (rev. 0x06)
pchb1 at pci0 dev 0 function 1
pchb1: vendor 0x1166 product 0x0009 (rev. 0x06)
pci1 at pchb1 bus 5
pci1: i/o space, memory space enabled, rd/line, rd/mult, wr/inv ok
esiop0 at pci1 dev 5 function 0: Symbios Logic 53c896 (ultra2-wide scsi)
esiop0: using on-board RAM
esiop0: interrupting at ioapic1 pin 8
scsibus0 at esiop0: 16 targets, 8 luns per target
esiop1 at pci1 dev 5 function 1: Symbios Logic 53c896 (ultra2-wide scsi)
esiop1: using on-board RAM
esiop1: interrupting at ioapic1 pin 9
scsibus1 at esiop1: 16 targets, 8 luns per target
fxp0 at pci0 dev 2 function 0: i82559 Ethernet, rev 8
fxp0: interrupting at ioapic1 pin 4
fxp0: May need receiver lock-up workaround
fxp0: Ethernet address 00:e0:18:1e:52:8a
inphy0 at fxp0 phy 1: i82555 10/100 media interface, rev. 4
inphy0: 10baseT, 10baseT-FDX, 100baseTX, 100baseTX-FDX, auto
sip0 at pci0 dev 4 function 0: NatSemi DP83815 10/100 Ethernet, rev 00
sip0: interrupting at ioapic1 pin 1
sip0: Ethernet address 00:40:f4:5c:54:31
nsphyter0 at sip0 phy 0: DP83815 10/100 media interface, rev. 1
nsphyter0: 10baseT, 10baseT-FDX, 100baseTX, 100baseTX-FDX, auto
vga1 at pci0 dev 7 function 0: vendor 0x1002 product 0x4752 (rev. 0x27)
wsdisplay0 at vga1 kbdmux 1: console (80x25, vt100 emulation)
wsmux1: connecting to wsdisplay0
drm at vga1 not configured
piixpm0 at pci0 dev 15 function 0
piixpm0: vendor 0x1166 product 0x0200 (rev. 0x50)
piixpm0: interrupting at SMIpiixpm0: polling
iic0 at piixpm0: I2C bus
rccide0 at pci0 dev 15 function 1
rccide0: ServerWorks OSB4 IDE Controller (rev. 0x00)
rccide0: bus-master DMA support present
rccide0: primary channel configured to compatibility mode
rccide0: primary channel interrupting at ioapic0 pin 14
atabus0 at rccide0 channel 0
rccide0: secondary channel configured to compatibility mode
rccide0: secondary channel interrupting at ioapic0 pin 15
atabus1 at rccide0 channel 1
ohci0 at pci0 dev 15 function 2: vendor 0x1166 product 0x0220 (rev. 0x04)
ohci0: interrupting at ioapic1 pin 17
ohci0: OHCI version 1.0, legacy support
usb0 at ohci0: USB revision 1.0
isa0 at mainbus0
lpt0 at isa0 port 0x378-0x37b irq 7
com0 at isa0 port 0x3f8-0x3ff irq 4: ns16550a, working fifo
com1 at isa0 port 0x2f8-0x2ff irq 3: ns16550a, working fifo
pckbc0 at isa0 port 0x60-0x64
pckbd0 at pckbc0 (kbd slot)
pckbc0: using irq 1 for kbd slot
wskbd0 at pckbd0: console keyboard, using wsdisplay0
attimer0 at isa0 port 0x40-0x43: AT Timer
pcppi0 at isa0 port 0x61
midi0 at pcppi0: PC speaker (CPU-intensive output)
sysbeep0 at pcppi0
npx0 at isa0 port 0xf0-0xff
npx0: reported by CPUID; using exception 16
fdc0 at isa0 port 0x3f0-0x3f7 irq 6 drq 2
attimer0: attached to pcppi0
timecounter: Timecounter "clockinterrupt" frequency 100 Hz quality 0
scsibus0: waiting 2 seconds for devices to settle...
scsibus1: waiting 2 seconds for devices to settle...
uhub0 at usb0: vendor 0x1166 OHCI root hub, class 9/0, rev 1.00/1.00, addr 1
uhub0: 2 ports with 2 removable, self powered
wd0 at atabus0 drive 0: <WDC WD800BB-00JHC0>
wd0: drive supports 16-sector PIO transfers, LBA addressing
wd0: 76319 MB, 155061 cyl, 16 head, 63 sec, 512 bytes/sect x 156301488 sectors
wd0: 32-bit data port
wd0: drive supports PIO mode 4, DMA mode 2, Ultra-DMA mode 5 (Ultra/100)
wd1 at atabus0 drive 1: <SAMSUNG SP2514N>
wd1: drive supports 16-sector PIO transfers, LBA48 addressing
wd1: 232 GB, 484521 cyl, 16 head, 63 sec, 512 bytes/sect x 488397168 sectors
wd1: 32-bit data port
wd1: drive supports PIO mode 4, DMA mode 2, Ultra-DMA mode 5 (Ultra/100)
wd0(rccide0:0:0): using PIO mode 4, DMA mode 2, Ultra-DMA mode 2 (Ultra/33) 
(using DMA)
wd1(rccide0:0:1): using PIO mode 4, DMA mode 2, Ultra-DMA mode 2 (Ultra/33) 
(using DMA)
wd2 at atabus1 drive 0: <HDS722516VLAT80>
wd2: drive supports 16-sector PIO transfers, LBA48 addressing
wd2: 153 GB, 319120 cyl, 16 head, 63 sec, 512 bytes/sect x 321672960 sectors
wd2: 32-bit data port
wd2: drive supports PIO mode 4, DMA mode 2, Ultra-DMA mode 5 (Ultra/100)
wd3 at atabus1 drive 1: <SAMSUNG SP2514N>
wd3: drive supports 16-sector PIO transfers, LBA48 addressing
wd3: 232 GB, 484521 cyl, 16 head, 63 sec, 512 bytes/sect x 488397168 sectors
wd3: 32-bit data port
wd3: drive supports PIO mode 4, DMA mode 2, Ultra-DMA mode 5 (Ultra/100)
wd2(rccide0:1:0): using PIO mode 4, DMA mode 2, Ultra-DMA mode 2 (Ultra/33) 
(using DMA)
wd3(rccide0:1:1): using PIO mode 4, DMA mode 2, Ultra-DMA mode 2 (Ultra/33) 
(using DMA)
Kernelized RAIDframe activated
pad0: outputs: 44100Hz, 16-bit, stereo
audio0 at pad0: half duplex
boot device: wd0
root on wd0a dumps on wd0b
root file system type: ffs
wsdisplay0: screen 1 added (80x25, vt100 emulation)
wsdisplay0: screen 2 added (80x25, vt100 emulation)
wsdisplay0: screen 3 added (80x25, vt100 emulation)
wsdisplay0: screen 4 added (80x25, vt100 emulation)
Accounting started
=== END PASTE ===

The machine is currently running solid with both CPUs attached (passed
"./build.sh -j 4 sets"). The clock no longer drifts like observed
earlier with ~4.99.60.

On the other hand, with ACPI enabled on NetBSD 5.0, the breakpoint is
still triggered, and then the cpu1 fails to start. These messages found
online, from the dmesg of a Linux kernel, may help diagnose it:
(http://linux.derkeiler.com/Mailing-Lists/Kernel/2006-09/msg06826.html)

=== BEGIN PASTE ===
ENABLING IO-APIC IRQs
BIOS bug, IO-APIC#1 ID 3 is already used!...
... fixing up to 1. (tell your hw vendor)
..TIMER: vector=0x31 apic1=0 pin1=2 apic2=0 pin2=0
..MP-BIOS bug: 8254 timer not connected to IO-APIC
...trying to set up timer (IRQ0) through the 8259A ...
..... (found pin 0) ...works.
=== END PASTE ===

>How-To-Repeat:

Boot NetBSD 4.0 GENERIC (or subsequent versions) on an ASUS CUR-DLS board.

>Fix:

Apply this simple patch:

Index: sys/dev/acpi/acpi_quirks.c
===================================================================
RCS file: /cvsroot/src/sys/dev/acpi/acpi_quirks.c,v
retrieving revision 1.9
diff -p -u -r1.9 acpi_quirks.c
--- sys/dev/acpi/acpi_quirks.c  9 Dec 2007 20:27:53 -0000       1.9
+++ sys/dev/acpi/acpi_quirks.c  25 Jan 2009 01:50:32 -0000
@@ -62,6 +62,8 @@ static struct acpi_quirk acpi_quirks[] =
          ACPI_QUIRK_BROKEN },
        { ACPI_SIG_FADT, "NVIDIA", 0x06040000, AQ_EQ, "CK8     ",
          ACPI_QUIRK_IRQ0 },
+       { ACPI_SIG_FADT, "HP    ", 0x06040012, AQ_LTE, "HWPC20F ",
+         ACPI_QUIRK_BROKEN },
 };
 
 static int



Home | Main Index | Thread Index | Old Index