http://www.fiveanddime.net/man-pages/kmalloc.9.html
GFP_ATOMIC
tries to allocate the memory immediately. The task will not sleep if the memory isn't available. There is a number of reserved pages for GFP_ATOMIC. For allocating memory on interrupt this has to be used.
GFP_KERNEL
is the normal way to allocate memory in the kernel space. The reserved pages will not be used, and if the memory is not available immediately, try_to_free_page() will be called.