linux/mm
Christoph Lameter d07dbea464 Slab allocators: support __GFP_ZERO in all allocators
A kernel convention for many allocators is that if __GFP_ZERO is passed to an
allocator then the allocated memory should be zeroed.

This is currently not supported by the slab allocators.  The inconsistency
makes it difficult to implement in derived allocators such as in the uncached
allocator and the pool allocators.

In addition the support zeroed allocations in the slab allocators does not
have a consistent API.  There are no zeroing allocator functions for NUMA node
placement (kmalloc_node, kmem_cache_alloc_node).  The zeroing allocations are
only provided for default allocs (kzalloc, kmem_cache_zalloc_node).
__GFP_ZERO will make zeroing universally available and does not require any
addititional functions.

So add the necessary logic to all slab allocators to support __GFP_ZERO.

The code is added to the hot path.  The gfp flags are on the stack and so the
cacheline is readily available for checking if we want a zeroed object.

Zeroing while allocating is now a frequent operation and we seem to be
gradually approaching a 1-1 parity between zeroing and not zeroing allocs.
The current tree has 3476 uses of kmalloc vs 2731 uses of kzalloc.

Signed-off-by: Christoph Lameter <clameter@sgi.com>
Acked-by: Pekka Enberg <penberg@cs.helsinki.fi>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2007-07-17 10:23:01 -07:00
..
allocpercpu.c
backing-dev.c remove mm/backing-dev.c:congestion_wait_interruptible() 2007-07-16 09:05:52 -07:00
bootmem.c
bounce.c
fadvise.c
filemap_xip.c xip sendfile removal 2007-07-10 08:04:15 +02:00
filemap.c Fix read/truncate race 2007-07-17 10:22:59 -07:00
filemap.h
fremap.c
highmem.c Create the ZONE_MOVABLE zone 2007-07-17 10:22:59 -07:00
hugetlb.c Allow huge page allocations to use GFP_HIGH_MOVABLE 2007-07-17 10:22:59 -07:00
internal.h
Kconfig Merge master.kernel.org:/pub/scm/linux/kernel/git/lethal/sh-2.6 2007-07-16 10:32:02 -07:00
madvise.c speed up madvise_need_mmap_write() usage 2007-07-16 09:05:36 -07:00
Makefile
memory_hotplug.c
memory.c Add __GFP_MOVABLE for callers to flag allocations from high memory that may be migrated 2007-07-17 10:22:59 -07:00
mempolicy.c Allow huge page allocations to use GFP_HIGH_MOVABLE 2007-07-17 10:22:59 -07:00
mempool.c permit mempool_free(NULL) 2007-07-16 09:05:52 -07:00
migrate.c Add __GFP_MOVABLE for callers to flag allocations from high memory that may be migrated 2007-07-17 10:22:59 -07:00
mincore.c
mlock.c do not limit locked memory when RLIMIT_MEMLOCK is RLIM_INFINITY 2007-07-16 09:05:37 -07:00
mmap.c split mmap 2007-07-16 09:05:37 -07:00
mmzone.c
mprotect.c
mremap.c security: Protection for exploiting null dereference using mmap 2007-07-11 22:52:29 -04:00
msync.c
nommu.c nommu: stub expand_stack() for nommu case 2007-07-16 09:05:37 -07:00
oom_kill.c
page_alloc.c Lumpy Reclaim V4 2007-07-17 10:22:59 -07:00
page_io.c
page-writeback.c dirty_writeback_centisecs_handler() cleanup 2007-07-16 09:05:47 -07:00
pdflush.c
prio_tree.c
quicklist.c
readahead.c
rmap.c mm: kill validate_anon_vma to avoid mapcount BUG 2007-06-28 11:34:53 -07:00
shmem_acl.c
shmem.c Add __GFP_MOVABLE for callers to flag allocations from high memory that may be migrated 2007-07-17 10:22:59 -07:00
slab.c Slab allocators: support __GFP_ZERO in all allocators 2007-07-17 10:23:01 -07:00
slob.c Slab allocators: support __GFP_ZERO in all allocators 2007-07-17 10:23:01 -07:00
slub.c Slab allocators: support __GFP_ZERO in all allocators 2007-07-17 10:23:01 -07:00
sparse.c Move three functions that are only needed for CONFIG_MEMORY_HOTPLUG 2007-06-08 17:23:33 -07:00
swap_state.c Add __GFP_MOVABLE for callers to flag allocations from high memory that may be migrated 2007-07-17 10:22:59 -07:00
swap.c
swapfile.c vmscan: fix comments related to shrink_list() 2007-07-16 09:05:35 -07:00
thrash.c
tiny-shmem.c
truncate.c invalidate_mapping_pages(): add cond_resched 2007-07-16 09:05:36 -07:00
util.c Slab allocators: consistent ZERO_SIZE_PTR support and NULL result semantics 2007-07-17 10:23:01 -07:00
vmalloc.c [POWERPC] unmap_vm_area becomes unmap_kernel_range for the public 2007-06-14 22:29:56 +10:00
vmscan.c mm: clean up and kernelify shrinker registration 2007-07-17 10:23:00 -07:00
vmstat.c Create the ZONE_MOVABLE zone 2007-07-17 10:22:59 -07:00