Distribution: Gentoo 2004.2 Hardware Environment: Acer Tablet PC C100 ACPI 2.0 Supported (This bug is actually caused by Acer taking a very liberal approach to reading the ACPI standard, and migth be kind of rare) Software Environment: Problem Description: During boot ACPI reports: ACPI: RSDP: ("v000 Acer ") @ 0x0ef30 CRC error !!! and the ACPI is disabled. Steps to reproduce: Ennable ACPI in the kernel Boot the laptop Check driver output with "dmesg" Posible solution: The bios contains two "RSD PTR" signatures. The first has CRC fields set to 0x00 - therefore the CRC check fails. The second signature contains the correct CRC and pointers to the ACPI tables. Currently the ACPI driver only looks for the first signature, and then checks CRC, if it fails, ACPI is disabled. A sollution could be to keep looking for a valid signature and CRC. Hard coding the adress of the second signature into the driver, has proved to me that the ACPI does work, but this is (of course :-) no solution.
maybe we want to use this bug as an excuse to consolidate the two table scanners...
Could you attach dmesg and acpidmp output please?
DMESG before changing the driver (The numbers after the first ACPI line is the raw data at the first address in hex) Linux version 2.6.7-gentoo-r11 (root@sleipner) (gcc version 3.3.3 20040412 (Gentoo Linux 3.3.3-r6, ssp-3.3.2-2, pie-8.7.6)) #36 Fri Aug 6 22:15:14 CEST 2004 BIOS-provided physical RAM map: BIOS-e820: 0000000000000000 - 000000000009fc00 (usable) BIOS-e820: 000000000009fc00 - 00000000000a0000 (reserved) BIOS-e820: 00000000000f0000 - 0000000000100000 (reserved) BIOS-e820: 0000000000100000 - 000000000ffc0000 (usable) BIOS-e820: 000000000ffc0000 - 000000000ffe0000 (reserved) BIOS-e820: 000000000ffe0000 - 000000000ffe8000 (ACPI data) BIOS-e820: 000000000ffe8000 - 0000000010000000 (ACPI NVS) BIOS-e820: 00000000ffff0000 - 0000000100000000 (reserved) 255MB LOWMEM available. On node 0 totalpages: 65472 DMA zone: 4096 pages, LIFO batch:1 Normal zone: 61376 pages, LIFO batch:14 HighMem zone: 0 pages, LIFO batch:1 DMI 2.3 present. ACPI: RSDP (v000 Acer ) @ 0x000ec2d0 52 53 44 20 50 54 52 20 0 41 63 65 72 20 20 0 0 0 0 0 ACPI Checksum is 0x3da Length = 20 ACPI: No System Description Table (RSDT/XSDT) specified in RSDP Built 1 zonelists Kernel command line: BOOT_IMAGE=Gentoo26 ro root=306 Initializing CPU#0 CPU 0 irqstacks, hard=c0519000 soft=c0518000 PID hash table entries: 1024 (order 10: 8192 bytes) Detected 798.534 MHz processor. Using tsc for high-res timesource Console: colour VGA+ 80x25 Memory: 254676k/261888k available (2997k kernel code, 6492k reserved, 1022k data, 156k init, 0k highmem) Checking if this processor honours the WP bit even in supervisor mode... Ok. Calibrating delay loop... 1581.05 BogoMIPS Dentry cache hash table entries: 32768 (order: 5, 131072 bytes) Inode-cache hash table entries: 16384 (order: 4, 65536 bytes) Mount-cache hash table entries: 512 (order: 0, 4096 bytes) CPU: After generic identify, caps: 0383f9ff 00000000 00000000 00000000 CPU: After vendor identify, caps: 0383f9ff 00000000 00000000 00000000 CPU: L1 I cache: 16K, L1 D cache: 16K CPU: L2 cache: 512K CPU: After all inits, caps: 0383f9ff 00000000 00000000 00000040 Intel machine check architecture supported. Intel machine check reporting enabled on CPU#0. CPU: Intel Mobile Intel(R) Pentium(R) III CPU - M 800MHz stepping 04 Enabling fast FPU save and restore... done. Enabling unmasked SIMD FPU exception support... done. Checking 'hlt' instruction... OK. NET: Registered protocol family 16 PCI: PCI BIOS revision 2.10 entry at 0xf0200, last bus=0 PCI: Using configuration type 1 mtrr: v2.0 (20020519) ACPI: Subsystem revision 20040326 ACPI: Interpreter disabled. SCSI subsystem initialized Linux Kernel Card Services options: [pci] [cardbus] [pm] usbcore: registered new driver usbfs usbcore: registered new driver hub PCI: Probing PCI hardware PCI: Probing PCI hardware (bus 00) PCI: Using IRQ router PIIX/ICH [8086/7198] at 0000:00:07.0 PCI: IRQ 0 for device 0000:00:03.0 doesn't match PIRQ mask - try pci=usepirqmask PCI: Found IRQ 10 for device 0000:00:03.0 PCI: Sharing IRQ 10 with 0000:00:02.0 PCI: Sharing IRQ 10 with 0000:00:03.1 NET: Registered protocol family 23 Machine check exception polling timer started. apm: BIOS version 1.2 Flags 0x07 (Driver version 1.16ac) audit: initializing netlink socket (disabled) audit(1094931658.833:0): initialized devfs: 2004-01-31 Richard Gooch (rgooch@atnf.csiro.au) devfs: boot_options: 0x1 Installing knfsd (copyright (C) 1996 okir@monad.swb.de). NTFS driver 2.1.14 [Flags: R/O]. udf: registering filesystem Supermount version 2.0.4 for kernel 2.6 Initializing Cryptographic API mice: PS/2 mouse device common for all mice ts: Compaq touchscreen protocol output input: PC Speaker serio: i8042 AUX port at 0x60,0x64 irq 12 Synaptics Touchpad, model: 1 Firmware: 5.8 180 degree mounted touchpad Sensor: 38 new absolute packet format Touchpad has extended capability bits -> 4 multi-buttons, i.e. besides standard buttons -> multifinger detection -> palm detection input: SynPS/2 Synaptics TouchPad on isa0060/serio1 serio: i8042 KBD port at 0x60,0x64 irq 1 input: AT Translated Set 2 keyboard on isa0060/serio0 Real Time Clock Driver v1.12 Linux agpgart interface v0.100 (c) Dave Jones Serial: 8250/16550 driver $Revision: 1.90 $ 8 ports, IRQ sharing disabled PCI: Found IRQ 11 for device 0000:00:00.2 PCI: Sharing IRQ 11 with 0000:00:00.1 Using anticipatory io scheduler Floppy drive(s): fd0 is unknown type 15 (usb?) floppy0: no floppy controllers found RAMDISK driver initialized: 16 RAM disks of 4096K size 1024 blocksize loop: loaded (max 8 devices) nbd: registered device at major 43 8139too Fast Ethernet driver 0.9.27 PCI: Found IRQ 10 for device 0000:00:04.0 PCI: Sharing IRQ 10 with 0000:00:05.0 PCI: Sharing IRQ 10 with 0000:00:07.2 eth0: RealTek RTL8139 at 0xd0800000, 00:00:e2:98:a6:0e, IRQ 10 eth0: Identified 8139 chip type 'RTL-8100B/8139D' Uniform Multi-Platform E-IDE driver Revision: 7.00alpha2 ide: Assuming 33MHz system bus speed for PIO modes; override with idebus=xx PIIX4: IDE controller at PCI slot 0000:00:07.1 PIIX4: chipset revision 0 PIIX4: not 100% native mode: will probe irqs later ide0: BM-DMA at 0x8440-0x8447, BIOS settings: hda:DMA, hdb:pio hda: ST94811A, ATA DISK drive ide0 at 0x1f0-0x1f7,0x3f6 on irq 14 hda: max request size: 1024KiB hda: 78140160 sectors (40007 MB) w/8192KiB Cache, CHS=16383/255/63, UDMA(33) /dev/ide/host0/bus0/target0/lun0: p2 p3 < p5 p6 p7 > PCI: Found IRQ 10 for device 0000:00:03.0 PCI: Sharing IRQ 10 with 0000:00:02.0 PCI: Sharing IRQ 10 with 0000:00:03.1 Yenta: CardBus bridge found at 0000:00:03.0 [1025:101b] Yenta: ISA IRQ mask 0x0238, PCI irq 10 Socket status: 30000006 PCI: Found IRQ 10 for device 0000:00:03.1 PCI: Sharing IRQ 10 with 0000:00:02.0 PCI: Sharing IRQ 10 with 0000:00:03.0 Yenta: CardBus bridge found at 0000:00:03.1 [1025:101b] Yenta: ISA IRQ mask 0x0238, PCI irq 10 Socket status: 30000410 USB Universal Host Controller Interface driver v2.2 PCI: Found IRQ 10 for device 0000:00:07.2 PCI: Sharing IRQ 10 with 0000:00:04.0 PCI: Sharing IRQ 10 with 0000:00:05.0 uhci_hcd 0000:00:07.2: Intel Corp. 82440MX USB Universal Host Controller uhci_hcd 0000:00:07.2: irq 10, io base 00008400 uhci_hcd 0000:00:07.2: new USB bus registered, assigned bus number 1 hub 1-0:1.0: USB hub found hub 1-0:1.0: 2 ports detected usbcore: registered new driver usblp drivers/usb/class/usblp.c: v0.13: USB Printer Device Class driver Initializing USB Mass Storage driver... usbcore: registered new driver usb-storage USB Mass Storage support registered. usbcore: registered new driver wacom drivers/usb/input/wacom.c: v1.30:USB Wacom Graphire and Wacom Intuos tablet driver usbcore: registered new driver usbserial drivers/usb/serial/usb-serial.c: USB Serial Driver core v2.0 drivers/usb/serial/usb-serial.c: USB Serial support registered for FTDI SIO drivers/usb/serial/usb-serial.c: USB Serial support registered for FTDI 8U232AM Compatible drivers/usb/serial/usb-serial.c: USB Serial support registered for FTDI FT232BM Compatible drivers/usb/serial/usb-serial.c: USB Serial support registered for USB-UIRT Infrared Tranceiver drivers/usb/serial/usb-serial.c: USB Serial support registered for Home-Electronics TIRA-1 IR Transceiver usbcore: registered new driver ftdi_sio drivers/usb/serial/ftdi_sio.c: v1.4.0:USB FTDI Serial Converters Driver drivers/usb/serial/usb-serial.c: USB Serial support registered for PL-2303 usbcore: registered new driver pl2303 drivers/usb/serial/pl2303.c: Prolific PL2303 USB to serial adaptor driver v0.10 i2c /dev entries driver Advanced Linux Sound Architecture Driver Version 1.0.4 (Mon May 17 14:31:44 2004 UTC). PCI: Found IRQ 11 for device 0000:00:00.1 PCI: Sharing IRQ 11 with 0000:00:00.2 PCI: Setting latency timer of device 0000:00:00.1 to 64 intel8x0_measure_ac97_clock: measured 49485 usecs intel8x0: clocking to 48000 ALSA device list: #0: Intel 440MX at 0x7000, irq 11 NET: Registered protocol family 2 IP: routing cache hash table of 2048 buckets, 16Kbytes TCP: Hash tables configured (established 16384 bind 32768) NET: Registered protocol family 1 NET: Registered protocol family 17 PM: Reading pmdisk image. PM: Resume from disk failed. ReiserFS: hda6: found reiserfs format "3.6" with standard journal ReiserFS: hda6: using ordered data mode ReiserFS: hda6: journal params: device hda6, size 8192, journal first block 18, max trans len 1024, max batch 900, max commit age 30, max trans age 30 ReiserFS: hda6: checking transaction log (hda6) ReiserFS: hda6: Using r5 hash to sort names VFS: Mounted root (reiserfs filesystem) readonly. Mounted devfs on /dev Freeing unused kernel memory: 156k freed Adding 875500k swap on /dev/hda5. Priority:-1 extents:1 hostap_crypt: registered algorithm 'NULL' ipw2100: Intel(R) PRO/Wireless 2100 Network Driver, 0.44 ipw2100: Copyright(c) 2003-2004 Intel Corporation eth0: link down eth0: link up, 100Mbps, full-duplex, lpa 0x45E1
dmesg output after changing driver to look at a higher address, unfortunately the first part drowns in lost ticks (left out here), but ACPI works. I dont have acpidump rigth now, so you it might take a while before I can post the output from that. Losing some ticks... checking if CPU frequency changed. Losing too many ticks! TSC cannot be used as a timesource. Possible reasons for this are: You're running with Speedstep, You don't have DMA enabled for your hard disk (see hdparm), Incorrect TSC synchronization on an SMP system (see dmesg). Falling back to a sane timesource now. Losing some ticks... checking if CPU frequency changed. spurious 8259A interrupt: IRQ7. floppy0: no floppy controllers found RAMDISK driver initialized: 16 RAM disks of 4096K size 1024 blocksize loop: loaded (max 8 devices) nbd: registered device at major 43 8139too Fast Ethernet driver 0.9.27 eth0: RealTek RTL8139 at 0xd080d000, 00:00:e2:98:a6:0e, IRQ 10 eth0: Identified 8139 chip type 'RTL-8100B/8139D' Uniform Multi-Platform E-IDE driver Revision: 7.00alpha2 ide: Assuming 33MHz system bus speed for PIO modes; override with idebus=xx PIIX4: IDE controller at PCI slot 0000:00:07.1 PIIX4: chipset revision 0 PIIX4: not 100% native mode: will probe irqs later ide0: BM-DMA at 0x8440-0x8447, BIOS settings: hda:DMA, hdb:pio hda: ST94811A, ATA DISK drive ide0 at 0x1f0-0x1f7,0x3f6 on irq 14 hda: max request size: 1024KiB hda: 78140160 sectors (40007 MB) w/8192KiB Cache, CHS=16383/255/63, UDMA(33) /dev/ide/host0/bus0/target0/lun0: p2 p3 < p5 p6 p7 > Yenta: CardBus bridge found at 0000:00:03.0 [1025:101b] Yenta: ISA IRQ mask 0x0038, PCI irq 10 Socket status: 30000006 Yenta: CardBus bridge found at 0000:00:03.1 [1025:101b] Yenta: ISA IRQ mask 0x0038, PCI irq 10 Socket status: 30000410 USB Universal Host Controller Interface driver v2.2 uhci_hcd 0000:00:07.2: Intel Corp. 82440MX USB Universal Host Controller uhci_hcd 0000:00:07.2: irq 10, io base 00008400 uhci_hcd 0000:00:07.2: new USB bus registered, assigned bus number 1 hub 1-0:1.0: USB hub found hub 1-0:1.0: 2 ports detected usbcore: registered new driver usblp drivers/usb/class/usblp.c: v0.13: USB Printer Device Class driver Initializing USB Mass Storage driver... usbcore: registered new driver usb-storage USB Mass Storage support registered. usbcore: registered new driver wacom drivers/usb/input/wacom.c: v1.30:USB Wacom Graphire and Wacom Intuos tablet driver usbcore: registered new driver usbserial drivers/usb/serial/usb-serial.c: USB Serial Driver core v2.0 drivers/usb/serial/usb-serial.c: USB Serial support registered for FTDI SIO drivers/usb/serial/usb-serial.c: USB Serial support registered for FTDI 8U232AM Compatible drivers/usb/serial/usb-serial.c: USB Serial support registered for FTDI FT232BM Compatible drivers/usb/serial/usb-serial.c: USB Serial support registered for USB-UIRT Infrared Tranceiver drivers/usb/serial/usb-serial.c: USB Serial support registered for Home-Electronics TIRA-1 IR Transceiver usbcore: registered new driver ftdi_sio drivers/usb/serial/ftdi_sio.c: v1.4.0:USB FTDI Serial Converters Driver drivers/usb/serial/usb-serial.c: USB Serial support registered for PL-2303 usbcore: registered new driver pl2303 drivers/usb/serial/pl2303.c: Prolific PL2303 USB to serial adaptor driver v0.10 i2c /dev entries driver Advanced Linux Sound Architecture Driver Version 1.0.4 (Mon May 17 14:31:44 2004 UTC). PCI: Setting latency timer of device 0000:00:00.1 to 64 intel8x0_measure_ac97_clock: measured 99382 usecs intel8x0: clocking to 48000 ALSA device list: #0: Intel 440MX at 0x7000, irq 11 NET: Registered protocol family 2 IP: routing cache hash table of 2048 buckets, 16Kbytes TCP: Hash tables configured (established 16384 bind 32768) NET: Registered protocol family 1 NET: Registered protocol family 17 PM: Reading pmdisk image. PM: Resume from disk failed. ACPI: (supports S0 S3 S4 S4bios S5) ReiserFS: hda6: found reiserfs format "3.6" with standard journal ReiserFS: hda6: using ordered data mode ReiserFS: hda6: journal params: device hda6, size 8192, journal first block 18, max trans len 1024, max batch 900, max commit age 30, max trans age 30 ReiserFS: hda6: checking transaction log (hda6) ReiserFS: hda6: Using r5 hash to sort names VFS: Mounted root (reiserfs filesystem) readonly. Mounted devfs on /dev Freeing unused kernel memory: 156k freed Adding 875500k swap on /dev/hda5. Priority:-1 extents:1 hostap_crypt: registered algorithm 'NULL' ipw2100: Intel(R) PRO/Wireless 2100 Network Driver, 0.44 ipw2100: Copyright(c) 2003-2004 Intel Corporation eth0: link up, 100Mbps, full-duplex, lpa 0x45E1
Good finding! I think we should check rsdp value in table before checksum. Pls, try patch below to see if it works.
Created attachment 3662 [details] check rsdp value
This works on the acer c100, since the rsdp in the bad header happens to be NULL. I disagree on the order of checking, it is nescessary to do the checksum, since the code in ../drivers/acpi/table.c checks it later and disables acpi if it fails. The function acpi_compute_checksum in tables.c could be called from ../arch/i386/kernel/acpi/boot.c for each rsdp signature. This would work even if someone left a rsdp header in the bios with a non-NULL pointer but invalid checksum (allthough chances for this is small).
Yes, we should get rid of 'static' for using acpi_table_compute_checksum(). I think from the spec, doing brute-force search for rsdp is ok.
Created attachment 3670 [details] brute force searching for sane rsdp
need to delete, rather than fix this code closing as a duplicate of bug 2415
*** This bug has been marked as a duplicate of 1415 ***
er that is twenty-FOUR-fifteen... *** This bug has been marked as a duplicate of 2415 ***