Bug 3880 - IRQ routing problem breaks sata_sil
Summary: IRQ routing problem breaks sata_sil
Status: RESOLVED PATCH_ALREADY_AVAILABLE
Alias: None
Product: Platform Specific/Hardware
Classification: Unclassified
Component: Other (show other bugs)
Hardware: i386 Linux
: P2 blocking
Assignee: Tejun Heo
URL:
Keywords:
: 3576 3671 (view as bug list)
Depends on:
Blocks:
 
Reported: 2004-12-09 08:51 UTC by Daniel Lindenaar
Modified: 2007-06-06 00:04 UTC (History)
3 users (show)

See Also:
Kernel Version: 2.6.{8,9}
Subsystem:
Regression: ---
Bisected commit-id:


Attachments

Description Daniel Lindenaar 2004-12-09 08:51:56 UTC
Distribution: Debian
Hardware Environment: AMD athlon, pci, sil3112, 2x maxtor 6B160M0
Software Environment: 
Problem Description:
The SIL pci card initialises fine, detects the two sata-buses, and errors after 
that. I've tried the two workarounds available in sata_sil.c for the sil-card 
for a certain Maxtor disc, as well as for certain seagate-disks, with the same 
result.
I've also patched libata-core.c to have a longer timeout in sata_phy_reset. 
Without this, the drives where simply not detected and there was a timeout.

I've got the latest bios and the settings conservative. also noapic and 
acpi=off didn't help.


the drives are detected, but accessing them results in a lockup of the process 
in (D)evice. 

the relevant part of the dmesg:

