[lkml]   [1999]   [Dec]   [10]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
Messages in this thread
SubjectRe: Alpha: virt_to_bus/GFP_DMA problem

> The right solution IMHO is what David Miller introduced on sbus:
> instead of using virt_to_bus & co. drivers acquire a DMA handler before
> doing DMA using
> handle = pci_map_single(pci_dev *dev, void *addr, long len, int flags)
> or
> handle = pci_map_sg(pci_dev *dev, struct scatterlist *sg, int flags)

definitely. but do we need to make this dangerously elaborate or tie it
in with a insanely flexible (if slow) zoning allocator?

the ess maestro sound board has 28bits of address lines. it can have
multiple channels being dmaed and mixed into output at once. but due to
the way its referenced, all the memory that is being DMAed must be
phiscally within 4meg of each other.

so to support many channels playing without preallocating the memory a
maestro driver would want alloc( < 256meg) and later an alloatiion "near"
its previous one. Yuck.

so I guess my point is that we don't want to go too nutty with the API,
there will always be some broken devices that will just have to not work
to their fullest.

> unmap will then free the translation tables on Sparc, Alpha and as SCT said
> on some AGP chipsets as well.

*nod* it appears some agp chipsets can do pci addressing through the

-- zach

- - - - - -
007 373 5963

To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to
Please read the FAQ at

 \ /
  Last update: 2005-03-22 13:55    [W:0.029 / U:37.384 seconds]
©2003-2018 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site