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 :-)
