Centos-kernel-stream-9/drivers/ata
Ewan D. Milne 5430e44fc6 ata: libata-core: Add ATA_HORKAGE_NOLPM for Apacer AS340
JIRA: https://issues.redhat.com/browse/RHEL-23829
Upstream Status: From upstream linux mainline

Commit 7627a0edef54 ("ata: ahci: Drop low power policy board type")
dropped the board_ahci_low_power board type, and instead enables LPM if:
-The AHCI controller reports that it supports LPM (Partial/Slumber), and
-CONFIG_SATA_MOBILE_LPM_POLICY != 0, and
-The port is not defined as external in the per port PxCMD register, and
-The port is not defined as hotplug capable in the per port PxCMD
 register.

Partial and Slumber LPM states can either be initiated by HIPM or DIPM.

For HIPM (host initiated power management) to get enabled, both the AHCI
controller and the drive have to report that they support HIPM.

For DIPM (device initiated power management) to get enabled, only the
drive has to report that it supports DIPM. However, the HBA will reject
device requests to enter LPM states which the HBA does not support.

The problem is that Apacer AS340 drives do not handle low power modes
correctly. The problem was most likely not seen before because no one
had used this drive with a AHCI controller with LPM enabled.

Add a quirk so that we do not enable LPM for this drive, since we see
command timeouts if we do (even though the drive claims to support DIPM).

