Messages in this thread | | | Date | Tue, 24 Jul 2007 00:35:26 -0700 (PDT) | From | Christoph Lameter <> | Subject | Re: [PATCH] add __GFP_ZERO to GFP_LEVEL_MASK |
| |
On Tue, 24 Jul 2007, Peter Zijlstra wrote:
> > There is another exception for __GFP_DMA. > > non of the zone specifiers are
__GFP_DMA is handled in a similar way to __GFP_ZERO though. Its explicitly listed in BUG_ON() because it can be specified in the gfpflags to kmalloc but also set by having created a slab with SLAB_DMA. It is also cleared by the & GFP_LEVEL_MASK.
> > > Anybody else got a preference? > > > > > #define __GFP_BITS_MASK ((__force gfp_t)((1 << __GFP_BITS_SHIFT) - 1)) > > > > > > -/* if you forget to add the bitmask here kernel will crash, period */ > > > +/* > > > + * If you forget to add the bitmask here kernel will crash, period! > > > + * > > > + * GFP_LEVEL_MASK is used to filter out the flags that are to be passed to the > > > + * page allocator. > > > + * > > > > GFP_LEVEL_MASK is also used in mm/vmalloc.c. We need a definition that > > goes beyond slab allocators. > > Right, bugger.
Lets get rid of the cryptic sentence there and explain it in a better way. GFP_LEVEL_MASK contains the flags that are passed to the page allocator by derived allocators (such as slab allocators and vmalloc, maybe the uncached allocator may use it in the future?).
__get_vm_area_node also relies on GFP_LEVEL_MASK to clear the __GFP_ZERO flag. Otherwise the kmalloc_node there would needlessly return zeroed memory (or have failed in the past). - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
| |