Patchwork cmd64x: irq 14: nobody cared - system is dreadfully slow

login
register
mail settings
Submitter Bartlomiej Zolnierkiewicz
Date June 21, 2009, 1:33 p.m.
Message ID <200906211533.41452.bzolnier@gmail.com>
Download mbox | patch
Permalink /patch/28954/
State Not Applicable
Delegated to: David Miller
Headers show

Comments

Bartlomiej Zolnierkiewicz - June 21, 2009, 1:33 p.m.
On Sunday 21 June 2009 14:46:37 Frans Pop wrote:
> On Sunday 21 June 2009, David Miller wrote:
> > From: Frans Pop <elendil@planet.nl>
> > Date: Sat, 20 Jun 2009 23:52:33 +0200
> >
> > > ide0 at 0x1fe02c00000-0x1fe02c00007,0x1fe02c0000a on irq 14
> > > (serialized) irq 14: nobody cared (try booting with the "irqpoll"
> > > option) Call Trace:
> [...]
> > diff --git a/drivers/ide/cmd64x.c b/drivers/ide/cmd64x.c
> > index 80b777e..f98ba24 100644
> > --- a/drivers/ide/cmd64x.c
> > +++ b/drivers/ide/cmd64x.c
> > @@ -425,8 +425,7 @@ static const struct ide_port_info cmd64x_chipsets[]
> > __devinitdata = { .enablebits	= {{0x51,0x04,0x04}, {0x51,0x08,0x08}},
> >  		.port_ops	= &cmd64x_port_ops,
> >  		.dma_ops	= &cmd648_dma_ops,
> > -		.host_flags	= IDE_HFLAG_SERIALIZE |
> > -				  IDE_HFLAG_ABUSE_PREFETCH,
> > +		.host_flags	= IDE_HFLAG_ABUSE_PREFETCH,
> >  		.pio_mask	= ATA_PIO5,
> >  		.mwdma_mask	= ATA_MWDMA2,
> >  		.udma_mask	= ATA_UDMA2,
> 
> This patch (tested on top of 2.6.30) gets rid of one of the two "nobody cared"
> errors and also makes the system run at normal speed again. But I'm still
> left with one error:
> 
> cmd64x 0000:01:03.0: IDE controller (0x1095:0x0646 rev 0x03)
> cmd64x 0000:01:03.0: 100% native mode on irq 14
>     ide0: BM-DMA at 0x1fe02c00020-0x1fe02c00027
>     ide1: BM-DMA at 0x1fe02c00028-0x1fe02c0002f
> hda: ST34342A, ATA DISK drive
> hda: MWDMA2 mode selected
> hdc: Maxtor 6E040L0, ATA DISK drive
> hdd: CD-ROM 56X/AKH, ATAPI CD/DVD-ROM drive
> hdc: MWDMA2 mode selected
> hdd: bad DMA info in identify block
> ide0 at 0x1fe02c00000-0x1fe02c00007,0x1fe02c0000a on irq 14
> irq 14: nobody cared (try booting with the "irqpoll" option)
> Call Trace:
>  [000000000048b594] note_interrupt+0x160/0x1e8
>  [000000000048bcc4] handle_fasteoi_irq+0x9c/0xc8
>  [0000000000429e60] handler_irq+0xb0/0xe8
>  [00000000004208b4] tl0_irq5+0x14/0x20
>  [0000000000455e80] __do_softirq+0x58/0x17c
>  [0000000000429d84] do_softirq+0x50/0x7c
>  [0000000000455bb0] irq_exit+0x38/0x88
>  [000000000042e710] timer_interrupt+0x70/0x88
>  [00000000004209d4] tl0_irq14+0x14/0x20
>  [000000000048ae04] request_threaded_irq+0x64/0x12c
>  [00000000005ff3c4] ide_host_register+0x4e4/0x6a8
>  [00000000006044bc] ide_pci_init_one+0xc8/0xf8
>  [000000001001271c] cmd64x_init_one+0x88/0x9c [cmd64x]
>  [0000000000588cb4] local_pci_probe+0x10/0x24
>  [0000000000588e38] pci_device_probe+0x4c/0x84
>  [00000000005ee2c8] driver_probe_device+0xa0/0x164
> handlers:
> [<00000000005fb72c>] (ide_intr+0x8/0x234)
> Disabling IRQ #14
> ide1 at 0x1fe02c00010-0x1fe02c00017,0x1fe02c0001a on irq 14

I wonder if the weird hdd device could be a problem here (does it use DMA
under pata_cmd64x, also please send 'hdparm --Istdout /dev/hdd' output)..

Could you check if it helps if we skip ide1 for debug purposes:

---
 drivers/ide/ide-probe.c |    3 +++
 1 file changed, 3 insertions(+)

--
To unsubscribe from this list: send the line "unsubscribe sparclinux" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Frans Pop - June 21, 2009, 8:14 p.m.
On Sunday 21 June 2009, Bartlomiej Zolnierkiewicz wrote:
> Great work Sherlock, Frans has found this already by himself.. ;)

Well, that info wasn't included yet in the original mail I sent only to 
sparclinux...

> Frans, could you try also the current Linus tree + David's patch?

I'd seen that some additional patches had gone in recently, but with 
current .31 (v2.6.30-7732-g2453d6f) I still get the last remaining
"nobody cared" error.

