1
linux/drivers/ata
Tejun Heo a51d644af6 libata: improve AC_ERR_DEV handling for ->post_internal_cmd
->post_internal_cmd is simplified EH for internal commands.  Its
primary mission is to stop the controller such that no rogue memory
access or other activities occur after the internal command is
released.  It may provide error diagnostics by setting qc->err_mask
but this hasn't been a requirement.

To ignore SETXFER failure for CFA devices, libata needs to know
whether a command was failed by the device or for any other reason.
ie. internal command needs to get AC_ERR_DEV right.

This patch makes the following changes to AC_ERR_DEV handling and
->post_internal_cmd semantics to accomodate this need and simplify
callback implementation.

1. As long as the correct bits in the result TF registers are set,
   there is no need to set AC_ERR_DEV explicitly.  libata EH core
   takes care of that for both normal and internal commands.

2. The only requirement for ->post_internal_cmd() is to put the
   controller into quiescent state.  It needs not to set any err_mask.

3. ata_exec_internal_sg() performs minimal error analysis such that
   AC_ERR_DEV is automatically set as long as result_tf is filled
   correctly.

Signed-off-by: Tejun Heo <htejun@gmail.com>
Signed-off-by: Jeff Garzik <jeff@garzik.org>
2007-04-28 14:16:02 -04:00
..
ahci.c libata: improve AC_ERR_DEV handling for ->post_internal_cmd 2007-04-28 14:16:02 -04:00
ata_generic.c pata: cable methods 2007-04-28 14:16:01 -04:00
ata_piix.c pata: cable methods 2007-04-28 14:16:01 -04:00
Kconfig libata/IDE: remove combined mode quirk 2007-04-28 14:15:59 -04:00
libata-acpi.c [libata] Disable ACPI by default; fix namespace problems 2007-03-28 01:57:37 -04:00
libata-core.c libata: improve AC_ERR_DEV handling for ->post_internal_cmd 2007-04-28 14:16:02 -04:00
libata-eh.c libata: improve AC_ERR_DEV handling for ->post_internal_cmd 2007-04-28 14:16:02 -04:00
libata-scsi.c libata: add support for READ/WRITE LONG 2007-04-28 14:16:01 -04:00
libata-sff.c libata: fix native mode disabled port handling 2007-04-28 14:16:02 -04:00
libata.h [libata] Disable ACPI by default; fix namespace problems 2007-03-28 01:57:37 -04:00
Makefile pata_cmd640: CMD640 PCI support 2007-04-28 14:15:55 -04:00
pata_ali.c pata_ali: remove all the crap again and switch to cable_detect method 2007-04-28 14:16:00 -04:00
pata_amd.c pata: cable methods 2007-04-28 14:16:01 -04:00
pata_artop.c [libata] More PATA driver ->cable_detect support 2007-04-28 14:15:57 -04:00
pata_atiixp.c pata_atiixp: support ->cable_detect 2007-04-28 14:15:57 -04:00
pata_cmd64x.c [libata] More PATA driver ->cable_detect support 2007-04-28 14:15:57 -04:00
pata_cmd640.c pata_cmd640: Multiple updates 2007-04-28 14:15:56 -04:00
pata_cs5520.c [libata] More PATA driver ->cable_detect support 2007-04-28 14:15:57 -04:00
pata_cs5530.c [libata] More PATA driver ->cable_detect support 2007-04-28 14:15:57 -04:00
pata_cs5535.c pata: cable methods 2007-04-28 14:16:01 -04:00
pata_cypress.c pata: cable methods 2007-04-28 14:16:01 -04:00
pata_efar.c pata_efar: support ->cable_detect 2007-04-28 14:15:57 -04:00
pata_hpt3x2n.c [libata] Update several PATA drivers for new ->cable_detect hook 2007-04-28 14:15:56 -04:00
pata_hpt3x3.c [libata] More PATA driver ->cable_detect support 2007-04-28 14:15:57 -04:00
pata_hpt37x.c libata: Change prototype of mode_filter to remove ata_port* 2007-04-28 14:15:58 -04:00
pata_hpt366.c pata: cable methods 2007-04-28 14:16:01 -04:00
pata_isapnp.c [libata] More PATA driver ->cable_detect support 2007-04-28 14:15:57 -04:00
pata_it821x.c [libata] Update several PATA drivers for new ->cable_detect hook 2007-04-28 14:15:56 -04:00
pata_it8213.c pata_it8213: Cable detect 2007-04-28 14:15:56 -04:00
pata_ixp4xx_cf.c [libata] More PATA driver ->cable_detect support 2007-04-28 14:15:57 -04:00
pata_jmicron.c [libata] pata_jmicron: build fix 2007-03-03 10:36:19 -05:00
pata_legacy.c [libata] More PATA driver ->cable_detect support 2007-04-28 14:15:57 -04:00
pata_marvell.c pata_marvell: Cable and reset fixes 2007-04-28 14:15:56 -04:00
pata_mpc52xx.c [libata] Update several PATA drivers for new ->cable_detect hook 2007-04-28 14:15:56 -04:00
pata_mpiix.c [libata] Update several PATA drivers for new ->cable_detect hook 2007-04-28 14:15:56 -04:00
pata_netcell.c pata_netcell: re-remove all the crud 2007-04-28 14:16:00 -04:00
pata_ns87410.c [libata] Update several PATA drivers for new ->cable_detect hook 2007-04-28 14:15:56 -04:00
pata_oldpiix.c [libata] Update several PATA drivers for new ->cable_detect hook 2007-04-28 14:15:56 -04:00
pata_opti.c [libata] Update several PATA drivers for new ->cable_detect hook 2007-04-28 14:15:56 -04:00
pata_optidma.c pata_optidma: rework for cable detect and to remove post_set_mode() 2007-04-28 14:16:01 -04:00
pata_pcmcia.c pcmcia - spot slave decode flaws (for testing) 2007-04-28 14:16:00 -04:00
pata_pdc202xx_old.c [libata] Update several PATA drivers for new ->cable_detect hook 2007-04-28 14:15:56 -04:00
pata_pdc2027x.c pata_pdc2027x: Updates 2007-04-28 14:16:01 -04:00
pata_platform.c pata_platform: Add cable_detect method 2007-04-28 14:15:57 -04:00
pata_qdi.c pata_qdI: restore cable detect 2007-04-28 14:16:00 -04:00
pata_radisys.c pata_radisys: support cable_detect 2007-04-28 14:15:57 -04:00
pata_rz1000.c pata_rz1000: support cable_detect 2007-04-28 14:15:57 -04:00
pata_sc1200.c pata_sc1200: restore cable type 2007-04-28 14:15:57 -04:00
pata_scc.c libata: add missing CONFIG_PM in LLDs 2007-03-02 18:30:35 -05:00
pata_serverworks.c libata: Change prototype of mode_filter to remove ata_port* 2007-04-28 14:15:58 -04:00
pata_sil680.c [libata] Update several PATA drivers for new ->cable_detect hook 2007-04-28 14:15:56 -04:00
pata_sis.c pata_sis: Clean up using cable_detect methods 2007-04-28 14:15:56 -04:00
pata_sl82c105.c pata_sl82c105: restore cable detect method 2007-04-28 14:16:00 -04:00
pata_triflex.c [libata] Update several PATA drivers for new ->cable_detect hook 2007-04-28 14:15:56 -04:00
pata_via.c pata_via: Use cable_detect method 2007-04-28 14:15:56 -04:00
pata_winbond.c pata_winbond 2007-04-28 14:16:01 -04:00
pdc_adma.c [libata] bump versions 2007-02-26 06:04:24 -05:00
sata_inic162x.c libata: improve AC_ERR_DEV handling for ->post_internal_cmd 2007-04-28 14:16:02 -04:00
sata_mv.c [libata] sata_mv: support ->cable_detect 2007-04-28 14:15:58 -04:00
sata_nv.c sata_nv: don't read shadow registers when in ADMA mode 2007-04-28 14:16:00 -04:00
sata_promise.c libata: improve AC_ERR_DEV handling for ->post_internal_cmd 2007-04-28 14:16:02 -04:00
sata_promise.h
sata_qstor.c [libata] bump versions 2007-02-26 06:04:24 -05:00
sata_sil24.c libata: improve AC_ERR_DEV handling for ->post_internal_cmd 2007-04-28 14:16:02 -04:00
sata_sil.c sata_sil: First step to removing ->post_set_mode 2007-04-28 14:15:58 -04:00
sata_sis.c [PATCH] trivial ATA iomem annotations 2007-03-14 15:27:50 -07:00
sata_svw.c [libata] bump versions 2007-02-26 06:04:24 -05:00
sata_sx4.c [libata] bump versions 2007-02-26 06:04:24 -05:00
sata_uli.c [libata] bump versions 2007-02-26 06:04:24 -05:00
sata_via.c [libata] Update several PATA drivers for new ->cable_detect hook 2007-04-28 14:15:56 -04:00
sata_vsc.c [libata] bump versions 2007-02-26 06:04:24 -05:00
sis.h SiS warning fixes 2007-02-21 04:58:17 -05:00