Re: API change for bus_dma
From: Andrew Gallatin (gallatin_at_cs.duke.edu)
Date: 06/27/03
- Previous message: Scott Long: "Re: API change for bus_dma"
- In reply to: Scott Long: "Re: API change for bus_dma"
- Next in thread: Scott Long: "Re: API change for bus_dma"
- Reply: Scott Long: "Re: API change for bus_dma"
- Reply: Terry Lambert: "Re: API change for bus_dma"
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ] [ attachment ]
Date: Fri, 27 Jun 2003 16:58:35 -0400 (EDT) To: Scott Long <scott_long@btc.adaptec.com>
Scott Long writes:
>
> I'm not familiar with Solaris DDI. bus_dmamem_alloc() is guaranteed to
> give you contiguous memory that doesn't require bouncing (or ENOMEM if
> that's not possible). I can't imagine what DDI_DMA_STREAMING is.
Most sparc's have 2 different sorts of DMA modes. One is cache
coherent (aka DDI_DMA_CONSISTENT) -- this is what we all know and love
from PC, alphas, macs, etc.
The other mode (DDI_DMA_STREAMING) allows non cache coherent DMA.
This requires you to call ddi_dma_sync() between your last touch of
the data and you starting a DMA read from a device. And vice-versa
for a DMA write.
The reason people use DDI_DMA_STREAMING is because coherent DMA
bandwith tends to be abysmal on most sparcs. Using DDI_DMA_STREAMING
upgrades the bandwith from abysmal to just bad. Here are some
examples:
For u80, UltraSPARC II, using chip "Psycho",
98 MBytes/s consistent vs. 150 MBytes/s streaming.
For sunfire, UltraSPARC III, using chip "Schizo",
70 MBytes/s consistent vs. 173 MBytes/s streaming.
(compare to 450MB/sec for most intel 64-bit/66MHz PCI slots)..
Drew
_______________________________________________
freebsd-arch@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-arch
To unsubscribe, send any mail to "freebsd-arch-unsubscribe@freebsd.org"
- Previous message: Scott Long: "Re: API change for bus_dma"
- In reply to: Scott Long: "Re: API change for bus_dma"
- Next in thread: Scott Long: "Re: API change for bus_dma"
- Reply: Scott Long: "Re: API change for bus_dma"
- Reply: Terry Lambert: "Re: API change for bus_dma"
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ] [ attachment ]
Relevant Pages
- Re: Volatile variables
... I/O methods ("DMA" and the like) that completely bypass the CPU. ...
then DMA bypasses the on-chip cache. ... memory. ... (comp.lang.c) - Re: use/cause of ide=nodma boot parameter?
... Some drives do not work reliable with DMA. ... Various chip sets manage memory
and cache differently. ... For some chip sets the DMA engines are shared and if
the DMA engine is ... (Fedora) - [PATCH 1/2] DMA buffer alignment annotations
... object within a structure isn't sharing a cache line with some ... Such sharing
of a data structure between DMA and non-DMA objects ... +Note that on non-cache-coherent
architectures, having a DMA buffer ... (Linux-Kernel) - Re: [PATCH] Containment measures for slab objects on scatter gather lists
... why aren't we already buggy? ... DMA to or from memory should be done
via the DMA mapping API. ... Other cache flushing functions should not be called for DMA
operations; ... (Linux-Kernel) - SCSI breakage on non-cache coherent architectures
... architecture which happens to have non-coherent PCI DMA. ... gets cache
invalidated when the DMA happens, ... (Linux-Kernel)