On Tue, Nov 02, 2004 at 04:49:20PM +0100, Pierre Ossman wrote:I'm currently running 2.6.9. No external patches (except for my own stuff related to this driver).
The problem is now that this allocation doesn't always succeed. When it fails I get:
insmod: page allocation failure. order:4, mode:0x11
This is a big allocation and the kernel is having problem finding such a big page, due to memory fragmentation (as you mention below).
What kernel version are you using?
-mm contains a series of patches from Nick which should make the situation better, have you tried it? Currently kswapd doenst honour high order page shortage.No I haven't. Only saw it today and I usually don't use the -mm tree. I've gotten the impression it's a bit too bleeding edge for me ;)
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.As for solutions I've tried using __GFP_REPEAT which seems to do the trick. But the double underscore indicates (at least to me) that these are internal defines that shouldn't be used except for very special cases. What is the policy about these?
Its OK to use these flags externally. They might change in future major kernel
versions though, or even future v2.6 release. ie its not a stable API.