Dec  9 12:32:31 lilka kernel: sata_sil version 0.54
Dec  9 12:32:31 lilka kernel: ACPI: PCI interrupt 0000:00:08.0[A] -> GSI 11 
(level, low) -> IRQ 11
Dec  9 12:32:31 lilka kernel: ata1: SATA max UDMA/100 cmd 0xD4820080 ctl 
0xD482008A bmdma 0xD4820000 irq 11
Dec  9 12:32:31 lilka kernel: ata2: SATA max UDMA/100 cmd 0xD48200C0 ctl 
0xD48200CA bmdma 0xD4820008 irq 11
Dec  9 12:32:31 lilka kernel: irq 11: nobody cared!
Dec  9 12:32:31 lilka kernel:  [__report_bad_irq+42/144] 
__report_bad_irq+0x2a/0x90
Dec  9 12:32:31 lilka kernel:  [note_interrupt+108/160] note_interrupt+0x6c/0xa0
Dec  9 12:32:31 lilka kernel:  [do_IRQ+273/288] do_IRQ+0x111/0x120
Dec  9 12:32:31 lilka kernel:  [common_interrupt+24/32] 
common_interrupt+0x18/0x20
Dec  9 12:32:31 lilka kernel:  [__do_softirq+66/176] __do_softirq+0x42/0xb0
Dec  9 12:32:31 lilka kernel:  [do_softirq+45/48] do_softirq+0x2d/0x30
Dec  9 12:32:31 lilka kernel:  [do_IRQ+245/288] do_IRQ+0xf5/0x120
Dec  9 12:32:31 lilka kernel:  [common_interrupt+24/32] 
common_interrupt+0x18/0x20
Dec  9 12:32:31 lilka kernel:  [delay_tsc+20/32] delay_tsc+0x14/0x20
Dec  9 12:32:31 lilka kernel:  [__delay+18/32] __delay+0x12/0x20
Dec  9 12:32:31 lilka kernel:  [ata_busy_sleep+29/304] ata_busy_sleep+0x1d/0x130
Dec  9 12:32:31 lilka kernel:  [ata_dev_identify+217/1520] 
ata_dev_identify+0xd9/0x5f0
Dec  9 12:32:31 lilka kernel:  [__delay+18/32] __delay+0x12/0x20
Dec  9 12:32:31 lilka kernel:  [ata_bus_reset+310/544] ata_bus_reset+0x136/0x220
Dec  9 12:32:31 lilka kernel:  [sata_phy_reset+190/304] 
sata_phy_reset+0xbe/0x130
Dec  9 12:32:31 lilka kernel:  [ata_bus_probe+57/176] ata_bus_probe+0x39/0xb0
Dec  9 12:32:31 lilka kernel:  [ata_device_add+444/608] 
ata_device_add+0x1bc/0x260
Dec  9 12:32:31 lilka kernel:  [ata_interrupt+0/432] ata_interrupt+0x0/0x1b0
Dec  9 12:32:31 lilka kernel:  [sil_init_one+625/784] sil_init_one+0x271/0x310
Dec  9 12:32:31 lilka kernel:  [pci_device_probe_static+82/112] 
pci_device_probe_static+0x52/0x70
Dec  9 12:32:31 lilka kernel:  [__pci_device_probe+60/80] 
__pci_device_probe+0x3c/0x50
Dec  9 12:32:31 lilka kernel:  [pci_device_probe+44/80] 
pci_device_probe+0x2c/0x50
Dec  9 12:32:31 lilka kernel:  [bus_match+63/112] bus_match+0x3f/0x70
Dec  9 12:32:31 lilka kernel:  [driver_attach+89/144] driver_attach+0x59/0x90
Dec  9 12:32:31 lilka kernel:  [bus_add_driver+146/192] bus_add_driver+0x92/0xc0
Dec  9 12:32:31 lilka kernel:  [pci_register_driver+108/160] 
pci_register_driver+0x6c/0xa0
Dec  9 12:32:31 lilka kernel:  [sil_init+15/32] sil_init+0xf/0x20
Dec  9 12:32:31 lilka kernel:  [do_initcalls+43/192] do_initcalls+0x2b/0xc0
Dec  9 12:32:31 lilka kernel:  [init_workqueues+23/46] init_workqueues+0x17/0x2e
Dec  9 12:32:31 lilka kernel:  [init+132/448] init+0x84/0x1c0
Dec  9 12:32:31 lilka kernel:  [init+0/448] init+0x0/0x1c0
Dec  9 12:32:31 lilka kernel:  [kernel_thread_helper+5/20] 
kernel_thread_helper+0x5/0x14
Dec  9 12:32:31 lilka kernel: handlers:
Dec  9 12:32:31 lilka kernel: [ata_interrupt+0/432] (ata_interrupt+0x0/0x1b0)
Dec  9 12:32:31 lilka kernel: Disabling IRQ #11
Dec  9 12:32:31 lilka kernel: ata1: dev 0 cfg 49:2f00 82:7c6b 83:7f09 84:4063 
85:7c69 86:3e01 87:4063 88:207f
Dec  9 12:32:31 lilka kernel: ata1: dev 0 ATA, max UDMA/133, 320173056 sectors: 
lba48
Dec  9 12:32:31 lilka kernel: ata1: dev 0 configured for UDMA/100
Dec  9 12:32:31 lilka kernel: scsi0 : sata_sil
Dec  9 12:32:31 lilka kernel: ata2: dev 0 cfg 49:2f00 82:7c6b 83:7f09 84:4063 
85:7c69 86:3e01 87:4063 88:207f
Dec  9 12:32:31 lilka kernel: ata2: dev 0 ATA, max UDMA/133, 320173056 sectors: 
lba48
Dec  9 12:32:31 lilka kernel: ata2: dev 0 configured for UDMA/100
Dec  9 12:32:31 lilka kernel: scsi1 : sata_sil
Dec  9 12:32:31 lilka kernel:   Vendor: ATA       Model: Maxtor 6B160M0    Rev: 
BANC
Dec  9 12:32:31 lilka kernel:   Type:   Direct-Access                      ANSI 
SCSI revision: 05
Dec  9 12:32:31 lilka kernel:   Vendor: ATA       Model: Maxtor 6B160M0    Rev: 
BANC
Dec  9 12:32:31 lilka kernel:   Type:   Direct-Access                      ANSI 
SCSI revision: 05
Dec  9 12:32:31 lilka kernel: SCSI device sda: 320173056 512-byte hdwr sectors 
(163929 MB)
Dec  9 12:32:31 lilka kernel: SCSI device sda: drive cache: write back
Dec  9 12:32:31 lilka kernel:  sda:<3>ata1: command 0x25 timeout, stat 0x50 
host_stat 0x64
Dec  9 12:32:31 lilka kernel:  unknown partition table
Dec  9 12:32:31 lilka kernel: Attached scsi disk sda at scsi0, channel 0, id 0, 
lun 0
Dec  9 12:32:31 lilka kernel: SCSI device sdb: 320173056 512-byte hdwr sectors 
(163929 MB)
Dec  9 12:32:31 lilka kernel: SCSI device sdb: drive cache: write back
Dec  9 12:32:31 lilka kernel:  sdb:<3>ata2: command 0x25 timeout, stat 0x50 
host_stat 0x64
Dec  9 12:32:31 lilka kernel:  unknown partition table
Dec  9 12:32:31 lilka kernel: Attached scsi disk sdb at scsi1, channel 0, id 0, 
lun 0


