WSL2-Linux-Kernel/drivers/ata
Niklas Cassel 983320199e ata: libata: fix NCQ autosense logic
[ Upstream commit 7390896b34 ]

Currently, the logic if we should call ata_scsi_set_sense()
(and set flag ATA_QCFLAG_SENSE_VALID to indicate that we have
successfully added sense data to the struct ata_queued_cmd)
looks like this:

if (dev->class == ATA_DEV_ZAC &&
    ((qc->result_tf.status & ATA_SENSE) || qc->result_tf.auxiliary))

The problem with this is that a drive can support the NCQ command
error log without supporting NCQ autosense.

On such a drive, if the failing command has sense data, the status
field in the NCQ command error log will have the ATA_SENSE bit set.

It is just that this sense data is not included in the NCQ command
error log when NCQ autosense is not supported. Instead the sense
data has to be fetched using the REQUEST SENSE DATA EXT command.

Therefore, we should only add the sense data if the drive supports
NCQ autosense AND the ATA_SENSE bit is set in the status field.

Fix this, and at the same time, remove the duplicated ATA_DEV_ZAC
check. The struct ata_taskfile supplied to ata_eh_read_log_10h()
is memset:ed before calling the function, so simply checking if
qc->result_tf.auxiliary is set is sufficient to tell us that the
log actually contained sense data.

