On Tue, Nov 02, 2004 at 07:01:55PM +0100, Pierre Ossman wrote:Yes, I've browsed through these. __GFP_NOFAIL seems like it can hang for a very long time (I don't know if there is an upper bound on how long it will have to wait for a free page). __GFP_REPEAT seems to work good enough in this case.
Is there any other way of increasing the chances of actually getting the pages I need? Since it is DMA it needs to be one big block.
__GFP_NOFAIL, from gfp.h:
* Action modifiers - doesn't change the zoning
*
* __GFP_REPEAT: Try hard to allocate the memory, but the allocation attempt
* _might_ fail. This depends upon the particular VM implementation.
*
* __GFP_NOFAIL: The VM implementation _must_ retry infinitely: the caller
* cannot handle allocation failures.
*
* __GFP_NORETRY: The VM implementation must not retry indefinitely.
*/