Tejun Heo
459ad68893
libata: kill spurious NCQ completion detection
...
Spurious NCQ completion detection implemented in ahci was incorrect.
On AHCI receving and processing FISes and raising interrupts are not
interlocked and spurious interrupts are expected.
For example, if an interrupt occurs while interrupt handler is running
and the running interrupt handler handles the event the new IRQ
indicated, after IRQ handler finishes, it will be executed again
because IRQ pending bit is set by the new interrupt but there won't be
anything to process.
Please read the following message for more information.
http://article.gmane.org/gmane.linux.ide/26012
This patch...
* Removes all spurious IRQ whining from ahci. Spurious NCQ completion
detection was completely wrong. Spurious D2H Register FIS taught us
that some early drives send spurious D2H Register FIS with I bit set
while NCQ commands are in progress but none of recent drives does
that and even the ones which show such behavior can do NCQ fine.
* Kills all NCQ blacklist entries which were added because of spurious
NCQ completions. I tracked down each commit and verified all
removed ones are actually added because of spurious completions.
WD740ADFD-00NLR1 wasn't deleted but moved upward because the drive
not only had spurious NCQ completions but also is slow on sequential
data transfers if NCQ is enabled.
Maxtor 7V300F0 was added by 0e3dbc01d5
from Alan Cox. I can only find evidences that the drive only had
troubles with spuruious completions by searching the mailing list.
This entry needs to be verified and removed if it doesn't have other
NCQ related problems.
Signed-off-by: Tejun Heo <htejun@gmail.com>
Cc: Alan Cox <alan@lxorguk.ukuu.org.uk>
Signed-off-by: Jeff Garzik <jeff@garzik.org>
2007-12-07 15:27:54 -05:00
..
ahci.c
libata: kill spurious NCQ completion detection
2007-12-07 15:27:54 -05:00
ata_generic.c
libata: Switch most of the remaining SFF drivers to ata_sff_port_start
2007-10-12 14:55:36 -04:00
ata_piix.c
ata_piix: add Toshiba Tecra M4 to broken suspend list
2007-12-07 15:27:54 -05:00
Kconfig
Update libata driver for bf548 atapi controller against the 2.6.24 tree.
2007-10-17 20:49:02 -04:00
libata-acpi.c
libata: Don't fail device revalidation for bad _GTF methods
2007-11-10 00:31:27 -05:00
libata-core.c
libata: kill spurious NCQ completion detection
2007-12-07 15:27:54 -05:00
libata-eh.c
libata: report protocol and full CDB on error
2007-12-01 17:35:58 -05:00
libata-pmp.c
libata: use ata_exec_internal() for PMP register access
2007-10-12 14:55:47 -04:00
libata-scsi.c
libata: bump transfer chunk size if it's odd
2007-11-26 11:03:40 -05:00
libata-sff.c
[libata] checkpatch-inspired cleanups
2007-10-23 20:59:42 -04:00
libata.h
[libata] Link power management infrastructure
2007-10-29 11:00:35 -04:00
Makefile
drivers/ata: add support to Freescale 3.0Gbps SATA Controller
2007-10-17 20:49:02 -04:00
pata_acpi.c
[libata] fix 'if(' and similar areas that lack whitespace
2007-10-29 06:15:27 -04:00
pata_ali.c
pata_ali: trim trailing whitespace (fix checkpatch complaints)
2007-11-23 21:08:42 -05:00
pata_amd.c
pata_amd/pata_via: de-couple programming of PIO/MWDMA and UDMA timings
2007-12-04 14:11:36 -05:00
pata_artop.c
libata: Switch most of the remaining SFF drivers to ata_sff_port_start
2007-10-12 14:55:36 -04:00
pata_at32.c
Several fixes for the AVR32 PATA driver
2007-12-01 17:35:58 -05:00
pata_atiixp.c
pata_atiixp: Audit notes on locking
2007-10-12 14:55:42 -04:00
pata_bf54x.c
Set proper ATA UDMA mode for bf548 according to system clock.
2007-12-01 17:35:58 -05:00
pata_cmd64x.c
pata_cmd64x.c typo fix
2007-10-20 01:02:48 +02:00
pata_cmd640.c
libata: Switch most of the remaining SFF drivers to ata_sff_port_start
2007-10-12 14:55:36 -04:00
pata_cs5520.c
[libata] struct pci_dev related cleanups
2007-10-12 14:55:47 -04:00
pata_cs5530.c
Fix misspellings of "system", "controller", "interrupt" and "necessary".
2007-10-19 23:10:43 +02:00
pata_cs5535.c
Fix misspellings of "system", "controller", "interrupt" and "necessary".
2007-10-19 23:10:43 +02:00
pata_cs5536.c
pata_cs5536: MWDMA fix
2007-10-19 22:55:03 -04:00
pata_cypress.c
libata: Switch most of the remaining SFF drivers to ata_sff_port_start
2007-10-12 14:55:36 -04:00
pata_efar.c
libata: Switch most of the remaining SFF drivers to ata_sff_port_start
2007-10-12 14:55:36 -04:00
pata_hpt3x2n.c
libata: Switch most of the remaining SFF drivers to ata_sff_port_start
2007-10-12 14:55:36 -04:00
pata_hpt3x3.c
libata: implement and use ata_port_desc() to report port configuration
2007-10-12 14:55:37 -04:00
pata_hpt37x.c
pata_hpt37x: Fix cable detect bug spotted by Sergei
2007-11-23 19:33:27 -05:00
pata_hpt366.c
libata: Switch most of the remaining SFF drivers to ata_sff_port_start
2007-10-12 14:55:36 -04:00
pata_icside.c
Fix pata_icside build for recent libata API changes
2007-10-25 02:05:26 -04:00
pata_isapnp.c
pata_isapnp: Polled devices
2007-11-23 19:33:27 -05:00
pata_it821x.c
Fix misspellings of "system", "controller", "interrupt" and "necessary".
2007-10-19 23:10:43 +02:00
pata_it8213.c
libata: Switch most of the remaining SFF drivers to ata_sff_port_start
2007-10-12 14:55:36 -04:00
pata_ixp4xx_cf.c
libata: implement and use ata_port_desc() to report port configuration
2007-10-12 14:55:37 -04:00
pata_jmicron.c
pata_jmicron: fix disabled port handling in jmicron_pre_reset()
2007-11-23 19:23:55 -05:00
pata_legacy.c
libata: implement and use ata_port_desc() to report port configuration
2007-10-12 14:55:37 -04:00
pata_marvell.c
libata: Switch most of the remaining SFF drivers to ata_sff_port_start
2007-10-12 14:55:36 -04:00
pata_mpc52xx.c
mpc52xx-ata: fix compile warning (unused variable)
2007-10-14 08:57:30 -07:00
pata_mpiix.c
Fix misspellings of "system", "controller", "interrupt" and "necessary".
2007-10-19 23:10:43 +02:00
pata_netcell.c
libata: Switch most of the remaining SFF drivers to ata_sff_port_start
2007-10-12 14:55:36 -04:00
pata_ns87410.c
Fix misspellings of "system", "controller", "interrupt" and "necessary".
2007-10-19 23:10:43 +02:00
pata_ns87415.c
pata_ns87415: define SUPERIO_IDE_MAX_RETRIES
2007-10-29 06:21:33 -04:00
pata_oldpiix.c
Fix misspellings of "system", "controller", "interrupt" and "necessary".
2007-10-19 23:10:43 +02:00
pata_opti.c
libata: Switch most of the remaining SFF drivers to ata_sff_port_start
2007-10-12 14:55:36 -04:00
pata_optidma.c
[libata] fix 'if(' and similar areas that lack whitespace
2007-10-29 06:15:27 -04:00
pata_pcmcia.c
[libata] Address some checkpatch-spotted issues
2007-10-29 06:15:27 -04:00
pata_pdc202xx_old.c
[libata] fix 'if(' and similar areas that lack whitespace
2007-10-29 06:15:27 -04:00
pata_pdc2027x.c
[libata] fix 'if(' and similar areas that lack whitespace
2007-10-29 06:15:27 -04:00
pata_platform.c
libata: pata_platform: Support polling-mode configuration.
2007-11-08 13:08:41 -05:00
pata_qdi.c
libata: implement and use ata_port_desc() to report port configuration
2007-10-12 14:55:37 -04:00
pata_radisys.c
Fix misspellings of "system", "controller", "interrupt" and "necessary".
2007-10-19 23:10:43 +02:00
pata_rz1000.c
libata: Switch most of the remaining SFF drivers to ata_sff_port_start
2007-10-12 14:55:36 -04:00
pata_sc1200.c
Fix misspellings of "system", "controller", "interrupt" and "necessary".
2007-10-19 23:10:43 +02:00
pata_scc.c
libata: implement ata_wait_after_reset()
2007-10-29 06:15:27 -04:00
pata_serverworks.c
pata_serverworks: Fix problem with some drive combinations
2007-11-05 18:08:46 -05:00
pata_sil680.c
pata_sil680: kill bogus reset code (take 2)
2007-11-23 19:23:55 -05:00
pata_sis.c
pata_sis.c: Add Packard Bell EasyNote K5305 to laptops
2007-11-19 12:28:11 +09:00
pata_sl82c105.c
libata: Switch most of the remaining SFF drivers to ata_sff_port_start
2007-10-12 14:55:36 -04:00
pata_triflex.c
libata: Switch most of the remaining SFF drivers to ata_sff_port_start
2007-10-12 14:55:36 -04:00
pata_via.c
pata_amd/pata_via: de-couple programming of PIO/MWDMA and UDMA timings
2007-12-04 14:11:36 -05:00
pata_winbond.c
[libata] fix 'if(' and similar areas that lack whitespace
2007-10-29 06:15:27 -04:00
pdc_adma.c
[libata] Address some checkpatch-spotted issues
2007-10-29 06:15:27 -04:00
sata_fsl.c
ata/sata_fsl: Remove ata_scsi_suspend/resume callbacks
2007-11-03 08:46:29 -04:00
sata_inic162x.c
[libata] Address some checkpatch-spotted issues
2007-10-29 06:15:27 -04:00
sata_mv.c
sata_mv: Warn about HPT RocketRAID BIOS treatment of "Legacy" drives
2007-12-04 14:07:52 -05:00
sata_nv.c
sata_nv: don't use legacy DMA in ADMA mode (v3)
2007-12-04 14:01:18 -05:00
sata_promise.c
sata_promise: fix endianess bug in ASIC PRD bug workaround
2007-11-03 08:46:54 -04:00
sata_promise.h
sata_qstor.c
libata sata_qstor conversion to new error handling (EH).
2007-11-08 13:08:41 -05:00
sata_sil.c
[libata] Address some checkpatch-spotted issues
2007-10-29 06:15:27 -04:00
sata_sil24.c
sata_sil24: fix sg table sizing
2007-11-23 19:23:55 -05:00
sata_sis.c
[libata] Address some checkpatch-spotted issues
2007-10-29 06:15:27 -04:00
sata_svw.c
[libata] Address some checkpatch-spotted issues
2007-10-29 06:15:27 -04:00
sata_sx4.c
[libata] Address some checkpatch-spotted issues
2007-10-29 06:15:27 -04:00
sata_uli.c
[libata] Address some checkpatch-spotted issues
2007-10-29 06:15:27 -04:00
sata_via.c
[libata] Address some checkpatch-spotted issues
2007-10-29 06:15:27 -04:00
sata_vsc.c
[libata] Address some checkpatch-spotted issues
2007-10-29 06:15:27 -04:00
sis.h
libata: PATA-mode fixes for sis_sata
2007-07-02 10:17:42 -04:00