Re: [PATCH] ARCH_SLAB_MINALIGN for 2.6.10-rc3

From: Manfred Spraul
Date: Mon Dec 06 2004 - 17:17:55 EST


Paul Mundt wrote:

Hi Manfred,

On Sun, Dec 05, 2004 at 10:30:46PM +0100, Manfred Spraul wrote:


--- orig/include/asm-sh64/uaccess.h
+++ mod/include/asm-sh64/uaccess.h
@@ -313,6 +313,12 @@
sh64 at the moment). */
#define ARCH_KMALLOC_MINALIGN 8

+/*
+ * We want 8-byte alignment for the slab caches as well, otherwise we have
+ * the same BYTES_PER_WORD (sizeof(void *)) min align in kmem_cache_create().
+ */
+#define ARCH_SLAB_MINALIGN 8
+




Could you make that dependant on !CONFIG_DEBUG_SLAB? Setting align to a non-zero value disables some debug code.



align is only being set to ARCH_SLAB_MINALIGN in kmem_cache_create()
where it is otherwise being set to BYTES_PER_WORD as a default. Unless I
am missing something, that will always set it non-zero irregardless of
whether ARCH_SLAB_MINALIGN is set.



No, you are right. I didn't read the source carefully enough.
Now that I have reread it, I see one problem:
ARCH_KMALLOC_MINALIGN is a hard limit: It's always honored, the only exception is that values larger than the kmalloc block size are ignored. I.e. _MINALIGN 32 guarantees that the objects are 32-byte aligned (since the smallest block size is 32-bytes). The define was added, because some archs really need a certain alignment, otherwise they won't boot. The normal alignment for kmalloc caches is cache line alignment, except with CONFIG_DEBUG_SLAB, then it's word alignment.

With your patch, ARCH_SLAB_MINALIGN is not a hard limit: A few lines further down align is reset to word size if SLAB_RED_ZONE is set. I don't like the asymmetry - it just asks for trouble.

I must think about it. Perhaps just rename ARCH_SLAB_MINALIGN to ARCH_SLAB_DEFAULTALIGN.

--
Manfred
-
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/