1
linux/drivers/ata
Robert Hancock 5bd28a4b6e sata_nv: cleanup ADMA error handling
This cleans up a few issues with the error handling in sata_nv in ADMA mode
to make it more consistent with other NCQ-capable drivers like ahci and
sata_sil24:

- When a command failed, we would effectively set AC_ERR_DEV on the
  queued command always.  In the case of NCQ commands this prevents libata
  from doing a log page query to determine the details of the failed
  command, since it thinks we've already analyzed.  Just set flags in the
  port ehi->err_mask, then freeze or abort and let libata figure out what
  went wrong.

- The code handled NV_ADMA_STAT_CPBERR as a "really bad error" which
  caused it to set error flags on every queued command.  I don't know
  exactly what this flag means (no docs, grr!) but from what I can guess
  from the standard ADMA spec, it just means that one or more of the CPBs
  had an error, so we just need to go through and do our normal checks in
  this case.

- In the error_handler function the code would always dump the state of
  all the CPBs.  This output seems redundant at this point since libata
  already dumps the state of all active commands on errors (and it also
  triggers at times when it shouldn't, like when suspending).  Take this
  out.

[akpm@osdl.org: many coding-style fixes]
Signed-off-by: Robert Hancock <hancockr@shaw.ca>
Cc: Jeff Garzik <jeff@garzik.org>
Cc: Tejun Heo <htejun@gmail.com>
Cc: Allen Martin <AMartin@nvidia.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Jeff Garzik <jeff@garzik.org>
2007-02-09 17:39:39 -05:00
..
ahci.c libata: add another IRQ calls (libata drivers) 2007-02-09 17:39:38 -05:00
ata_generic.c libata: add another IRQ calls (libata drivers) 2007-02-09 17:39:38 -05:00
ata_piix.c libata: add another IRQ calls (libata drivers) 2007-02-09 17:39:38 -05:00
Kconfig Kconfig: clarify ATA_PIIX description 2007-02-09 17:39:39 -05:00
libata-core.c libata: add 150ms between completion of hardreset and status checking 2007-02-09 17:39:38 -05:00
libata-eh.c libata: kill qc->nsect and cursect 2007-02-09 17:39:31 -05:00
libata-scsi.c libata: update libata core layer to use devres 2007-02-09 17:39:37 -05:00
libata-sff.c libata: add another IRQ calls (core and headers) 2007-02-09 17:39:38 -05:00
libata.h [libata] Shuffle DRV_xxx in core and SiS drivers, to kill warnings 2007-02-09 17:39:37 -05:00
Makefile sata_inic162x: finally, driver for initio 162x SATA controllers, take #2 2007-02-09 17:39:31 -05:00
pata_ali.c libata: add another IRQ calls (libata drivers) 2007-02-09 17:39:38 -05:00
pata_amd.c libata: add another IRQ calls (libata drivers) 2007-02-09 17:39:38 -05:00
pata_artop.c libata: add another IRQ calls (libata drivers) 2007-02-09 17:39:38 -05:00
pata_atiixp.c libata: add another IRQ calls (libata drivers) 2007-02-09 17:39:38 -05:00
pata_cmd64x.c libata: add another IRQ calls (libata drivers) 2007-02-09 17:39:38 -05:00
pata_cs5520.c libata: add another IRQ calls (libata drivers) 2007-02-09 17:39:38 -05:00
pata_cs5530.c libata: add another IRQ calls (libata drivers) 2007-02-09 17:39:38 -05:00
pata_cs5535.c libata: add another IRQ calls (libata drivers) 2007-02-09 17:39:38 -05:00
pata_cypress.c libata: add another IRQ calls (libata drivers) 2007-02-09 17:39:38 -05:00
pata_efar.c libata: add another IRQ calls (libata drivers) 2007-02-09 17:39:38 -05:00
pata_hpt3x2n.c libata: add another IRQ calls (libata drivers) 2007-02-09 17:39:38 -05:00
pata_hpt3x3.c libata: add another IRQ calls (libata drivers) 2007-02-09 17:39:38 -05:00
pata_hpt37x.c libata: add another IRQ calls (libata drivers) 2007-02-09 17:39:38 -05:00
pata_hpt366.c libata: add another IRQ calls (libata drivers) 2007-02-09 17:39:38 -05:00
pata_isapnp.c libata: add another IRQ calls (libata drivers) 2007-02-09 17:39:38 -05:00
pata_it821x.c libata: add another IRQ calls (libata drivers) 2007-02-09 17:39:38 -05:00
pata_it8213.c libata: add another IRQ calls (libata drivers) 2007-02-09 17:39:38 -05:00
pata_ixp4xx_cf.c libata: add another IRQ calls (libata drivers) 2007-02-09 17:39:38 -05:00
pata_jmicron.c libata: add another IRQ calls (libata drivers) 2007-02-09 17:39:38 -05:00
pata_legacy.c libata: add another IRQ calls (libata drivers) 2007-02-09 17:39:38 -05:00
pata_marvell.c libata: add another IRQ calls (libata drivers) 2007-02-09 17:39:38 -05:00
pata_mpc52xx.c libata: add another IRQ calls (libata drivers) 2007-02-09 17:39:38 -05:00
pata_mpiix.c (2.6.20) pata_mpiix: probing cleanup (resend) 2007-02-09 17:39:39 -05:00
pata_netcell.c libata: add another IRQ calls (libata drivers) 2007-02-09 17:39:38 -05:00
pata_ns87410.c libata: add another IRQ calls (libata drivers) 2007-02-09 17:39:38 -05:00
pata_oldpiix.c (2.6.20) pata_oldpiix: fix PIO2 underclocking 2007-02-09 17:39:39 -05:00
pata_opti.c libata: add another IRQ calls (libata drivers) 2007-02-09 17:39:38 -05:00
pata_optidma.c libata: add another IRQ calls (libata drivers) 2007-02-09 17:39:38 -05:00
pata_pcmcia.c libata: add another IRQ calls (libata drivers) 2007-02-09 17:39:38 -05:00
pata_pdc202xx_old.c libata: add another IRQ calls (libata drivers) 2007-02-09 17:39:38 -05:00
pata_pdc2027x.c libata: add another IRQ calls (libata drivers) 2007-02-09 17:39:38 -05:00
pata_platform.c libata: add another IRQ calls (libata drivers) 2007-02-09 17:39:38 -05:00
pata_qdi.c libata: add another IRQ calls (libata drivers) 2007-02-09 17:39:38 -05:00
pata_radisys.c libata: add another IRQ calls (libata drivers) 2007-02-09 17:39:38 -05:00
pata_rz1000.c libata: add another IRQ calls (libata drivers) 2007-02-09 17:39:38 -05:00
pata_sc1200.c libata: add another IRQ calls (libata drivers) 2007-02-09 17:39:38 -05:00
pata_serverworks.c libata: add another IRQ calls (libata drivers) 2007-02-09 17:39:38 -05:00
pata_sil680.c libata: add another IRQ calls (libata drivers) 2007-02-09 17:39:38 -05:00
pata_sis.c libata: add another IRQ calls (libata drivers) 2007-02-09 17:39:38 -05:00
pata_sl82c105.c pata_sl82c105: wrong assumptions about compatible PIO modes 2007-02-09 17:39:38 -05:00
pata_triflex.c libata: add another IRQ calls (libata drivers) 2007-02-09 17:39:38 -05:00
pata_via.c libata: add another IRQ calls (libata drivers) 2007-02-09 17:39:38 -05:00
pata_winbond.c libata: add another IRQ calls (libata drivers) 2007-02-09 17:39:38 -05:00
pdc_adma.c libata: add another IRQ calls (libata drivers) 2007-02-09 17:39:38 -05:00
sata_inic162x.c sata_inic162x: fix a few glitches in hardreset 2007-02-09 17:39:39 -05:00
sata_mv.c libata: add another IRQ calls (libata drivers) 2007-02-09 17:39:38 -05:00
sata_nv.c sata_nv: cleanup ADMA error handling 2007-02-09 17:39:39 -05:00
sata_promise.c libata: add another IRQ calls (libata drivers) 2007-02-09 17:39:38 -05:00
sata_promise.h Move libata to drivers/ata. 2006-08-10 07:31:37 -04:00
sata_qstor.c libata: add another IRQ calls (libata drivers) 2007-02-09 17:39:38 -05:00
sata_sil24.c libata: add another IRQ calls (libata drivers) 2007-02-09 17:39:38 -05:00
sata_sil.c libata: add another IRQ calls (libata drivers) 2007-02-09 17:39:38 -05:00
sata_sis.c libata: add another IRQ calls (libata drivers) 2007-02-09 17:39:38 -05:00
sata_svw.c libata: add another IRQ calls (libata drivers) 2007-02-09 17:39:38 -05:00
sata_sx4.c libata: add another IRQ calls (libata drivers) 2007-02-09 17:39:38 -05:00
sata_uli.c libata: add another IRQ calls (libata drivers) 2007-02-09 17:39:38 -05:00
sata_via.c libata: add another IRQ calls (libata drivers) 2007-02-09 17:39:38 -05:00
sata_vsc.c libata: add another IRQ calls (libata drivers) 2007-02-09 17:39:38 -05:00