Re: 2.6.29-rc libata sff 32bit PIO regression

From: Alan Cox
Date: Sat Jan 31 2009 - 11:07:00 EST


O> > + ata_for_each_dev(adev, &ap->link, ENABLED) {
> > + if (adev->class == ATA_DEV_ATAPI)
> > + fifo = 0;
> > + }
> >
>
> Er, couldn't we do that dynamically, based on which device is
> executing the command now?

Possibly but PCI command cycles are expensive so you'd want to cache the
state and stuff. Better to get it correct firstly.

> > + if (pdev->device == PCI_DEVICE_ID_AMD_VIPER_7411) /* FIFO is broken */
> > + fifo = 0;
> > +
> > + /* On the later chips the read prefetch bits become no-op bits */
> > + pci_read_config_byte(pdev, 0x41, &r);
> > + r &= ~fifobit[ap->port_no];
> >
>
> Why not:
>
> r &= ~fifo;

Because then it wouldn't clear the bits if they were set already and we
wanted them off!
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/