Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit b84b25cb authored by Tejun Heo's avatar Tejun Heo
Browse files

Merge branch 'for-3.19-fixes' of...

Merge branch 'for-3.19-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/tj/libata

 into for-3.20

Pull to receive the following two ahci_xgene fixes for the planned
xgene PMP support patches.

 5c0b8e0d ("ahci_xgene: Fix the endianess issue in APM X-Gene SoC AHCI SATA controller driver.")
 1102407b ("ahci_xgene: Fix the DMA state machine lockup for the ATA_CMD_PACKET PIO mode command.")

Signed-off-by: default avatarTejun Heo <tj@kernel.org>
parents 0628ee7c 36aae28e
Loading
Loading
Loading
Loading
+8 −6
Original line number Diff line number Diff line
@@ -125,10 +125,11 @@ static int xgene_ahci_restart_engine(struct ata_port *ap)
 * xgene_ahci_qc_issue - Issue commands to the device
 * @qc: Command to issue
 *
 * Due to Hardware errata for IDENTIFY DEVICE command, the controller cannot
 * clear the BSY bit after receiving the PIO setup FIS. This results in the dma
 * state machine goes into the CMFatalErrorUpdate state and locks up. By
 * restarting the dma engine, it removes the controller out of lock up state.
 * Due to Hardware errata for IDENTIFY DEVICE command and PACKET
 * command of ATAPI protocol set, the controller cannot clear the BSY bit
 * after receiving the PIO setup FIS. This results in the DMA state machine
 * going into the CMFatalErrorUpdate state and locks up. By restarting the
 * DMA engine, it removes the controller out of lock up state.
 */
static unsigned int xgene_ahci_qc_issue(struct ata_queued_cmd *qc)
{
@@ -137,7 +138,8 @@ static unsigned int xgene_ahci_qc_issue(struct ata_queued_cmd *qc)
	struct xgene_ahci_context *ctx = hpriv->plat_data;
	int rc = 0;

	if (unlikely(ctx->last_cmd[ap->port_no] == ATA_CMD_ID_ATA))
	if (unlikely((ctx->last_cmd[ap->port_no] == ATA_CMD_ID_ATA) ||
	    (ctx->last_cmd[ap->port_no] == ATA_CMD_PACKET)))
		xgene_ahci_restart_engine(ap);

	rc = ahci_qc_issue(qc);
@@ -188,7 +190,7 @@ static unsigned int xgene_ahci_read_id(struct ata_device *dev,
	 *
	 * Clear reserved bit 8 (DEVSLP bit) as we don't support DEVSLP
	 */
	id[ATA_ID_FEATURE_SUPP] &= ~(1 << 8);
	id[ATA_ID_FEATURE_SUPP] &= cpu_to_le16(~(1 << 8));

	return 0;
}
+1 −0
Original line number Diff line number Diff line
@@ -2389,6 +2389,7 @@ const char *ata_get_cmd_descript(u8 command)

	return NULL;
}
EXPORT_SYMBOL_GPL(ata_get_cmd_descript);

/**
 *	ata_eh_link_report - report error handling to user