freebsd-current
[Prev] Thread [Next] | [Prev] Date [Next]
Re: [PATCH RFC]: Bus_dma eats all available memory Scott Long Fri Jun 26 08:00:18 2009
Piotr Zięcik wrote:
Thursday 25 June 2009 20:30:27 Scott Long napisał(a):Piotr Zięcik wrote:Hi While working on new driver for FreeBSD I have found a problem in bus_dma subsystem. Every time when bus_dmamap_create() is called on bus_dma tag using bounce zone, at least 1 page in bounce zone is allocated. This causes eating of all avaible memory by bounce zone. Problem affects i386, amd64 and arm.The code block that you point at can only be entered if the maxpages limit has not been reached. However, the max limit is per zone, not global, and there's no easy way to make it be global. Are you creating an excessive number of tags/zones?Driver creates one tag and and one map everytime when new request arrives. Both are freed after processing. Driver can queue maximum 64 requests, soit there will not be more than 64 tags and 64 maps. Debugging shows that the limit is never reached and number of tags and maps is around 30 - 40. In my oppinion this is not excessive number of tags.
Tags and maps should be allocated at driver initialization time, not every time a request comes in. The problem here isn't the MAX() test, it's that the MIN_ALLOC_COMP test is getting fooled because the tag keeps on getting recycled. The correct fix is likely to move the flag into the bounce zone object. But in general, you should not be allocating and freeing tags and maps so often, they are meant to have a long lifespan. Scott _______________________________________________ [EMAIL PROTECTED] mailing list http://lists.freebsd.org/mailman/listinfo/freebsd-current To unsubscribe, send any mail to "[EMAIL PROTECTED]"
- [PATCH RFC]: Bus_dma eats all available memory Piotr Zięcik
- Re: [PATCH RFC]: Bus_dma eats all available memory Scott Long
- Re: [PATCH RFC]: Bus_dma eats all available memory Piotr Zięcik
- Re: [PATCH RFC]: Bus_dma eats all available memory Scott Long <=