提交 5af60839 编写于 作者: C Christoph Lameter 提交者: Linus Torvalds

slab allocators: Remove obsolete SLAB_MUST_HWCACHE_ALIGN

This patch was recently posted to lkml and acked by Pekka.

The flag SLAB_MUST_HWCACHE_ALIGN is

1. Never checked by SLAB at all.

2. A duplicate of SLAB_HWCACHE_ALIGN for SLUB

3. Fulfills the role of SLAB_HWCACHE_ALIGN for SLOB.

The only remaining use is in sparc64 and ppc64 and their use there
reflects some earlier role that the slab flag once may have had. If
its specified then SLAB_HWCACHE_ALIGN is also specified.

The flag is confusing, inconsistent and has no purpose.

Remove it.
Acked-by: NPekka Enberg <penberg@cs.helsinki.fi>
Signed-off-by: NChristoph Lameter <clameter@sgi.com>
Signed-off-by: NAndrew Morton <akpm@linux-foundation.org>
Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
上级 96018fda
...@@ -1057,8 +1057,7 @@ static int __init hugetlbpage_init(void) ...@@ -1057,8 +1057,7 @@ static int __init hugetlbpage_init(void)
huge_pgtable_cache = kmem_cache_create("hugepte_cache", huge_pgtable_cache = kmem_cache_create("hugepte_cache",
HUGEPTE_TABLE_SIZE, HUGEPTE_TABLE_SIZE,
HUGEPTE_TABLE_SIZE, HUGEPTE_TABLE_SIZE,
SLAB_HWCACHE_ALIGN | SLAB_HWCACHE_ALIGN,
SLAB_MUST_HWCACHE_ALIGN,
zero_ctor, NULL); zero_ctor, NULL);
if (! huge_pgtable_cache) if (! huge_pgtable_cache)
panic("hugetlbpage_init(): could not create hugepte cache\n"); panic("hugetlbpage_init(): could not create hugepte cache\n");
......
...@@ -183,8 +183,7 @@ void pgtable_cache_init(void) ...@@ -183,8 +183,7 @@ void pgtable_cache_init(void)
"for size: %08x...\n", name, i, size); "for size: %08x...\n", name, i, size);
pgtable_cache[i] = kmem_cache_create(name, pgtable_cache[i] = kmem_cache_create(name,
size, size, size, size,
SLAB_HWCACHE_ALIGN | SLAB_HWCACHE_ALIGN,
SLAB_MUST_HWCACHE_ALIGN,
zero_ctor, zero_ctor,
NULL); NULL);
if (! pgtable_cache[i]) if (! pgtable_cache[i])
......
...@@ -262,8 +262,7 @@ void __init pgtable_cache_init(void) ...@@ -262,8 +262,7 @@ void __init pgtable_cache_init(void)
tsb_caches[i] = kmem_cache_create(name, tsb_caches[i] = kmem_cache_create(name,
size, size, size, size,
SLAB_HWCACHE_ALIGN | SLAB_HWCACHE_ALIGN,
SLAB_MUST_HWCACHE_ALIGN,
NULL, NULL); NULL, NULL);
if (!tsb_caches[i]) { if (!tsb_caches[i]) {
prom_printf("Could not create %s cache\n", name); prom_printf("Could not create %s cache\n", name);
......
...@@ -26,7 +26,6 @@ typedef struct kmem_cache kmem_cache_t __deprecated; ...@@ -26,7 +26,6 @@ typedef struct kmem_cache kmem_cache_t __deprecated;
#define SLAB_POISON 0x00000800UL /* DEBUG: Poison objects */ #define SLAB_POISON 0x00000800UL /* DEBUG: Poison objects */
#define SLAB_HWCACHE_ALIGN 0x00002000UL /* Align objs on cache lines */ #define SLAB_HWCACHE_ALIGN 0x00002000UL /* Align objs on cache lines */
#define SLAB_CACHE_DMA 0x00004000UL /* Use GFP_DMA memory */ #define SLAB_CACHE_DMA 0x00004000UL /* Use GFP_DMA memory */
#define SLAB_MUST_HWCACHE_ALIGN 0x00008000UL /* Force alignment even if debuggin is active */
#define SLAB_STORE_USER 0x00010000UL /* DEBUG: Store the last owner for bug hunting */ #define SLAB_STORE_USER 0x00010000UL /* DEBUG: Store the last owner for bug hunting */
#define SLAB_RECLAIM_ACCOUNT 0x00020000UL /* Objects are reclaimable */ #define SLAB_RECLAIM_ACCOUNT 0x00020000UL /* Objects are reclaimable */
#define SLAB_PANIC 0x00040000UL /* Panic if kmem_cache_create() fails */ #define SLAB_PANIC 0x00040000UL /* Panic if kmem_cache_create() fails */
......
...@@ -175,12 +175,12 @@ ...@@ -175,12 +175,12 @@
# define CREATE_MASK (SLAB_DEBUG_INITIAL | SLAB_RED_ZONE | \ # define CREATE_MASK (SLAB_DEBUG_INITIAL | SLAB_RED_ZONE | \
SLAB_POISON | SLAB_HWCACHE_ALIGN | \ SLAB_POISON | SLAB_HWCACHE_ALIGN | \
SLAB_CACHE_DMA | \ SLAB_CACHE_DMA | \
SLAB_MUST_HWCACHE_ALIGN | SLAB_STORE_USER | \ SLAB_STORE_USER | \
SLAB_RECLAIM_ACCOUNT | SLAB_PANIC | \ SLAB_RECLAIM_ACCOUNT | SLAB_PANIC | \
SLAB_DESTROY_BY_RCU | SLAB_MEM_SPREAD) SLAB_DESTROY_BY_RCU | SLAB_MEM_SPREAD)
#else #else
# define CREATE_MASK (SLAB_HWCACHE_ALIGN | \ # define CREATE_MASK (SLAB_HWCACHE_ALIGN | \
SLAB_CACHE_DMA | SLAB_MUST_HWCACHE_ALIGN | \ SLAB_CACHE_DMA | \
SLAB_RECLAIM_ACCOUNT | SLAB_PANIC | \ SLAB_RECLAIM_ACCOUNT | SLAB_PANIC | \
SLAB_DESTROY_BY_RCU | SLAB_MEM_SPREAD) SLAB_DESTROY_BY_RCU | SLAB_MEM_SPREAD)
#endif #endif
......
...@@ -21,7 +21,7 @@ ...@@ -21,7 +21,7 @@
* *
* SLAB is emulated on top of SLOB by simply calling constructors and * SLAB is emulated on top of SLOB by simply calling constructors and
* destructors for every SLAB allocation. Objects are returned with * destructors for every SLAB allocation. Objects are returned with
* the 8-byte alignment unless the SLAB_MUST_HWCACHE_ALIGN flag is * the 8-byte alignment unless the SLAB_HWCACHE_ALIGN flag is
* set, in which case the low-level allocator will fragment blocks to * set, in which case the low-level allocator will fragment blocks to
* create the proper alignment. Again, objects of page-size or greater * create the proper alignment. Again, objects of page-size or greater
* are allocated by calling __get_free_pages. As SLAB objects know * are allocated by calling __get_free_pages. As SLAB objects know
...@@ -295,7 +295,7 @@ struct kmem_cache *kmem_cache_create(const char *name, size_t size, ...@@ -295,7 +295,7 @@ struct kmem_cache *kmem_cache_create(const char *name, size_t size,
c->ctor = ctor; c->ctor = ctor;
c->dtor = dtor; c->dtor = dtor;
/* ignore alignment unless it's forced */ /* ignore alignment unless it's forced */
c->align = (flags & SLAB_MUST_HWCACHE_ALIGN) ? SLOB_ALIGN : 0; c->align = (flags & SLAB_HWCACHE_ALIGN) ? SLOB_ALIGN : 0;
if (c->align < align) if (c->align < align)
c->align = align; c->align = align;
} else if (flags & SLAB_PANIC) } else if (flags & SLAB_PANIC)
......
...@@ -1496,7 +1496,7 @@ static unsigned long calculate_alignment(unsigned long flags, ...@@ -1496,7 +1496,7 @@ static unsigned long calculate_alignment(unsigned long flags,
* specified alignment though. If that is greater * specified alignment though. If that is greater
* then use it. * then use it.
*/ */
if ((flags & (SLAB_MUST_HWCACHE_ALIGN | SLAB_HWCACHE_ALIGN)) && if ((flags & SLAB_HWCACHE_ALIGN) &&
size > L1_CACHE_BYTES / 2) size > L1_CACHE_BYTES / 2)
return max_t(unsigned long, align, L1_CACHE_BYTES); return max_t(unsigned long, align, L1_CACHE_BYTES);
...@@ -3142,8 +3142,7 @@ SLAB_ATTR(reclaim_account); ...@@ -3142,8 +3142,7 @@ SLAB_ATTR(reclaim_account);
static ssize_t hwcache_align_show(struct kmem_cache *s, char *buf) static ssize_t hwcache_align_show(struct kmem_cache *s, char *buf)
{ {
return sprintf(buf, "%d\n", !!(s->flags & return sprintf(buf, "%d\n", !!(s->flags & SLAB_HWCACHE_ALIGN));
(SLAB_HWCACHE_ALIGN|SLAB_MUST_HWCACHE_ALIGN)));
} }
SLAB_ATTR_RO(hwcache_align); SLAB_ATTR_RO(hwcache_align);
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册