From: Alan Cox <alan@xxxxxxxxxx> Testing says that nothing seems to break when we do this. Signed-off-by: Alan Cox <alan@xxxxxxxxxx> --- drivers/scsi/libata-core.c | 36 ++++++++++++++---------------------- 1 files changed, 14 insertions(+), 22 deletions(-) 6f3a15e1fd177bab7bb093c23bdefac6fbf6253a diff --git a/drivers/scsi/libata-core.c b/drivers/scsi/libata-core.c index cc6ae67..75eb556 100644 --- a/drivers/scsi/libata-core.c +++ b/drivers/scsi/libata-core.c @@ -3047,6 +3047,7 @@ static void ata_dev_xfermask(struct ata_ unsigned long xfer_mask; int i; + /* Controller modes available */ xfer_mask = ata_pack_xfermask(ap->pio_mask, ap->mwdma_mask, ap->udma_mask); @@ -3056,30 +3057,21 @@ static void ata_dev_xfermask(struct ata_ if (ap->cbl == ATA_CBL_PATA40) xfer_mask &= ~(0xF8 << ATA_SHIFT_UDMA); - /* FIXME: Use port-wide xfermask for now */ - for (i = 0; i < ATA_MAX_DEVICES; i++) { - struct ata_device *d = &ap->device[i]; - - if (ata_dev_absent(d)) - continue; - - if (ata_dev_disabled(d)) { - /* to avoid violating device selection timing */ - xfer_mask &= ata_pack_xfermask(d->pio_mask, - UINT_MAX, UINT_MAX); - continue; - } + if (ata_dev_disabled(dev)) { + /* to avoid violating device selection timing */ + xfer_mask &= ata_pack_xfermask(dev->pio_mask, + UINT_MAX, UINT_MAX); + goto out; + } + xfer_mask &= ata_pack_xfermask(dev->pio_mask, + dev->mwdma_mask, dev->udma_mask); + xfer_mask &= ata_id_xfermask(dev->id); - xfer_mask &= ata_pack_xfermask(d->pio_mask, - d->mwdma_mask, d->udma_mask); - xfer_mask &= ata_id_xfermask(d->id); - if (ata_dma_blacklisted(d)) - xfer_mask &= ~(ATA_MASK_MWDMA | ATA_MASK_UDMA); - } - - if (ata_dma_blacklisted(dev)) + if (ata_dma_blacklisted(dev)) { + xfer_mask &= ~(ATA_MASK_MWDMA | ATA_MASK_UDMA); ata_dev_printk(dev, KERN_WARNING, "device is on DMA blacklist, disabling DMA\n"); + } if (hs->flags & ATA_HOST_SIMPLEX) { if (hs->simplex_claimed) @@ -3088,7 +3080,7 @@ static void ata_dev_xfermask(struct ata_ if (ap->ops->mode_filter) xfer_mask = ap->ops->mode_filter(ap, dev, xfer_mask); - +out: ata_unpack_xfermask(xfer_mask, &dev->pio_mask, &dev->mwdma_mask, &dev->udma_mask); } -- 1.2.GIT - : 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