kernel_optimize_test/drivers/ata
Tejun Heo e5005b15c9 libata: issue DIPM enable commands with LPM state updated
Low level drivers may behave differently depending on the current
link->lpm_policy.  During ata_eh_set_lpm(), DIPM enable commands are
issued after the successful completion of ap->ops->set_lpm(), which
means that the controller is already in the target state.  This causes
DIPM enable commands to be processed with mismatching controller power
state and link->lpm_policy value.

In ahci, link->lpm_policy is used to ignore certain PHY events if LPM
is enabled; however, as DIPM commands are issued with stale
link->lpm_policy, they sometimes end up triggering these conditions
and get aborted leading to LPM configuration failure.

Fix it by updating link->lpm_policy before issuing DIPM enable
commands.

Signed-off-by: Tejun Heo <tj@kernel.org>
Reported-by: Kyle McMartin <kyle@mcmartin.ca>
Cc: stable@kernel.org
Signed-off-by: Jeff Garzik <jgarzik@redhat.com>
2010-12-24 13:34:34 -05:00
..
ahci_platform.c libata: reimplement link power management 2010-10-21 20:21:04 -04:00
ahci.c libata: reimplement link power management 2010-10-21 20:21:04 -04:00
ahci.h libahci: fix result_tf handling after an ATA PIO data-in command 2010-10-21 21:17:00 -04:00
ata_generic.c ata: Intel IDE-R support 2010-10-21 20:21:05 -04:00
ata_piix.c ata_piix: Add device ID for ICH4-L 2010-10-21 20:21:05 -04:00
Kconfig pata_mpc52xx: driver needs BMDMA 2010-12-24 13:33:37 -05:00
libahci.c libahci: fix result_tf handling after an ATA PIO data-in command 2010-10-21 21:17:00 -04:00
libata-acpi.c gcc-4.6: ACPI: fix unused but set variables in ACPI 2010-08-15 00:53:08 -04:00
libata-core.c libata: no special completion processing for EH commands 2010-12-24 13:34:18 -05:00
libata-eh.c libata: issue DIPM enable commands with LPM state updated 2010-12-24 13:34:34 -05:00
libata-pmp.c libata: implement LPM support for port multipliers 2010-10-21 20:21:04 -04:00
libata-scsi.c [libata] remove SCSI host lock and serial number usage from ata_scsi_queuecmd 2010-11-17 12:03:58 -05:00
libata-sff.c libata-sff: fix HSM_ST_ERR handling in __ata_sff_port_intr() 2010-12-24 13:32:07 -05:00
libata-transport.c drivers/ata/libata-transport.c: include linux/slab.h 2010-10-21 20:21:04 -04:00
libata-transport.h [libata] Add ATA transport class 2010-10-21 20:21:03 -04:00
libata.h libata: implement cross-port EH exclusion 2010-10-21 20:21:05 -04:00
Makefile pata_mpc52xx: driver needs BMDMA 2010-12-24 13:33:37 -05:00
pata_acpi.c
pata_ali.c
pata_amd.c
pata_artop.c pata_artop: Fix device ID parity check 2010-09-09 14:19:18 -04:00
pata_at32.c
pata_at91.c
pata_atiixp.c
pata_atp867x.c
pata_bf54x.c Merge branch 'for-next' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/trivial 2010-10-24 13:41:39 -07:00
pata_cmd64x.c pata_cmd64x: revert commit d62f5576 2010-08-25 19:24:15 -04:00
pata_cmd640.c pata_cmd640: implement sff_irq_check() method 2010-10-21 20:21:05 -04:00
pata_cs5520.c
pata_cs5530.c
pata_cs5535.c
pata_cs5536.c pata_cs5536: Add support for non-X86_32 platforms 2010-12-24 13:33:23 -05:00
pata_cypress.c
pata_efar.c
pata_hpt3x2n.c
pata_hpt3x3.c
pata_hpt37x.c
pata_hpt366.c
pata_icside.c
pata_isapnp.c
pata_it821x.c Update broken web addresses in the kernel. 2010-10-18 11:03:14 +02:00
pata_it8213.c
pata_ixp4xx_cf.c
pata_jmicron.c
pata_legacy.c pata_legacy: fix CONFIG_PATA_WINBOND_VLB_MODULE test 2010-11-12 17:10:53 -05:00
pata_macio.c
pata_marvell.c
pata_mpc52xx.c of/device: Replace struct of_device with struct platform_device 2010-08-06 09:25:50 -06:00
pata_mpiix.c
pata_netcell.c
pata_ninja32.c
pata_ns87410.c
pata_ns87415.c
pata_octeon_cf.c drivers/ata/pata_octeon_cf.c: delete double assignment 2010-11-12 17:10:55 -05:00
pata_of_platform.c of/device: Replace struct of_device with struct platform_device 2010-08-06 09:25:50 -06:00
pata_oldpiix.c
pata_opti.c
pata_optidma.c
pata_palmld.c
pata_pcmcia.c pcmcia: move driver name to struct pcmcia_driver 2010-09-29 17:20:24 +02:00
pata_pdc202xx_old.c pata_pdc202xx_old: implement sff_irq_check() method 2010-10-21 20:21:06 -04:00
pata_pdc2027x.c
pata_piccolo.c
pata_platform.c
pata_pxa.c
pata_qdi.c
pata_radisys.c
pata_rb532_cf.c
pata_rdc.c
pata_rz1000.c
pata_samsung_cf.c libata: add @ap to ata_wait_register() and introduce ata_msleep() 2010-10-21 20:21:05 -04:00
pata_sc1200.c
pata_scc.c libata: add @ap to ata_wait_register() and introduce ata_msleep() 2010-10-21 20:21:05 -04:00
pata_sch.c
pata_serverworks.c
pata_sil680.c pata_sil680: implement sff_irq_check() method 2010-10-21 20:21:06 -04:00
pata_sis.c
pata_sl82c105.c pata_sl82c105: implement sff_irq_check() method 2010-10-21 20:21:06 -04:00
pata_triflex.c
pata_via.c libata,pata_via: revert ata_wait_idle() removal from ata_sff/via_tf_load() 2010-09-09 22:27:44 -04:00
pdc_adma.c
sata_dwc_460ex.c [libata] sata_dwc_460ex: signdness bug 2010-08-25 19:24:16 -04:00
sata_fsl.c libata: add @ap to ata_wait_register() and introduce ata_msleep() 2010-10-21 20:21:05 -04:00
sata_inic162x.c libata: add @ap to ata_wait_register() and introduce ata_msleep() 2010-10-21 20:21:05 -04:00
sata_mv.c libata: always use ata_qc_complete_multiple() for NCQ command completions 2010-10-21 20:21:03 -04:00
sata_nv.c libata: always use ata_qc_complete_multiple() for NCQ command completions 2010-10-21 20:21:03 -04:00
sata_promise.c
sata_promise.h
sata_qstor.c
sata_sil24.c libata: add @ap to ata_wait_register() and introduce ata_msleep() 2010-10-21 20:21:05 -04:00
sata_sil.c
sata_sis.c
sata_svw.c
sata_sx4.c
sata_uli.c
sata_via.c sata_via: apply magic FIFO fix to vt6420 too 2010-11-19 13:16:26 -05:00
sata_vsc.c
sis.h