Hi, It happens very often on my MacBook4,1 (still running with i686 kernel for a certain personal reason, not x86_64 though) that the machine slows down, gnome CD player suddenly opens (even though there is no CD media loaded into the drive), and touchpad don't work nicely. irq 21: nobody cared (try booting with the "irqpoll" option) Disabling IRQ #21 In such a situation, dmesg always shows the following messages every two seconds which slows down the machine so bad and annoying: hda: status error: status=0x59 { DriveReady SeekComplete DataRequest Error } hda: status error: error=0x40 { LastFailedSense=0x04 } ide: failed opcode was: unknown hda: drive not ready for command Removing ide-cd_mod kernel module would help stopping these repeating messages though. The IDE (PATA) controller attached with the CD/DVD drive is: 00:1f.1 IDE interface [0101]: Intel Corporation 82801HBM/HEM (ICH8M/ICH8M-E) IDE Controller [8086:2850] (rev 03) (prog-if 8f [Master SecP SecO PriP PriO]) Subsystem: Apple Computer Inc. Unknown device [106b:00a1] Control: I/O+ Mem- BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- Status: Cap- 66MHz- UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR- Latency: 0 Interrupt: pin A routed to IRQ 21 Region 0: I/O ports at 6108 [size=8] Region 1: I/O ports at 6124 [size=4] Region 2: I/O ports at 6100 [size=8] Region 3: I/O ports at 6120 [size=4] Region 4: I/O ports at 60e0 [size=16] /proc/interrupts shows like this: CPU0 CPU1 0: 149053 159890 IO-APIC-edge timer 8: 0 3 IO-APIC-edge rtc 9: 21652 1462 IO-APIC-fasteoi acpi 16: 96958 103303 IO-APIC-fasteoi uhci_hcd:usb2, uhci_hcd:usb3, i915@pci:0000:00:02.0 17: 10238 17 IO-APIC-fasteoi eth0 18: 75785 3642 IO-APIC-fasteoi ata_piix, uhci_hcd:usb5 19: 2 0 IO-APIC-fasteoi ohci1394 20: 98 97 IO-APIC-fasteoi uhci_hcd:usb1, ehci_hcd:usb6, HDA Intel 21: 39926 36169 IO-APIC-fasteoi ide0, ehci_hcd:usb4, uhci_hcd:usb7 NMI: 0 0 Non-maskable interrupts LOC: 505228 495166 Local timer interrupts RES: 115346 108647 Rescheduling interrupts CAL: 110 14262 function call interrupts TLB: 182 184 TLB shootdowns TRM: 0 0 Thermal event interrupts SPU: 0 0 Spurious interrupts ERR: 0 MIS: 0 Then the following patch fixed the problem anyhow at least on my machine (I suspect changing from ich_pata_100 to ich_pata_66, especially removing the flag PIIX_FLAG_CHECKINTR, did something good in this case). I am not certain whether this patch is the right/correct solution for that, but anyway here's it. Let me know if there's something I can do for debugging further. -- Kohji
diff --git a/drivers/ata/ata_piix.c b/drivers/ata/ata_piix.c index 81b7ae3..93b5741 100644 --- a/drivers/ata/ata_piix.c +++ b/drivers/ata/ata_piix.c @@ -214,6 +214,8 @@ static const struct pci_device_id piix_pci_tbl[] = { /* ICH7/7-R (i945, i975) UDMA 100*/ { 0x8086, 0x27DF, PCI_ANY_ID, PCI_ANY_ID, 0, 0, ich_pata_100 }, { 0x8086, 0x269E, PCI_ANY_ID, PCI_ANY_ID, 0, 0, ich_pata_100 }, + /* ICH8 Mobile PATA Controller, Apple */ + { 0x8086, 0x2850, 0x106b, 0x00a1, 0, 0, ich_pata_66 }, /* ICH8 Mobile PATA Controller */ { 0x8086, 0x2850, PCI_ANY_ID, PCI_ANY_ID, 0, 0, ich_pata_100 },