Skip to contentSkip to conversation

2.6-test11 : problem about irq18.

OOPS? Jon Burgess 3 participants 4 messages Dec 8, 2003 – Jan 6, 2004 9 messages not in the archive

lore
Share & tools
lore
#0 lore raw
Quoted 5 lines · Raphaël Rigo

Dec 7 18:27:45 pici kernel: Disabling IRQ #18

I am using a P4 2.6 Ghz without HT activated 512 MB DDR PC3200 on an ASUS P4P800 Deluxe MB. HardDrive is on SATA (native mode) : Maxtor 6Y120MO.

Sounds like the known problem with an interrupt storm with the ICH5 See "Issue #2" at http://www.ussg.iu.edu/hypermail/linux/kernel/0312.0/0597.html

Quoted 1 line

2.4.23 doesn't have this problem but keeps using 30-50% CPU even if I do nothing.

Try vmstat, I expect you'll see ~100k IRQ/s

You could try using the ata_piix driver (located amongst the SCSI drivers).

If that still doesn't help, you could try adding the patch attached to drivers/scsi/libata-core.c this should make the ata_piix driver catch the spurious interrupts

Jon

libata-core.c renamed from libata-core.c-orig +32 -0
@@ -2386,6 +2386,37 @@
 }
 
 /**
+ *	ata_chk_spurious_int - Check for spurious interrupts
+ *	@ap: port to which command is being issued
+ *
+ *	Examines the DMA status registers and clears
+ *      unexpected interrupts
+ *
+ *	LOCKING:
+ */
+static inline void ata_chk_spurious_int(struct ata_port *ap) {
+	int host_stat;
+	
+	if (ap->flags & ATA_FLAG_MMIO) {
+		void *mmio = (void *) ap->ioaddr.bmdma_addr;
+		host_stat = readb(mmio + ATA_DMA_STATUS);
+	} else
+		host_stat = inb(ap->ioaddr.bmdma_addr + ATA_DMA_STATUS);
+	
+	if ((host_stat & (ATA_DMA_INTR | ATA_DMA_ERR | ATA_DMA_ACTIVE)) == ATA_DMA_INTR) {
+		if (ap->flags & ATA_FLAG_MMIO) {
+			void *mmio = (void *) ap->ioaddr.bmdma_addr;
+			writeb(host_stat & ~ATA_DMA_ERR, mmio + ATA_DMA_STATUS);
+		} else
+			outb(host_stat & ~ATA_DMA_ERR, ap->ioaddr.bmdma_addr + ATA_DMA_STATUS);
+		
+		DPRINTK("ata%u: Caught spurious interrupt, status 0x%X\n", ap->id, host_stat);
+		udelay(1);
+	}
+}
+
+
+/**
  *	ata_interrupt -
  *	@irq:
  *	@dev_instance:
@@ -2417,6 +2448,7 @@
 			qc = ata_qc_from_tag(ap, ap->active_tag);
 			if (qc && ((qc->flags & ATA_QCFLAG_POLL) == 0))
 				handled += ata_host_intr(ap, qc);
+			ata_chk_spurious_int(ap);
 		}
 	}
 

A message that is not in the archive (sent off-list or not yet received): [email protected]

A message that is not in the archive (sent off-list or not yet received): [email protected]

A message that is not in the archive (sent off-list or not yet received): [email protected]

A message that is not in the archive (sent off-list or not yet received): [email protected]

A message that is not in the archive (sent off-list or not yet received): [email protected]

A message that is not in the archive (sent off-list or not yet received): [email protected]

A message that is not in the archive (sent off-list or not yet received): [email protected]

A message that is not in the archive (sent off-list or not yet received): [email protected]

A message that is not in the archive (sent off-list or not yet received): [email protected]

#10 lore raw

Re: [2.6.1-rc2] SATA problem.

In a previous email, Rigo sent me the following boot log + lspci info giving further details of the ICH5 in his setup.

The thing which looked most odd to me was that both controllers appear to be configured in native mode on IRQ 18 and for some reason this appears to give some trouble. In particular he was seeing an "unhandled interrupt" error on IRQ 18.

Enabling the sata_piix driver and disabling the ide_piix code was enough to get the machine to boot, but I don't know what the real cause of the problem.

Raphaël Rigo wrote in a previous email to me:

Quoted 43 lines

Here are the bootlog (of working boot, ask me if you need the one of the non working one because I must copy it by hand) and lspci -vvv

Dec  9 20:41:46 pici kernel: Uniform Multi-Platform E-IDE driver Revision: 7.00alpha2
Dec  9 20:41:46 pici kernel: ide: Assuming 33MHz system bus speed for PIO modes; override with idebus=xx
Dec  9 20:41:46 pici kernel: ide2: I/O resource 0x3EE-0x3EE not free.
Dec  9 20:41:46 pici kernel: ide2: ports already in use, skipping probe
Dec  9 20:41:46 pici kernel: libata version 0.81 loaded.
Dec  9 20:41:46 pici kernel: ata_piix version 0.95
Dec  9 20:41:46 pici kernel: PCI: Setting latency timer of device 0000:00:1f.2 to 64
Dec  9 20:41:46 pici kernel: ata1: SATA max UDMA/133 cmd 0xEF88 ctl 0xEF86 bmdma 0xEE60 irq 18
Dec  9 20:41:46 pici kernel: ata2: SATA max UDMA/133 cmd 0xEF68 ctl 0xEF82 bmdma 0xEE68 irq 18
Dec  9 20:41:46 pici kernel: ata1: SATA port has no device. disabling.
Dec  9 20:41:46 pici kernel: ata1: thread exiting
Dec  9 20:41:46 pici kernel: scsi0 : ata_piix
Dec  9 20:41:46 pici kernel: ata2: dev 0 cfg 49:2f00 82:7c6b 83:7b09 84:4003 85:7c49 86:3a01 87:4003 88:207f
Dec  9 20:41:46 pici kernel: ata2: dev 0 ATA, max UDMA/133, 240121728 sectors
Dec  9 20:41:46 pici kernel: ata2: dev 0 configured for UDMA/133
Dec  9 20:41:46 pici kernel: scsi1 : ata_piix
Dec  9 20:41:46 pici kernel:   Vendor: ATA       Model: Maxtor 6Y120M0    Rev: 0.81
Dec  9 20:41:46 pici kernel:   Type:   Direct-Access                      ANSI SCSI revision: 05
Dec  9 20:41:46 pici kernel: SCSI device sda: 240121728 512-byte hdwr sectors (122942 MB)
Dec  9 20:41:46 pici kernel: SCSI device sda: drive cache: write through
Dec  9 20:41:46 pici kernel:  sda: sda1 sda2 < sda5 sda6 sda7 sda8 > sda3
Dec  9 20:41:46 pici kernel: Attached scsi disk sda at scsi1, channel 0, id 0, lun 0
Dec  9 20:41:46 pici kernel: Attached scsi generic sg0 at scsi1, channel 0, id 0, lun 0,  type 0

00:1f.1 IDE interface: Intel Corp.: Unknown device 24db (rev 02) (prog-if 8f [Master SecP SecO PriP PriO])
Subsystem: Asustek Computer, Inc.: Unknown device 80a6
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 18
Region 0: I/O ports at efe0 [size=8]
Region 1: I/O ports at efac [size=4]
Region 2: I/O ports at efa0 [size=8]
Region 3: I/O ports at efa8 [size=4]
Region 4: I/O ports at ef90 [size=16]
Region 5: Memory at 20000000 (32-bit, non-prefetchable) [size=1K]

Quoted 14 lines

00:1f.2 IDE interface: Intel Corp.: Unknown device 24d1 (rev 02) (prog-if 8f [Master SecP SecO PriP PriO])
Subsystem: Asustek Computer, Inc.: Unknown device 80a6
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 18
Region 0: I/O ports at ef88 [size=8]
Region 1: I/O ports at ef84 [size=4]
Region 2: I/O ports at ef68 [size=8]
Region 3: I/O ports at ef80 [size=4]
Region 4: I/O ports at ee60 [size=16]

Jon

#11 lore raw

Re: [2.6.1-rc2] SATA problem.

FWIW my P4P 800 Deluxe w/ SATA and PATA drives works fine in 2.6. The trick for me was to configure "Enhanced Mode, SATA only" in the BIOS.

See http://www.hentges.net/howtos/p4p800_SATA.html for details.

HTH

Signature · 7 lines
Matthias Hentges 
Cologne / Germany

[www.hentges.net] -> PGP welcome, HTML tolerated
ICQ: 97 26 97 4   -> No files, no URL's

My OS: Debian Woody. Geek by Nature, Linux by Choice
#12 lore raw

Re: [2.6.1-rc2] SATA problem.

Quoted 7 lines · Matthias Hentges

FWIW my P4P 800 Deluxe w/ SATA and PATA drives works fine in 2.6. The trick for me was to configure "Enhanced Mode, SATA only" in the BIOS.

See http://www.hentges.net/howtos/p4p800_SATA.html for details.

HTH

Thanks for the help... it is now (partially) working. But a fix in the kernel would be better :) (Maybe I should finally start to learn kernel coding) The partially is because i tried to burn a CD (with k3b without trying anything before) => complete freeze.
Raphaël RIGO.