[PATCH]: [MPC5200] (v2) Add ATA DMA support
Benjamin Herrenschmidt
benh at kernel.crashing.org
Fri Jul 4 09:47:03 EST 2008
On Thu, 2008-07-03 at 16:35 +0100, Tim Yamin wrote:
> >> +static void
> >> +mpc52xx_bmdma_start(struct ata_queued_cmd *qc)
> >> +{
> >> + struct ata_port *ap = qc->ap;
> >> + struct mpc52xx_ata_priv *priv = ap->host->private_data;
> >> +
> >> + /* LocalBus lock */
> >> + while (test_and_set_bit(0, &pata_mpc52xx_ata_dma_lock) != 0)
> >> + ;
> >
> > Need to be able to bail on timeout.
>
> A deadlock can't occur within the PATA driver because you won't have
> two DMA requests happening at once, so there is no point in adding a
> timeout. And even if you do have a timeout, you'd have to drop the I/O
> request somehow, so it's not really a good idea. If anything else
> needs to touch the DMA lock, it should do so in a sensible fashion...
But why a hand-coded lock with bitops ? Why not a real spinlock then ?
The later is more efficient anyway.
Ben.
More information about the Linuxppc-dev
mailing list