Message ID | 201001141649.13073.bzolnier@gmail.com |
---|---|
State | Not Applicable |
Delegated to: | David Miller |
Headers | show |
> The computer locks up if Transcend SSD runs in any of UDMA modes. > It doesn't lockup with different brand SSD, so this is specific to Transcend. > > bzolnier: > - limit it to VT82C586A/B + TS64GSSD25-M (per commit 10734fc) for now > - add warning message Looks good to me. > + printk(KERN_WARNING "%s: disabling UDMA mode due to reported " > + "lockups with this device.\n", drive->name); That sounds odd - I think I'd have put ": not using UDMA mode as lockups have been reported with this device" or similar. Ackity-ack -- To unsubscribe from this list: send the line "unsubscribe linux-ide" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
On Thursday 14 January 2010 08:24:10 pm Alan Cox wrote: > > The computer locks up if Transcend SSD runs in any of UDMA modes. > > It doesn't lockup with different brand SSD, so this is specific to Transcend. > > > > bzolnier: > > - limit it to VT82C586A/B + TS64GSSD25-M (per commit 10734fc) for now > > - add warning message > > Looks good to me. Thanks. > > + printk(KERN_WARNING "%s: disabling UDMA mode due to reported " > > + "lockups with this device.\n", drive->name); > > That sounds odd - I think I'd have put ": not using UDMA mode as lockups > have been reported with this device" or similar. For compatibility reasons the warning message has been kept identical to the one used by pata_via driver (please see commit 10734fc for details 8).. -- Bartlomiej Zolnierkiewicz -- To unsubscribe from this list: send the line "unsubscribe linux-ide" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Index: b/drivers/ide/via82cxxx.c =================================================================== --- a/drivers/ide/via82cxxx.c +++ b/drivers/ide/via82cxxx.c @@ -195,6 +195,24 @@ static void via_set_pio_mode(ide_drive_t via_set_drive(drive, XFER_PIO_0 + pio); } +static u8 via_udma_filter(ide_drive_t *drive) +{ + ide_hwif_t *hwif = drive->hwif; + struct pci_dev *dev = to_pci_dev(hwif->dev); + struct ide_host *host = pci_get_drvdata(dev); + struct via82cxxx_dev *vdev = host->host_priv; + char *m = (char *)&drive->id[ATA_ID_PROD]; + + if (vdev->via_config->id == PCI_DEVICE_ID_VIA_82C586_0 && + strcmp(m, "TS64GSSD25-M") == 0) { + printk(KERN_WARNING "%s: disabling UDMA mode due to reported " + "lockups with this device.\n", drive->name); + return 0; + } + + return hwif->ultra_mask; +} + static struct via_isa_bridge *via_config_find(struct pci_dev **isa) { struct via_isa_bridge *via_config; @@ -372,6 +390,7 @@ static const struct ide_port_ops via_por .set_pio_mode = via_set_pio_mode, .set_dma_mode = via_set_drive, .cable_detect = via82cxxx_cable_detect, + .udma_filter = via_udma_filter, }; static const struct ide_port_info via82cxxx_chipset __devinitdata = {