Re: libata & no PCI: dma_[un]map_single undefined

From: Jeff Garzik
Date: Tue Jun 05 2007 - 10:26:04 EST


On Tue, Jun 05, 2007 at 03:17:14PM +0100, Russell King wrote:
> On Tue, Jun 05, 2007 at 09:56:08AM -0400, Jeff Garzik wrote:
> > On Tue, Jun 05, 2007 at 12:22:18PM +0100, Alan Cox wrote:
> > > > NAK
> > > >
> > > > We have generic devices and generic DMA mapping. libata already uses
> > > > the generic stuff. Now fix the platform...
> > >
> > > Nice theory but your generic helpers rely on the map functions working
> > > even for generic hardware that doesn't need them, so at the very least
> > > there is some clean up required.
> >
> > Sure there is some clean up needed -- on the arch side.
> >
> > Even !PCI dma_xxx wrappers that do nothing more than return a dma
> > mapping error are a valid platform implementation.
>
> If you don't have DMA capabilities, does libata still need ->pad and
> ->pad_dma set?
>
> I had a problem where a pata_platform device which wasn't DMA capable
> failed to initialise because we quite rightfully made dma_alloc_coherent()
> fail (due to the DMA masks not being set.)
>
> It seems odd that libata requires DMA memory for non-DMA capable devices...

Now -that- is a quite valid complaint.

libata needs a bit of work to fall back to PIO-only, if dma_xxx fails.

libata also needs some work to fall back to PIO polling, if IRQ is not
present, or registration fails.

Jeff



-
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/