Re: can you switch between GFP_ATOMIC and GFP_KERNEL?

From: Roland Dreier
Date: Fri Dec 31 2004 - 23:18:53 EST


Michael> My question is, new sk_buffs are always allocated with
Michael> GFP_KERNEL and can be swapped out. Is it possible to
Michael> change the allocation status of already-allocated memory
Michael> to GFP_ATOMIC on the fly? (i.e. both the slab-cache
Michael> sk_buff header memory as well as the kmalloc'd data
Michael> area).

This question is ill-posed -- kernel memory can never be swapped out,
whether it's allocated with GFP_KERNEL or GFP_ATOMIC. The difference
between GFP_KERNEL and GFP_ATOMIC is whether the actual allocation can
sleep, that is:

foo = kmalloc(sizeof foo, GFP_ATOMIC); /* will not sleep */
foo = kmalloc(sizeof foo, GFP_KERNEL); /* can sleep */

However, whichever gfp flags are used to allocate memory, the memory
is the same once the allocation is done. Neither kmalloc'ed memory
nor sk_buffs will ever be swapped.

- Roland
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/