Steps to reproduce:
Comment 1 Achim Schaefer 2005-03-21 05:22:57 UTC
Looks for me like bug 3576.

How could mark one of these as duplicate?
Comment 2 Jeff Garzik 2005-06-04 00:37:26 UTC
*** Bug 3576 has been marked as a duplicate of this bug. ***
Comment 3 Jeff Garzik 2005-06-04 00:38:12 UTC
*** Bug 3671 has been marked as a duplicate of this bug. ***
Comment 4 Paulo 2005-07-31 13:07:40 UTC
I would like to add/confirm that this bug is still present in kernels 2.6.11 and
2.6.12 (the last I've tried is 2.6.12.3). Also, it's present in the Fedora 4
distribution, which uses kernel 2.6.11-1.1369_FC4 (a patched 2.6.11). With the
SATA hard disk plugged in, my system freezes after disabling IRQ 11, just as in
the bug description. It might be of interest to know that the so-called "old"
SATA driver in kernel configuration works fine -- the old driver is the one that
works with IDE instead of SCSI, and doesn't use libata. With that old driver, my
hard disk shows up as "hdc" and I get the following successful messages from dmesg:

SiI3112 Serial ATA: IDE controller at PCI slot 0000:03:00.0
PCI: Enabling device 0000:03:00.0 (0000 -> 0003)
ACPI: PCI Interrupt 0000:03:00.0[A] -> Link [LNKD] -> GSI 11 (level, low) -> IRQ 11
SiI3112 Serial ATA: chipset revision 1
PCI: Setting latency timer of device 0000:03:00.0 to 64
SiI3112 Serial ATA: 100% native mode on irq 11
    ide1: MMIO-DMA , BIOS settings: hdc:pio, hdd:pio
    ide2: MMIO-DMA , BIOS settings: hde:pio, hdf:pio
Probing IDE interface ide1...
hdc: ST3120827AS, ATA DISK drive
hdc: applying pessimistic Seagate errata fix
ide1 at 0xf8802080-0xf8802087,0xf880208a on irq 11
hdc: max request size: 7KiB
hdc: 234441648 sectors (120034 MB) w/8192KiB Cache, CHS=16383/255/63
hdc: cache flushes supported
 hdc: hdc1 hdc2 hdc3 hdc4

My hard disk is a Seagate ST3120827AS. Thanks.
Comment 5 Jeff Garzik 2005-07-31 13:29:58 UTC
Does the problem go away if you boot an SMP kernel?

Or enable IOAPIC on uniprocessor?
Comment 6 Paulo 2005-08-01 05:18:08 UTC
Hello Garzik. Enabling IOAPIC on uniprocessor doesn't seem to make any difference.
I've just tested it with IOAPIC enabled in kernel 2.6.12-3, in a Toshiba Laptop.
Even though the BIOS doesn't have any option to enable APIC, I have used the
'lapic' kernel option and dmesg confirms that IOAPIC was enabled:

------------------------
Kernel command line: ro root=/dev/hda3 lapic
Local APIC disabled by BIOS -- reenabling.
Found and enabled local APIC!
mapped APIC to ffffd000 (fee00000)
------------------------

When I boot with the SATA HDD plugged in, the system freezes. However, if I plug
the HDD after booting, the system doesn't freeze but gets extremely slow, losing
keyboard strokes and ignoring some mouse movements (both my keyboard and mouse
are USB). I was able to get this copy from the text console output when I
plugged the HDD with 2.6.12.3/IOAPIC:

------------------------
PCI: Enabling device 0000:03:00.0 (0000 -> 0003)
sata_sil(0000:03:00.0): cache line size not set.  Driver may not function
irq 11: nobody cared!
 [<c0157604>] __report_bad_irq+0x24/0x90
 [<c015770b>] note_interrupt+0x6b/0x90
 [<c0156c62>] __do_IRQ+0x322/0x370
 [<c01063c3>] do_IRQ+0x53/0xa0
 =======================
 [<c0104552>] common_interrupt+0x1a/0x20
 [<c012e06e>] __do_softirq+0x2e/0xa0
 [<c01064fe>] do_softirq+0x4e/0x60
 =======================
 [<c01063ca>] do_IRQ+0x5a/0xa0
 [<c0104552>] common_interrupt+0x1a/0x20
 [<c0291762>] acpi_processor_idle+0x10e/0x24c
 [<c01010d4>] cpu_idle+0x34/0x50
 [<c050082f>] start_kernel+0x15f/0x1c0
 [<c05003b0>] unknown_bootoption+0x0/0x1e0
handlers:
[<c0342330>] (yenta_interrupt+0x0/0x30)
[<f89087d0>] (snd_intel8x0_interrupt+0x0/0x3a0 [snd_intel8x0])
[<f89125d0>] (snd_intel8x0_interrupt+0x0/0x5e0 [snd_intel8x0m])
[<c034bcb0>] (usb_hcd_irq+0x0/0x80)
[<c034bcb0>] (usb_hcd_irq+0x0/0x80)
[<c034bcb0>] (usb_hcd_irq+0x0/0x80)
[<c034bcb0>] (usb_hcd_irq+0x0/0x80)
[<c03239f0>] (ata_interrupt+0x0/0x210)
Disabling IRQ #11
------------------------

Notice the line "sata_sil(0000:03:00.0): cache line size not set.  Driver may
not function"  It might be a clue, I have no idea.

Thank you.
Comment 7 xgizzmo 2005-08-06 17:25:47 UTC
Hello Garzik,  
I have that same issue (Disabling IRQ #10) with my on board Sil 3112A 
chipset(intel D845PEBT2 mobo). 
2.6.12.3 Kernel with SMP enabled the driver works, Without SMP the driver will 
not work and dies with the Disabling IRQ #10 message. 
The SMP option was the only thing changed between the working and non-working 
kernel. I can try and provide any infomation you request. 
  
  
Comment 8 tulear 2005-08-17 07:56:06 UTC
I tried with latest Mandriva cooker (2.6.12-9), no changes without or with   
smp :-(   
Comment 9 tulear 2005-08-21 09:57:26 UTC
Maybe my experience can be usefull : I finally found a way to use my sata disk 
with sil312 : enabling ACPI (Mandriva cooker kernel 2.6.12-10mdk) I'haven't got 
the famous "disabling IRQ11" during boot , even if disk is not detected : I 
needed to rmmod and modprobe sata_sil to be able to mount my partitions from 
sata disk 
Comment 10 Tejun Heo 2007-06-06 00:03:45 UTC
This should have been fixed in new EH which uses controller specific irq mask
and pending registers.  Please reopen if 2.6.21 still doesn't work.

Note You need to log in before you can comment on or make changes to this bug.