Source-Changes-D archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Re: CVS commit: src/sys/uvm

On Tue, Jan 04, 2011 at 02:32:02AM -0800, Matt Thomas wrote:
> Not really.  A lot of device can only do 32bit DMA transfers so without some 
> type assistance (like the alpha has) you are restricted to DMA to the first 
> 4GB of RAM.  If you are doing DMA to an address >= 4GB, the system will stage 
> the data in a buffer < 4GB for the DMA and then move the data to its ultimate 
> destination (for a read).  For a write it copies to the "bounce" buffer, and 
> then does a DMA.
> The point is if you are allocating a mbuf or a usb buffer, it makes sense to 
> allocate from the first 4GB if you can to avoid using bounce buffers.
> It's just a preference.

Is there some provision to always keep some <4GB pages free (with some being
quite large for e.g. USB descriptors) so there is always some bounce buffers
available ? AFAIK, if you allocate from the <4Gb free list, you can eat all
DMA-capable RAM.
I fixed this issue in arch/x86/x86/x86_machdep.c 1.37, I wonder if your change
has reintroduced this problem ...

Manuel Bouyer <>
     NetBSD: 26 ans d'experience feront toujours la difference

Home | Main Index | Thread Index | Old Index