linux/drivers/ata
Pang Raymond 0516900adf AHCI: Clear GHC.IS to prevent unexpectly asserting INTx
Due to PCI subsystem behaviour, unloading AHCI driver will disable
MSI and enable INTx. When HBA supports MSIx or Multiple MSI, Driver's
irq handler doesn't clear GHC.IS register. It works well when reading or
writing data and GHC.IS is always non-zero. But when unloading driver
(or any other operation which causes disable MSIx and enable INTx), PCI
 subsystem uses config write(Rx04.bit10) to enable INTx. Because
GHC.IS is non-zero, HBA will falsely assume some port needs interrupt
service. Then it asserts INTx. To make things worse, when AHCI controller
shares the same interrupt pin with other PCI device, that PCI device's ISR
will be called and nobody de-asserts previous INTx.
This patch clears GHC.IS in ahci_port_stop() even when using MSIx or
MMSI to prevent this case. It ensures GHC.IS is zero before PCI subsystem
enables INTx.

tj: Minor updates to the comment.

Signed-off-by: Raymond Pang <raymond_rule@hotmail.com>
Signed-off-by: Tejun Heo <tj@kernel.org>
2016-07-20 11:10:10 -04:00
..
acard-ahci.c ahci: Store irq number in struct ahci_host_priv 2015-06-03 01:37:49 -04:00
ahci_brcm.c ata: ahci_brcm: Add support for Broadcom NSP SoC 2016-06-16 16:24:55 -04:00
ahci_ceva.c drivers: ata: add support for Ceva sata host controller 2015-06-10 11:15:17 +09:00
ahci_da850.c ata: ahci_platform: fix owner module reference mismatch for scsi host 2015-01-28 18:45:23 -05:00
ahci_imx.c ata: ahci_platform: fix owner module reference mismatch for scsi host 2015-01-28 18:45:23 -05:00
ahci_mvebu.c ata: ahci_mvebu: add support for Armada 3700 variant 2016-02-18 12:41:17 -05:00
ahci_octeon.c libata: support AHCI on OCTEON platform 2016-02-11 10:12:04 -05:00
ahci_platform.c ata: ahci-platform: Add ports-implemented DT bindings. 2016-04-01 10:30:30 -04:00
ahci_qoriq.c ahci: qoriq: Adjust the default register values on ls1021a 2015-12-16 10:24:35 -05:00
ahci_seattle.c ata: add AMD Seattle platform driver 2016-04-13 15:14:24 -04:00
ahci_st.c ata: ahci_st: fixup layering violations / drvdata errors 2015-04-20 13:36:38 -04:00
ahci_sunxi.c ata: ahci_platform: fix owner module reference mismatch for scsi host 2015-01-28 18:45:23 -05:00
ahci_tegra.c ata: ahci_platform: fix owner module reference mismatch for scsi host 2015-01-28 18:45:23 -05:00
ahci_xgene.c ata: ahci_xgene: dereferencing uninitialized pointer in probe 2016-03-11 12:40:34 -05:00
ahci.c ata: Use IS_ENABLED() instead of checking for built-in or module 2016-05-27 11:27:23 -04:00
ahci.h ahci: Cache host controller version 2016-02-19 10:52:46 -05:00
ata_generic.c
ata_piix.c
Kconfig ata: ahci_brcm: Add support for Broadcom NSP SoC 2016-06-16 16:24:55 -04:00
libahci_platform.c ahci: Store irq number in struct ahci_host_priv 2015-06-03 01:37:49 -04:00
libahci.c AHCI: Clear GHC.IS to prevent unexpectly asserting INTx 2016-07-20 11:10:10 -04:00
libata-acpi.c
libata-core.c libata: remove ata_is_nodata 2016-07-18 20:55:37 -04:00
libata-eh.c ata: Handle ATA NCQ NO-DATA commands correctly 2016-07-15 08:08:13 -04:00
libata-pmp.c ata: pmp: add quirk for Marvell 4140 SATA PMP 2015-07-14 17:46:38 -04:00
libata-scsi.c libata-scsi: minor cleanup for ata_scsi_zbc_out_xlat 2016-07-15 08:08:14 -04:00
libata-sff.c libata: fix sff host state machine locking while polling 2016-02-01 11:33:21 -05:00
libata-trace.c libata: NCQ encapsulation for ZAC MANAGEMENT OUT 2016-05-09 12:36:46 -04:00
libata-transport.c ata: fix "ering" sysfs time printing 2016-06-17 12:07:11 -04:00
libata-transport.h
libata-zpodd.c
libata.h libata: Implement control mode page to select sense format 2016-04-04 12:07:41 -04:00
Makefile ata: ahci_brcmstb: rename to support across Broadcom SoC's 2016-06-16 16:24:55 -04:00
pata_acpi.c
pata_ali.c
pata_amd.c
pata_arasan_cf.c drivers: ata: pata_arasan_cf: use the same name for the same lock 2016-06-28 12:49:40 -04:00
pata_artop.c
pata_at32.c
pata_at91.c gpio: Include linux/gpio.h instead of asm/gpio.h 2016-02-16 00:20:03 +01:00
pata_atiixp.c pata_atiixp: fix trivial indentation misalignment on if statement 2016-05-27 11:22:46 -04:00
pata_atp867x.c ata: remove deprecated use of pci api 2015-04-08 10:55:05 -04:00
pata_bf54x.c gpio: Include linux/gpio.h instead of asm/gpio.h 2016-02-16 00:20:03 +01:00
pata_cmd64x.c
pata_cmd640.c
pata_cs5520.c ata: remove deprecated use of pci api 2015-04-08 10:55:05 -04:00
pata_cs5530.c ata: Delete unnecessary checks before the function call "pci_dev_put" 2015-02-03 07:04:44 -05:00
pata_cs5535.c
pata_cs5536.c
pata_cypress.c
pata_efar.c
pata_ep93xx.c
pata_hpt3x2n.c
pata_hpt3x3.c ata: remove deprecated use of pci api 2015-04-08 10:55:05 -04:00
pata_hpt37x.c
pata_hpt366.c ata: hpt366: fix incorrect mask when checking at cmd_high_time 2016-07-12 11:02:05 -04:00
pata_icside.c scsi: rename SCSI_MAX_{SG, SG_CHAIN}_SEGMENTS 2016-04-15 16:53:14 -04:00
pata_imx.c
pata_isapnp.c PNP: ata/pata_isapnp: Use module_pnp_driver to register driver 2015-03-18 22:39:17 +01:00
pata_it821x.c pata_it821x: use "const char *" for string literals 2015-10-15 10:58:53 -04:00
pata_it8213.c
pata_ixp4xx_cf.c
pata_jmicron.c PCI: Disable async suspend/resume for JMicron multi-function SATA/AHCI 2015-08-24 15:27:11 -05:00
pata_legacy.c
pata_macio.c PCI: Remove includes of asm/pci-bridge.h 2016-02-05 16:29:28 -06:00
pata_marvell.c ata: Use IS_ENABLED() instead of checking for built-in or module 2016-05-27 11:27:23 -04:00
pata_mpc52xx.c
pata_mpiix.c
pata_netcell.c
pata_ninja32.c ata: remove deprecated use of pci api 2015-04-08 10:55:05 -04:00
pata_ns87410.c
pata_ns87415.c
pata_octeon_cf.c pata_octeon_cf: fix broken build 2015-06-08 18:03:04 +09:00
pata_of_platform.c ata: pata_platform: fix owner module reference mismatch for scsi host 2015-01-28 18:45:23 -05:00
pata_oldpiix.c
pata_opti.c
pata_optidma.c
pata_palmld.c
pata_pcmcia.c
pata_pdc202xx_old.c
pata_pdc2027x.c ata: remove deprecated use of pci api 2015-04-08 10:55:05 -04:00
pata_piccolo.c
pata_platform.c ata: pata_platform: fix owner module reference mismatch for scsi host 2015-01-28 18:45:23 -05:00
pata_pxa.c ata: pata_pxa: dmaengine conversion 2015-09-10 17:02:04 -04:00
pata_radisys.c
pata_rb532_cf.c pata-rb532-cf: get rid of the irq_to_gpio() call 2016-02-18 11:26:27 -05:00
pata_rdc.c
pata_rz1000.c
pata_samsung_cf.c libata: samsung_cf: fix handling platform_get_irq result 2015-09-25 11:50:15 -04:00
pata_sc1200.c
pata_sch.c
pata_serverworks.c
pata_sil680.c ata: remove deprecated use of pci api 2015-04-08 10:55:05 -04:00
pata_sis.c
pata_sl82c105.c
pata_triflex.c
pata_via.c
pdc_adma.c ata: remove deprecated use of pci api 2015-04-08 10:55:05 -04:00
sata_dwc_460ex.c ata: sata_dwc_460ex: remove redundant dev_err call 2016-07-19 14:32:04 -04:00
sata_fsl.c ata/sata_fsl.c: add ATA_FLAG_NO_LOG_PAGE to blacklist the controller for log page reads 2015-12-07 10:25:57 -05:00
sata_highbank.c ahci: Store irq number in struct ahci_host_priv 2015-06-03 01:37:49 -04:00
sata_inic162x.c ata: remove deprecated use of pci api 2015-04-08 10:55:05 -04:00
sata_mv.c ata: remove deprecated use of pci api 2015-04-08 10:55:05 -04:00
sata_nv.c ata:sata_nv - Change 1 to true for bool type variable. 2015-05-25 20:06:55 -04:00
sata_promise.c ata: remove deprecated use of pci api 2015-04-08 10:55:05 -04:00
sata_promise.h
sata_qstor.c ata: remove deprecated use of pci api 2015-04-08 10:55:05 -04:00
sata_rcar.c ata: sata_rcar: Remove obsolete platform_device_id entries 2015-11-24 09:54:36 -05:00
sata_sil24.c ata: remove deprecated use of pci api 2015-04-08 10:55:05 -04:00
sata_sil.c sata_sil: disable trim 2015-11-30 10:02:49 -05:00
sata_sis.c
sata_svw.c powerpc updates for 4.1 2015-04-16 13:53:32 -05:00
sata_sx4.c sata_sx4: correctly handling failed allocation 2015-12-31 21:33:42 -05:00
sata_uli.c
sata_via.c sata_via: Implement hotplug for VT6421 2016-02-25 13:22:16 -05:00
sata_vsc.c ata: remove deprecated use of pci api 2015-04-08 10:55:05 -04:00
sis.h