On Sunday 21 June 2009, Bartlomiej Zolnierkiewicz wrote:
> I wonder if the weird hdd device could be a problem here

AFAIK it's the original CD drive that came with the box.

> (does it use DMA under pata_cmd64x,

Attached the dmesg for a boot with pata_cmd64x. It is a bit noisy with all 
those "active {10,3} recovery {10,1} setup {3,1}" messages (are those 
harmless?), but otherwise clean.

Not 100% sure, but I think it shows DMA being used:
ata2.01: ATAPI: CD-ROM 56X/AKH, A8E, max MWDMA2
ata2.01: configured for MWDMA2

> also please send 'hdparm --Istdout /dev/hdd' output)..

# hdparm --Istdout /dev/hdd	# with 2.6.26
/dev/hdd:
 HDIO_DRIVE_CMD(identify) failed: Invalid exchange

> Could you check if it helps if we skip ide1 for debug purposes:

I have not yet tried this.
SCSI subsystem initialized
libata version 3.00 loaded.
scsi0 : pata_cmd64x
scsi1 : pata_cmd64x
ata1: PATA max MWDMA2 cmd 0x1fe02c00000 ctl 0x1fe02c00008 bmdma 0x1fe02c00020 irq 14
ata2: PATA max MWDMA2 cmd 0x1fe02c00010 ctl 0x1fe02c00018 bmdma 0x1fe02c00028 irq 14
pata_cmd64x: active 10 recovery 10 setup 3.
pata_cmd64x: active 10 recovery 10 setup 3.
ata1.00: ATA-2: ST34342A, 0.42, max UDMA/33
ata1.00: 8404830 sectors, multi 0: LBA 
pata_cmd64x: active 3 recovery 1 setup 1.
pata_cmd64x: active 3 recovery 1 setup 1.
ata1.00: configured for MWDMA2
pata_cmd64x: active 3 recovery 1 setup 1.
pata_cmd64x: active 3 recovery 1 setup 1.
ata1.00: configured for MWDMA2
ata1: EH complete
scsi 0:0:0:0: Direct-Access     ATA      ST34342A         0.42 PQ: 0 ANSI: 5
pata_cmd64x: active 10 recovery 10 setup 3.
pata_cmd64x: active 10 recovery 10 setup 3.
ata2.00: ATA-7: Maxtor 6E040L0, NAR61590, max UDMA/133
ata2.00: 80293248 sectors, multi 0: LBA 
ata2.01: ATAPI: CD-ROM 56X/AKH, A8E, max MWDMA2
pata_cmd64x: active 3 recovery 1 setup 1.
pata_cmd64x: active 3 recovery 1 setup 1.
pata_cmd64x: active 3 recovery 1 setup 1.
pata_cmd64x: active 3 recovery 1 setup 1.
ata2.00: configured for MWDMA2
ata2.01: configured for MWDMA2
scsi 1:0:0:0: Direct-Access     ATA      Maxtor 6E040L0   NAR6 PQ: 0 ANSI: 5
scsi 1:0:1:0: CD-ROM            E-IDE    CD-ROM 56X/AKH   A8E  PQ: 0 ANSI: 5
Driver 'sd' needs updating - please use bus_type methods
sd 0:0:0:0: [sda] 8404830 512-byte hardware sectors: (4.30 GB/4.00 GiB)
sd 1:0:0:0: [sdb] 80293248 512-byte hardware sectors: (41.1 GB/38.2 GiB)
sd 0:0:0:0: [sda] Write Protect is off
sd 0:0:0:0: [sda] Mode Sense: 00 3a 00 00
sd 1:0:0:0: [sdb] Write Protect is off
sd 1:0:0:0: [sdb] Mode Sense: 00 3a 00 00
sd 0:0:0:0: [sda] Write cache: disabled, read cache: enabled, doesn't support DPO or FUA
sd 1:0:0:0: [sdb] Write cache: enabled, read cache: enabled, doesn't support DPO or FUA
 sdb:<6> sda: sdb1 sdb2 sdb3 sdb4 sdb5
 sda1 sda2 sda3 sda4
sd 0:0:0:0: [sda] Attached SCSI disk
sd 1:0:0:0: [sdb] Attached SCSI disk
Driver 'sr' needs updating - please use bus_type methods
sr0: scsi3-mmc drive: 0x/52x cd/rw xa/form2 cdda tray
Uniform CD-ROM driver Revision: 3.20
sr 1:0:1:0: Attached scsi CD-ROM sr0
sd 0:0:0:0: Attached scsi generic sg0 type 0
sd 1:0:0:0: Attached scsi generic sg1 type 0
sr 1:0:1:0: Attached scsi generic sg2 type 5

Patch

Index: b/drivers/ide/ide-probe.c
===================================================================
--- a/drivers/ide/ide-probe.c
+++ b/drivers/ide/ide-probe.c
@@ -1359,6 +1359,9 @@  int ide_host_register(struct ide_host *h
 	ide_hwif_t *hwif, *mate = NULL;
 	int i, j = 0;
 
+	/* setup only port 0 */
+	host->ports[1] = NULL;
+
 	ide_host_for_each_port(i, hwif, host) {
 		if (hwif == NULL) {
 			mate = NULL;