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. _______________________________________________ Linuxppc-dev mailing list Linuxppc-dev@ozlabs.org https://ozlabs.org/mailman/listinfo/linuxppc-dev