Fixes: d238ffd59d ("libata: do not attempt to retrieve sense code twice")
Signed-off-by: Niklas Cassel <niklas.cassel@wdc.com>
Signed-off-by: Damien Le Moal <damien.lemoal@opensource.wdc.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
2022-12-31 13:14:06 +01:00
..
Kconfig ARM: SoC changes for 5.14 2021-07-10 09:22:44 -07:00
Makefile ata: start separating SATA specific code from libata-core.c 2020-03-26 10:28:19 -06:00
acard-ahci.c ata: add/use ata_taskfile::{error|status} fields 2022-12-31 13:14:06 +01:00
ahci.c ata: add/use ata_taskfile::{error|status} fields 2022-12-31 13:14:06 +01:00
ahci.h ata: ahci: Match EM_MAX_SLOTS with SATA_PMP_MAX_PORTS 2022-10-29 10:12:54 +02:00
ahci_brcm.c ata: ahci_brcm: Fix use of BCM7216 reset controller 2021-05-03 13:15:04 -05:00
ahci_ceva.c ata: ahci: ceva: Updated code by using dev_err_probe() 2021-04-06 09:25:01 -06:00
ahci_da850.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 45 2019-05-24 17:27:12 +02:00
ahci_dm816.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 45 2019-05-24 17:27:12 +02:00
ahci_imx.c ata: ahci-imx: Fix MODULE_ALIAS 2022-10-29 10:12:54 +02:00
ahci_mtk.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 174 2019-05-30 11:26:41 -07:00
ahci_mvebu.c ata: ahci: mvebu: Make SATA PHY optional for Armada 3720 2020-10-09 12:47:56 -06:00
ahci_octeon.c
ahci_platform.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 45 2019-05-24 17:27:12 +02:00
ahci_qoriq.c ata: add/use ata_taskfile::{error|status} fields 2022-12-31 13:14:06 +01:00
ahci_seattle.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 235 2019-06-19 17:09:07 +02:00
ahci_st.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 500 2019-06-19 17:09:55 +02:00
ahci_sunxi.c ata: ahci_sunxi: Disable DIPM 2021-06-14 08:26:54 -06:00
ahci_tegra.c ata: ahci_tegra: call tegra_powergate_power_off only when PM domain is not present 2021-04-11 20:35:08 -06:00
ahci_xgene.c ata: add/use ata_taskfile::{error|status} fields 2022-12-31 13:14:06 +01:00
ata_generic.c ata: ata_generic: Fix misspelling of 'ata_generic_init_one()' 2021-03-30 20:21:26 -06:00
ata_piix.c ata_piix: remove open-coded dmi_match(DMI_OEM_STRING) 2019-11-06 20:34:25 -07:00
libahci.c ata: add/use ata_taskfile::{error|status} fields 2022-12-31 13:14:06 +01:00
libahci_platform.c ata: libahci_platform: Sanity check the DT child nodes number 2022-10-26 12:35:48 +02:00
libata-acpi.c ata: add/use ata_taskfile::{error|status} fields 2022-12-31 13:14:06 +01:00
libata-core.c ata: add/use ata_taskfile::{error|status} fields 2022-12-31 13:14:06 +01:00
libata-eh.c ata: add/use ata_taskfile::{error|status} fields 2022-12-31 13:14:06 +01:00
libata-pata-timings.c ata: separate PATA timings code from libata-core.c 2020-03-26 10:28:19 -06:00
libata-pmp.c ata: libata-pmp: Fix misspelling of 'val' 2021-03-12 07:28:30 -07:00
libata-sata.c ata: libata: fix NCQ autosense logic 2022-12-31 13:14:06 +01:00
libata-scsi.c ata: add/use ata_taskfile::{error|status} fields 2022-12-31 13:14:06 +01:00
libata-sff.c ata: add/use ata_taskfile::{error|status} fields 2022-12-31 13:14:06 +01:00
libata-trace.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 18 2019-05-21 11:28:46 +02:00
libata-transport.c ata: libata-transport: fix error handling in ata_tdev_add() 2022-11-26 09:24:38 +01:00
libata-transport.h
libata-zpodd.c libata: zpodd: Fix small read overflow in zpodd_get_mech_type() 2019-07-29 16:00:14 -06:00
libata.h ata: make "libata.force" kernel parameter optional 2020-03-26 10:28:20 -06:00
pata_acpi.c ata: pata_acpi: Fix some incorrect function param descriptions 2021-03-30 20:21:26 -06:00
pata_ali.c ata: pata_ali: Supply description for 'ali_20_filter()'s 'mask' param 2021-03-12 07:28:30 -07:00
pata_amd.c ata: pata_amd: Fix incorrectly named function in the header 2021-03-12 07:28:30 -07:00
pata_arasan_cf.c pata_arasan_cf: fix IRQ check 2021-03-26 17:13:02 -06:00
pata_artop.c ata: pata_artop: Repair possible copy/paste issue in 'artop_6210_qc_defer()'s header 2021-03-12 07:28:30 -07:00
pata_atiixp.c ata: pata_atiixp: Avoid overwriting initialised field in 'atiixp_sht' 2021-06-16 06:50:25 -06:00
pata_atp867x.c treewide: Use fallthrough pseudo-keyword 2020-08-23 17:36:59 -05:00
pata_bk3710.c
pata_buddha.c ata/pata_buddha: Probe via modalias instead of initcall 2019-08-23 06:58:50 -06:00
pata_cmd64x.c pata_cmd64x: Use fallthrough pseudo-keyword 2020-10-02 17:51:30 -06:00
pata_cmd640.c treewide: Add SPDX license identifier for more missed files 2019-05-21 10:50:45 +02:00
pata_cs5520.c ata: pata_cs5520: Avoid overwriting initialised field in 'cs5520_sht' 2021-06-16 06:50:25 -06:00
pata_cs5530.c ata: pata_cs5530: Avoid overwriting initialised field in 'cs5530_sht' 2021-06-16 06:50:25 -06:00
pata_cs5535.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 333 2019-06-05 17:37:06 +02:00
pata_cs5536.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 333 2019-06-05 17:37:06 +02:00
pata_cypress.c pata_cypress: add a module option to disable BM-DMA 2021-06-16 08:52:38 -06:00
pata_efar.c treewide: Add SPDX license identifier for more missed files 2019-05-21 10:50:45 +02:00
pata_ep93xx.c ata: add/use ata_taskfile::{error|status} fields 2022-12-31 13:14:06 +01:00
pata_falcon.c scsi: ata: Use scsi_cmd_to_rq() instead of scsi_cmnd.request 2021-08-11 22:25:37 -04:00
pata_ftide010.c treewide: Add SPDX license identifier for more missed files 2019-05-21 10:50:45 +02:00
pata_gayle.c
pata_hpt3x2n.c ata: pata_hpt3x2n: Fix possible doc-rotted function name 2021-03-12 07:28:31 -07:00
pata_hpt3x3.c libata: switch remaining drivers to use dma_set_mask_and_coherent 2019-08-26 13:58:59 -06:00
pata_hpt37x.c ata: pata_hpt37x: fix PCI clock detection 2022-03-08 19:12:33 +01:00
pata_hpt366.c ata: pata_hpt366: Provide missing description for 'hpt366_filter()'s 'mask' param 2021-03-12 07:28:30 -07:00
pata_icside.c ata: Avoid comma separated statements 2021-01-31 08:05:46 -07:00
pata_imx.c Merge branch 'for-4.19' of git://git.kernel.org/pub/scm/linux/kernel/git/tj/libata 2018-08-24 13:20:33 -07:00
pata_isapnp.c treewide: Add SPDX license identifier for more missed files 2019-05-21 10:50:45 +02:00
pata_it821x.c ata: pata_it821x: Fix possible doc-rotted function names 2021-03-30 20:21:25 -06:00
pata_it8213.c treewide: Add SPDX license identifier for more missed files 2019-05-21 10:50:45 +02:00
pata_ixp4xx_cf.c ata: libata: move ata_{port,link,dev}_dbg to standard pr_XXX() macros 2022-12-31 13:14:06 +01:00
pata_jmicron.c ata: pata_jmicron: Fix incorrectly documented function parameter 2021-03-12 07:28:31 -07:00
pata_legacy.c ata: pata_legacy: fix pdc20230_set_piomode() 2022-11-10 18:15:28 +01:00
pata_macio.c ata: pata_macio: Avoid overwriting initialised field in 'pata_macio_sht' 2021-06-16 06:50:26 -06:00
pata_marvell.c ata: pata_marvell: Check the 'bmdma_addr' beforing reading 2022-04-27 14:38:58 +02:00
pata_mpc52xx.c
pata_mpiix.c treewide: Add SPDX license identifier for more missed files 2019-05-21 10:50:45 +02:00
pata_netcell.c treewide: Add SPDX license identifier for more missed files 2019-05-21 10:50:45 +02:00
pata_ninja32.c libata: switch remaining drivers to use dma_set_mask_and_coherent 2019-08-26 13:58:59 -06:00
pata_ns87410.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 18 2019-05-21 11:28:46 +02:00
pata_ns87415.c ata: add/use ata_taskfile::{error|status} fields 2022-12-31 13:14:06 +01:00
pata_octeon_cf.c ata: add/use ata_taskfile::{error|status} fields 2022-12-31 13:14:06 +01:00
pata_of_platform.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 500 2019-06-19 17:09:55 +02:00
pata_oldpiix.c treewide: Add SPDX license identifier for more missed files 2019-05-21 10:50:45 +02:00
pata_opti.c ata: pata_opti: Fix spelling issue of 'val' in 'opti_write_reg()' 2021-03-30 20:21:26 -06:00
pata_optidma.c ata: pata_optidma: Fix a function misnaming, a formatting issue and a missing description 2021-03-12 07:28:31 -07:00
pata_palmld.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 500 2019-06-19 17:09:55 +02:00
pata_pcmcia.c pata_pcmia: add SanDisk High (>8G) CF card to supported list 2020-01-29 20:54:51 -07:00
pata_pdc202xx_old.c ata: pata_pdc202xx_old: Fix some incorrectly named functions 2021-03-30 20:21:25 -06:00
pata_pdc2027x.c ata: pata_pdc2027x: Fix some incorrect function names and parameter docs 2021-03-12 07:28:31 -07:00
pata_piccolo.c ata: pata_piccolo: 'ata_tosh_init()' is misnamed in its header 2021-03-30 20:21:25 -06:00
pata_platform.c pata_platform: Document `pio_mask' module parameter 2021-04-06 09:27:30 -06:00
pata_pxa.c ata: make qc_prep return ata_completion_errors 2019-11-01 08:50:51 -06:00
pata_radisys.c treewide: Add SPDX license identifier for more missed files 2019-05-21 10:50:45 +02:00
pata_rb532_cf.c ata: rb532_cf: remove redundant codes 2021-06-24 18:49:01 -06:00
pata_rdc.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 18 2019-05-21 11:28:46 +02:00
pata_rz1000.c treewide: Add SPDX license identifier for more missed files 2019-05-21 10:50:45 +02:00
pata_samsung_cf.c ata: add/use ata_taskfile::{error|status} fields 2022-12-31 13:14:06 +01:00
pata_sc1200.c ata: pata_sc1200: sc1200_sht'Avoid overwriting initialised field in ' 2021-06-16 06:50:25 -06:00
pata_sch.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 300 2019-06-05 17:37:00 +02:00
pata_serverworks.c ata: pata_serverworks: Avoid overwriting initialised field in 'serverworks_osb4_sht 2021-06-16 06:50:26 -06:00
pata_sil680.c ata: pata_sil680: Add some missing function parameter docs 2021-03-30 20:21:25 -06:00
pata_sis.c ata: pata_sis: Remove superfluous param description and supply another 2021-03-30 20:21:25 -06:00
pata_sl82c105.c ata: pata_sl82c105: Fix potential doc-rot 2021-03-30 20:21:25 -06:00
pata_triflex.c ata: pata_triflex: Repair some misnamed functions and fix some param descriptions 2021-03-30 20:21:25 -06:00
pata_via.c ata: pata_via: Fix a kernel-doc formatting issue 2021-03-30 20:21:25 -06:00
pdc_adma.c ata: make qc_prep return ata_completion_errors 2019-11-01 08:50:51 -06:00
sata_dwc_460ex.c ata: sata_dwc_460ex: Fix crash due to OOB write 2022-04-13 20:59:23 +02:00
sata_fsl.c sata_fsl: fix warning in remove_proc_entry when rmmod sata_fsl 2021-12-08 09:04:42 +01:00
sata_gemini.c treewide: Add SPDX license identifier for more missed files 2019-05-21 10:50:45 +02:00
sata_gemini.h
sata_highbank.c ata: add/use ata_taskfile::{error|status} fields 2022-12-31 13:14:06 +01:00
sata_inic162x.c ata: add/use ata_taskfile::{error|status} fields 2022-12-31 13:14:06 +01:00
sata_mv.c ata: sata_mv: Fix the error handling of mv_chip_id() 2021-10-25 08:53:04 +09:00
sata_nv.c ata: sata_nv: Do not over-write initialise fields in 'nv_adma_sht' and 'nv_swncq_sht' 2021-06-16 06:50:25 -06:00
sata_promise.c treewide: Use fallthrough pseudo-keyword 2020-08-23 17:36:59 -05:00
sata_promise.h treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 18 2019-05-21 11:28:46 +02:00
sata_qstor.c ata: make qc_prep return ata_completion_errors 2019-11-01 08:50:51 -06:00
sata_rcar.c ata: add/use ata_taskfile::{error|status} fields 2022-12-31 13:14:06 +01:00
sata_sil.c ata: make qc_prep return ata_completion_errors 2019-11-01 08:50:51 -06:00
sata_sil24.c ata: sata_sil24: Do not over-write initialise fields in 'sil24_sht' 2021-06-16 06:50:25 -06:00
sata_sis.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 18 2019-05-21 11:28:46 +02:00
sata_svw.c ata: add/use ata_taskfile::{error|status} fields 2022-12-31 13:14:06 +01:00
sata_sx4.c treewide: Use fallthrough pseudo-keyword 2020-08-23 17:36:59 -05:00
sata_uli.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 18 2019-05-21 11:28:46 +02:00
sata_via.c libata: switch remaining drivers to use dma_set_mask_and_coherent 2019-08-26 13:58:59 -06:00
sata_vsc.c ata: add/use ata_taskfile::{error|status} fields 2022-12-31 13:14:06 +01:00
sis.h