The fsl sata controller only implement a queue depth of 16. So use the ata_host_set_queue_depth() to set the correct queue depth for host controller. Also add a WARN_ON_ONCE() if a tag above 16 is used. Fixes: 8a4aeec8d2d6 ("libata/ahci: accommodate tag ordered controllers") Cc: stable@xxxxxxxxxxxxxxx Signed-off-by: Kevin Hao <haokexin@xxxxxxxxx> --- v2: Add a WARN_ON_ONCE(). drivers/ata/sata_fsl.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/drivers/ata/sata_fsl.c b/drivers/ata/sata_fsl.c index 07bc7e4dbd04..ae55440af86d 100644 --- a/drivers/ata/sata_fsl.c +++ b/drivers/ata/sata_fsl.c @@ -402,6 +402,7 @@ static inline unsigned int sata_fsl_tag(unsigned int tag, if (unlikely(tag >= SATA_FSL_QUEUE_DEPTH)) { DPRINTK("tag %d invalid : out of range\n", tag); + WARN_ON_ONCE(1); return 0; } @@ -1506,6 +1507,8 @@ static int sata_fsl_probe(struct platform_device *ofdev) goto error_exit_with_cleanup; } + ata_host_set_queue_depth(host, SATA_FSL_QUEUE_DEPTH); + /* host->iomap is not used currently */ host->private_data = host_priv; -- 1.9.3 -- To unsubscribe from this list: send the line "unsubscribe linux-ide" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html