Fixes: 7627a0edef54 ("ata: ahci: Drop low power policy board type")
Cc: stable@vger.kernel.org
Reported-by: Tim Teichmann <teichmanntim@outlook.de>
Closes: https://lore.kernel.org/linux-ide/87bk4pbve8.ffs@tglx/
Reviewed-by: Mika Westerberg <mika.westerberg@linux.intel.com>
Reviewed-by: Damien Le Moal <dlemoal@kernel.org>
Signed-off-by: Niklas Cassel <cassel@kernel.org>
(cherry picked from commit 3cb648c4dd3e8dde800fb3659250ed11f2d9efa5)
Signed-off-by: Ewan D. Milne <emilne@redhat.com>
2024-07-08 15:39:28 -04:00
..
Kconfig ata: ahci: Drop low power policy board type 2024-07-08 15:39:24 -04:00
Makefile ata: remove palmld pata driver 2023-04-24 12:16:18 +02:00
acard-ahci.c ata: libata: simplify qc_fill_rtf port operation interface 2023-04-24 12:16:16 +02:00
ahci.c ata: ahci: Do not apply Intel PCS quirk on Intel Alder Lake 2024-07-08 15:39:27 -04:00
ahci.h ahci: clean up intel_pcs_quirk 2024-07-08 15:39:25 -04:00
ahci_brcm.c ata: ahci_brcm: Fix compilation warning 2023-04-24 12:16:11 +02:00
ahci_ceva.c ata: Drop commas after OF match table sentinels 2022-04-09 22:28:57 +02:00
ahci_da850.c ata: libahci_platform: Convert to using devm bulk clocks API 2023-04-24 12:16:08 +02:00
ahci_dm816.c ata: libahci_platform: Convert to using devm bulk clocks API 2023-04-24 12:16:08 +02:00
ahci_imx.c thermal/core: Use the thermal zone 'devdata' accessor in remaining drivers 2024-03-27 11:39:36 -04:00
ahci_mtk.c ata: Use of_property_present() for testing DT property presence 2024-07-08 15:39:14 -04:00
ahci_mvebu.c Revert "ata: ahci: mvebu: Make SATA PHY optional for Armada 3720" 2022-04-09 22:28:57 +02:00
ahci_octeon.c ata: octeon: Drop empty platform remove function 2023-04-24 12:16:15 +02:00
ahci_platform.c ata: ahci_platform: Make code agnostic to OF/ACPI 2023-11-11 18:42:38 +01:00
ahci_qoriq.c ata: fix debounce timings type 2023-11-11 19:57:19 +01:00
ahci_seattle.c
ahci_st.c ata: ahci_st: Fix compilation warning 2023-04-24 12:16:11 +02:00
ahci_sunxi.c ata: Drop commas after OF match table sentinels 2022-04-09 22:28:57 +02:00
ahci_tegra.c
ahci_xgene.c ata: xgene: Use of_device_get_match_data() 2024-07-08 15:39:21 -04:00
ata_generic.c
ata_piix.c ata: libata: make ata_host_suspend() *void* 2022-04-09 22:09:32 +02:00
libahci.c ahci: print the number of implemented ports 2024-07-08 15:39:26 -04:00
libahci_platform.c ata: Use of_property_present() for testing DT property presence 2024-07-08 15:39:14 -04:00
libata-acpi.c ata: make use of ata_port_is_frozen() helper 2023-04-24 12:16:12 +02:00
libata-core.c ata: libata-core: Add ATA_HORKAGE_NOLPM for Apacer AS340 2024-07-08 15:39:28 -04:00
libata-eh.c ata: libata-eh: Spinup disk on resume after revalidation 2024-07-08 15:39:21 -04:00
libata-pata-timings.c
libata-pmp.c ata: libata: add tracepoints for ATA error handling 2022-04-09 20:13:35 +02:00
libata-sata.c scsi: ata: libata-sata: Factor out NCQ Priority configuration helpers 2024-07-08 15:39:27 -04:00
libata-scsi.c scsi: sd: Fix system start for ATA devices 2024-07-08 15:39:22 -04:00
libata-sff.c ata: ahci: print the lpm policy on boot 2023-11-12 19:47:54 +01:00
libata-trace.c ata: scsi: rename flag ATA_QCFLAG_FAILED to ATA_QCFLAG_EH 2023-04-24 12:16:16 +02:00
libata-transport.c ata: libata-core: Do not register PM operations for SAS ports 2023-12-06 00:19:08 +01:00
libata-transport.h
libata-zpodd.c
libata.h ata: libata-scsi: Disable scsi device manage_system_start_stop 2024-07-08 15:39:20 -04:00
pata_acpi.c ata: make transfer mode masks *unsigned int* 2023-04-07 18:54:21 +02:00
pata_ali.c ata: make transfer mode masks *unsigned int* 2023-04-07 18:54:21 +02:00
pata_amd.c ata: make transfer mode masks *unsigned int* 2023-04-07 18:54:21 +02:00
pata_arasan_cf.c ata: libata: make ata_host_suspend() *void* 2022-04-09 22:09:32 +02:00
pata_artop.c ata: pata_artop: use *switch* in atp8xx_fixup() 2022-04-09 22:09:34 +02:00
pata_atiixp.c ata: pata_atiixp: make static read-only arrays const 2022-04-09 22:09:30 +02:00
pata_atp867x.c ata: pata_atp867x: convert printk() calls 2022-04-09 22:07:04 +02:00
pata_buddha.c
pata_cmd64x.c ata: pata_cmd64x: convert printk() calls 2022-04-09 22:07:05 +02:00
pata_cmd640.c ata: pata_cmd640: convert printk() calls 2022-04-09 22:07:04 +02:00
pata_cs5520.c ata: ahci: print the lpm policy on boot 2023-11-12 19:47:54 +01:00
pata_cs5530.c
pata_cs5535.c ata: pata_cs5535: Fix W=1 warnings 2023-04-07 18:54:22 +02:00
pata_cs5536.c ata: pata_cs5536: convert printk() calls 2022-04-09 22:07:05 +02:00
pata_cypress.c ata: pata_cypress: convert printk() calls 2022-04-09 22:07:06 +02:00
pata_efar.c
pata_ep93xx.c ata: pata_ep93xx: use devm_platform_get_and_ioremap_resource() 2023-04-24 12:16:14 +02:00
pata_falcon.c pata_falcon: Avoid type warnings from sparse 2022-04-09 19:57:44 +02:00
pata_ftide010.c ata: pata_ftide010: Remove build dependency on OF 2023-04-24 12:16:12 +02:00
pata_gayle.c
pata_hpt3x2n.c ata: make transfer mode masks *unsigned int* 2023-04-07 18:54:21 +02:00
pata_hpt3x3.c
pata_hpt37x.c ata: make transfer mode masks *unsigned int* 2023-04-07 18:54:21 +02:00
pata_hpt366.c ata: make transfer mode masks *unsigned int* 2023-04-07 18:54:21 +02:00
pata_icside.c
pata_imx.c ata: libata: make ata_host_suspend() *void* 2022-04-09 22:09:32 +02:00
pata_isapnp.c
pata_it821x.c ata: fix read_id() ata port operation interface 2022-04-09 22:07:15 +02:00
pata_it8213.c
pata_ixp4xx_cf.c pata: ixp4xx: Add explicit include for of.h 2024-05-09 11:25:38 -04:00
pata_jmicron.c
pata_legacy.c ata: pata_legacy: fix pdc20230_set_piomode() 2023-04-24 12:16:13 +02:00
pata_macio.c ata: pata_macio: Add explicit include of irqdomain.h 2024-05-09 11:25:38 -04:00
pata_marvell.c ata: pata_marvell: Check the 'bmdma_addr' beforing reading 2023-04-07 18:54:20 +02:00
pata_mpc52xx.c ata: pata_mpc52xx: Replace NO_IRQ with 0 2023-04-24 12:16:11 +02:00
pata_mpiix.c
pata_netcell.c ata: fix read_id() ata port operation interface 2022-04-09 22:07:15 +02:00
pata_ninja32.c
pata_ns87410.c
pata_ns87415.c ata: add/use ata_taskfile::{error|status} fields 2022-04-09 22:09:39 +02:00
pata_octeon_cf.c ata: Use of_property_read_reg() to parse "reg" 2023-11-11 18:40:59 +01:00
pata_of_platform.c ata: Drop commas after OF match table sentinels 2022-04-09 22:28:57 +02:00
pata_oldpiix.c
pata_opti.c
pata_optidma.c pata_optidma: fix checking of DMA state 2022-04-08 18:45:31 +02:00
pata_pcmcia.c
pata_pdc202xx_old.c ata: pata_pdc202xx_old: make static read-only array pio_timing const 2022-04-09 22:09:30 +02:00
pata_pdc2027x.c ata: make transfer mode masks *unsigned int* 2023-04-07 18:54:21 +02:00
pata_piccolo.c
pata_platform.c ata: pata_platform: Make use of platform_get_mem_or_io() 2022-04-09 22:09:29 +02:00
pata_pxa.c ata: pata_pxa: Use platform_get_irq() to get the interrupt 2022-04-09 22:28:57 +02:00
pata_radisys.c pata_radisys: fix checking of DMA state 2022-04-08 18:45:31 +02:00
pata_rb532_cf.c
pata_rdc.c
pata_rz1000.c ata: pata_rz1000: convert printk() calls 2022-04-09 22:07:06 +02:00
pata_sc1200.c
pata_sch.c
pata_serverworks.c ata: make transfer mode masks *unsigned int* 2023-04-07 18:54:21 +02:00
pata_sil680.c ata: pata_sil680: fix result type of sil680_sel{dev|reg}() 2023-04-07 18:54:20 +02:00
pata_sis.c ata: make transfer mode masks *unsigned int* 2023-04-07 18:54:21 +02:00
pata_sl82c105.c
pata_triflex.c ata: libata: make ata_host_suspend() *void* 2022-04-09 22:09:32 +02:00
pata_via.c ata: make transfer mode masks *unsigned int* 2023-04-07 18:54:21 +02:00
pdc_adma.c ata: pdc_adma: Drop pointless VPRINTK() calls and remove disabled NCQ debugging 2022-04-09 20:13:39 +02:00
sata_dwc_460ex.c ata: Use of_property_present() for testing DT property presence 2024-07-08 15:39:14 -04:00
sata_fsl.c ata: libata: simplify qc_fill_rtf port operation interface 2023-04-24 12:16:16 +02:00
sata_gemini.c ata: sata_gemini: Remove dependency on OF for compile tests 2023-04-24 12:16:12 +02:00
sata_gemini.h
sata_highbank.c ata: fix debounce timings type 2023-11-11 19:57:19 +01:00
sata_inic162x.c ata: fix debounce timings type 2023-11-11 19:57:19 +01:00
sata_mv.c ata: fix debounce timings type 2023-11-11 19:57:19 +01:00
sata_nv.c ata: fix debounce timings type 2023-11-11 19:57:19 +01:00
sata_promise.c ata: scsi: rename flag ATA_QCFLAG_FAILED to ATA_QCFLAG_EH 2023-04-24 12:16:16 +02:00
sata_promise.h
sata_qstor.c ata: sata_qstor: Drop pointless VPRINTK() calls 2022-04-09 20:13:40 +02:00
sata_rcar.c ata: sata_rcar: Fix compilation warning 2023-04-24 12:16:11 +02:00
sata_sil.c ata: sata_sil: Drop pointless VPRINTK() calls 2022-04-09 20:13:42 +02:00
sata_sil24.c ata: libata: simplify qc_fill_rtf port operation interface 2023-04-24 12:16:16 +02:00
sata_sis.c
sata_svw.c ata: Use of_property_read_reg() to parse "reg" 2023-11-11 18:40:59 +01:00
sata_sx4.c ata: scsi: rename flag ATA_QCFLAG_FAILED to ATA_QCFLAG_EH 2023-04-24 12:16:16 +02:00
sata_uli.c
sata_via.c
sata_vsc.c ata: add/use ata_taskfile::{error|status} fields 2022-04-09 22:09:39 +02:00
sis.h