Pull ata fixes from Damien Le Moal: - Fix PCI resource initialization in the sata_mv driver to keep legacy Marvell boards functional (Rosen) - Fix ahci_ceva driver initialization error path (Radhey) - Fix libata header file to remove a kernel doc compilation warning (Randy) - Increase the timeout for the STANDBY IMMEDIATE command to avoid suspend failures with drives that are slow to respond to this command (Matt) - Fixes for the handling of timed out commands in the presence of deferred non-NCQ commands, to avoid excessive delays in executing the error handler (me) - Disable link power management for a couple of WD drives that have been identified as not functioning properly when power management is used (Niklas) - Fix the device iteration loop when checking for link power management support to correctly handle port multiplier setups (Niklas) * tag 'ata-7.2-rc6' of git://git.kernel.org/pub/scm/linux/kernel/git/libata/linux: ata: libata-sata: fix ata_scsi_lpm_supported() iteration ata: libata-core: Disable LPM on WD Green 2.5 480GB ata: libata-core: Disable LPM on some WD drives scsi: libsas: terminate deferred commands on time out ata: libata-scsi: schedule deferred atapi command ata: libata-scsi: terminate deferred commands on time out ata: libata-eh: Increase STANDBY IMMEDIATE timeout ata: libata: avoid kernel-doc warnings ata: ahci_ceva: fix error paths in ceva_ahci_platform_enable_resources() ata: sata_mv: accept 1 or 2 resources in platform probe
Showing the changes to include (3 of 11 files). Show all
Unified · Split
| @@ -762,8 +762,7 @@ static inline bool ata_id_sense_reporting_enabled(const u16 *id) · 761 unmodified lines | ||
| 762 | 762 | return id[ATA_ID_COMMAND_SET_4] & BIT(6); |
| 763 | 763 | } |
| 764 | 764 | |
| 765 | −/** | |
| 766 | − * | |
| 765 | +/* | |
| 767 | 766 | * Word: 206 - SCT Command Transport |
| 768 | 767 | * 15:12 - Vendor Specific |
| 769 | 768 | * 11:6 - Reserved |
| @@ -810,8 +809,9 @@ static inline bool ata_id_sct_supported(const u16 *id) · 40 unmodified lines | ||
| 810 | 809 | * |
| 811 | 810 | * The practical impact of this is that ata_id_major_version cannot |
| 812 | 811 | * reliably report on drives below ATA3. |
| 812 | + * | |
| 813 | + * Returns: major version of ATA drive level or %0 if unknown | |
| 813 | 814 | */ |
| 814 | − | |
| 815 | 815 | static inline unsigned int ata_id_major_version(const u16 *id) |
| 816 | 816 | { |
| 817 | 817 | unsigned int mver; |
| @@ -425,7 +425,7 @@ enum { · 424 unmodified lines | ||
| 425 | 425 | /* This should match the actual table size of |
| 426 | 426 | * ata_eh_cmd_timeout_table in libata-eh.c. |
| 427 | 427 | */ |
| 428 | − ATA_EH_CMD_TIMEOUT_TABLE_SIZE = 8, | |
| 428 | + ATA_EH_CMD_TIMEOUT_TABLE_SIZE = 9, | |
| 429 | 429 | |
| 430 | 430 | /* User visible DMA mask for DMA control. DO NOT renumber. */ |
| 431 | 431 | ATA_DMA_MASK_ATA = (1 << 0), /* DMA on ATA Disk */ |
| @@ -1153,6 +1153,9 @@ extern int ata_scsi_ioctl(struct scsi_device *dev, unsigned int cmd, · 721 unmodified lines | ||
| 1153 | 1153 | #endif |
| 1154 | 1154 | extern enum scsi_qc_status ata_scsi_queuecmd(struct Scsi_Host *h, |
| 1155 | 1155 | struct scsi_cmnd *cmd); |
| 1156 | +enum scsi_timeout_action ata_scsi_retry_deferred_qc(struct ata_port *ap, | |
| 1157 | + struct scsi_cmnd *scmd); | |
| 1158 | +enum scsi_timeout_action ata_scsi_eh_timed_out(struct scsi_cmnd *cmd); | |
| 1156 | 1159 | #if IS_REACHABLE(CONFIG_ATA) |
| 1157 | 1160 | bool ata_scsi_dma_need_drain(struct request *rq); |
| 1158 | 1161 | #else |
| @@ -1464,6 +1467,7 @@ extern const struct attribute_group *ata_common_sdev_groups[]; · 305 unmodified lines | ||
| 1464 | 1467 | .ioctl = ata_scsi_ioctl, \ |
| 1465 | 1468 | ATA_SCSI_COMPAT_IOCTL \ |
| 1466 | 1469 | .queuecommand = ata_scsi_queuecmd, \ |
| 1470 | + .eh_timed_out = ata_scsi_eh_timed_out, \ | |
| 1467 | 1471 | .dma_need_drain = ata_scsi_dma_need_drain, \ |
| 1468 | 1472 | .this_id = ATA_SHT_THIS_ID, \ |
| 1469 | 1473 | .emulated = ATA_SHT_EMULATED, \ |
| @@ -705,6 +705,7 @@ void sas_task_abort(struct sas_task *); · 704 unmodified lines | ||
| 705 | 705 | int sas_eh_abort_handler(struct scsi_cmnd *cmd); |
| 706 | 706 | int sas_eh_device_reset_handler(struct scsi_cmnd *cmd); |
| 707 | 707 | int sas_eh_target_reset_handler(struct scsi_cmnd *cmd); |
| 708 | +enum scsi_timeout_action sas_eh_timed_out(struct scsi_cmnd *cmd); | |
| 708 | 709 | |
| 709 | 710 | extern void sas_target_destroy(struct scsi_target *); |
| 710 | 711 | extern int sas_sdev_init(struct scsi_device *); |
| @@ -743,6 +744,7 @@ void sas_notify_phy_event(struct asd_sas_phy *phy, enum phy_event event, · 32 unmodified lines | ||
| 743 | 744 | .this_id = -1, \ |
| 744 | 745 | .eh_device_reset_handler = sas_eh_device_reset_handler, \ |
| 745 | 746 | .eh_target_reset_handler = sas_eh_target_reset_handler, \ |
| 747 | + .eh_timed_out = sas_eh_timed_out, \ | |
| 746 | 748 | .target_destroy = sas_target_destroy, \ |
| 747 | 749 | .ioctl = sas_ioctl, \ |
| 748 | 750 | |