mirror of
https://github.com/torvalds/linux
synced 2024-11-05 18:23:50 +00:00
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.5c0b8e0de7
("ahci_xgene: Fix the endianess issue in APM X-Gene SoC AHCI SATA controller driver.")1102407bb7
("ahci_xgene: Fix the DMA state machine lockup for the ATA_CMD_PACKET PIO mode command.") Signed-off-by: Tejun Heo <tj@kernel.org>
This commit is contained in:
commit
b84b25cb09
2 changed files with 9 additions and 6 deletions
|
@ -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;
|
||||
}
|
||||
|
|
|
@ -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
|
||||
|
|
Loading…
Reference in a new issue