sata_sil24: don't use NCQ if marvell 4140 PMP is attached
When 4140 PMP is attached to sil24, NCQ commands to fan out port 1 and 2 (0 based) often stall if commands are in progress to other ports. I've tried a number of things but can't tell what's going on. It never happens w/ ahci and reportedly sata_mv which can issue NCQ commands to multiple devices simultaneously like sil24 does. Disable NCQ for devices behind 4140 PMP for the time being. Signed-off-by: Tejun Heo <htejun@gmail.com> Cc: Mark Lord <liml@rtr.ca> Signed-off-by: Jeff Garzik <jgarzik@redhat.com>
This commit is contained in:
parent
391191c116
commit
906c1ff44a
1 changed files with 11 additions and 0 deletions
|
@ -899,14 +899,25 @@ static bool sil24_qc_fill_rtf(struct ata_queued_cmd *qc)
|
|||
|
||||
static void sil24_pmp_attach(struct ata_port *ap)
|
||||
{
|
||||
u32 *gscr = ap->link.device->gscr;
|
||||
|
||||
sil24_config_pmp(ap, 1);
|
||||
sil24_init_port(ap);
|
||||
|
||||
if (sata_pmp_gscr_vendor(gscr) == 0x11ab &&
|
||||
sata_pmp_gscr_devid(gscr) == 0x4140) {
|
||||
ata_port_printk(ap, KERN_INFO,
|
||||
"disabling NCQ support due to sil24-mv4140 quirk\n");
|
||||
ap->flags &= ~ATA_FLAG_NCQ;
|
||||
}
|
||||
}
|
||||
|
||||
static void sil24_pmp_detach(struct ata_port *ap)
|
||||
{
|
||||
sil24_init_port(ap);
|
||||
sil24_config_pmp(ap, 0);
|
||||
|
||||
ap->flags |= ATA_FLAG_NCQ;
|
||||
}
|
||||
|
||||
static int sil24_pmp_hardreset(struct ata_link *link, unsigned int *class,
|
||||
|
|
Loading…
Reference in a new issue