linux kernel development (12 Memory Management)
Yo u c a n n o t s p e c i f y __GFP_HIGHMEM to either __get_free_pages() or kmalloc().
Because these both return a logical address, and not a page structure, it is possible that
these functions would allocate memory not currently mapped in the kernel’s virtual
address space and, thus, does not have a logical address. Only alloc_pages() can allocate
high memory.The majority of your allocations, however, will not specify a zone modifier
because ZONE_NORMAL is sufficient
http://comments.gmane.org/gmane.linux.ports.arm.kernel/96732