On Thu, Mar 15, 2012 at 08:29:08PM +0100, Mark Kettenis wrote:
> > Date: Wed, 14 Mar 2012 02:25:02 +0100
> > From: Tobias Ulmer <[email protected]>
> > 
> > I have a couple of machines with an EHCI controller that refuses to work
> > with memory above 2G, causing all kinds of trouble. This diff enables
> > setting a bus_dma boundary and allows me to make off-site backups again.
> 
> Setting the bus_dma boundary to 2G doesn't restrict the memory to be
> allocated below the 2G boundary.  It just prevents memory being
> allocated *across* the 2G boundary (i.e. start just before the 2G and
> end after it).
> 
> Now it may be that the actual restriction of the buggy nvidia
> controllers is that you may not cross a 2GB boundary, but it would be
> pretty unlikely that you hit that case.  So I guess you're just
> getting lucky that by enforcing the 2G boundary the page allocator
> decides to give you pages below 2G.  At some point, if memory under 2G
> is getting scarce the allocator will hand you memory above the 2G
> boundary and things break.
> 
> The proper way to fix this is probably to make bus_dmamem_alloc_range()
> a full member of the bus_dma family and use that to allocate memory
> below 2G boundary.
> 

Hi Mark,

thanks for pointing that out. I had checked the address, it ended up
being below 2G every reboot in my case. But that's clearly not good
enough...

Oh well, at least I learned something from it :-)

Reply via email to