Now for the good stuff! ;) This one has had more changes... I've changed the syscall from sys_membind to sys_mbind. I liked Paolo's suggestion of aligning the naming. I've fixed up the way the bitmaps are passed. I pulled out all the ZONE_* code, and now just have it use all the zones on the node. I made sure that the binding pointers are not compiled in for non-NUMA kernels. All that is added for non-NUMA kernels is the cond_syscall and a small change in the page_cache_alloc callpath. Now page_cache_alloc calls __page_cache_alloc, which is just the old page_cache_alloc for non-NUMA. For NUMA, it's obviously a different function. I also cleaned up the bitmask size issue, by just making sure userspace doesn't pass in a bitmask that's way too large. I guess that's it... As always, I'm looking forward to any comments! Cheers! -Matt