diff mbox

slab: fix slab flags for archs use alignment larger 64-bit

Message ID 49957F98.50708@st.com (mailing list archive)
State Changes Requested
Headers show

Commit Message

Peppe CAVALLARO Feb. 13, 2009, 2:11 p.m. UTC
Giuseppe CAVALLARO wrote:
> Pekka Enberg wrote:
>   
>> Hi Giuseppe,
>>
>> On Fri, Feb 13, 2009 at 12:46 PM, Giuseppe CAVALLARO
>> <peppe.cavallaro@st.com> wrote:
>>   
>>     
>>> 1) LOG with my patch:
>>> root@linux:~# cat /proc/meminfo | grep Slab
>>> Slab:             2612 kB
>>>
>>> 2) LOG without my patch:
>>> root@linux:~# cat /proc/meminfo | grep Slab
>>> Slab:             2504 kB
>>>     
>>>       
>> That's not too bad. I assume it's L1_CACHE_BYTES set to 32 bytes? 
>>     
> you are perfectly right.
>   
>> One big problem with your patch is that on some MIPS configurations
>> ARCH_KMALLOC_MINALIGN is as big as 128.
>>     
> Agree again and problem understood... thanks!
>   
>> So if you're going to do this, you can't use ARCH_KMALLOC_MINALIGN directly but add a some
>> SLAB_MAX_DEBUG_ALIGN which can be overridden by architecture code.
>>   
>>     
> If you like, I can prepare a patch in any case.
> Then we can decide if it actually adds complexity and discard it.
> Otherwise we could maintain it.
>   
>> One obvious question, though, is whether all this is worth the added
>> complexity. I mean, we've managed "just fine" without it for years.
>> Paul, thoughts?
>>
>>                                         Pekka
>>   
>>     
Hi!
as promised, patches attached.
At any rate, (this is just my feeling) although we add more complexity
this kind of 'fixes' can actually help users to debug.
So, complexity is welcome especially in these scenarios (debug on, users
in panic mode :-)).
Let me know.
Cheers,
Peppe
From 86c7fe861b4a6ee7b533a25ce2c506134a7533a8 Mon Sep 17 00:00:00 2001
From: Giuseppe Cavallaro <peppe.cavallaro@st.com>
Date: Fri, 13 Feb 2009 15:06:22 +0100
Subject: [PATCH] slab: fix the debug information with different alignments.

This patch is to fix the debug information reported in /proc/slab_allocators

for all the architectures by using a new define (ARCH_SLAB_MAX_DEBUG_ALIGN)
rather than the alignment of a 64-bit integer.
Currently, on sh, for example, /proc/slab_allocators has no size-X entries
as side effect.

Signed-off-by: Giuseppe Cavallaro <peppe.cavallaro@st.com>
---
 mm/slab.c |    6 +++++-
 1 files changed, 5 insertions(+), 1 deletions(-)

Comments

Pekka Enberg Feb. 13, 2009, 1:41 p.m. UTC | #1
Hi Giuseppe,

On Fri, Feb 13, 2009 at 4:11 PM, Giuseppe CAVALLARO
<peppe.cavallaro@st.com> wrote:
> @@ -2262,7 +2266,7 @@ kmem_cache_create (const char *name, size_t size, size_t align,
>                ralign = align;
>        }
>        /* disable debug if necessary */
> -       if (ralign > __alignof__(unsigned long long))
> +       if (ralign > ARCH_SLAB_MAX_DEBUG_ALIGN)
>                flags &= ~(SLAB_RED_ZONE | SLAB_STORE_USER);
>        /*
>         * 4) Store it.

This doesn't address the issues raised by Paul at all.

                                Pekka
--
To unsubscribe from this list: send the line "unsubscribe linux-sh" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Peppe CAVALLARO Feb. 18, 2009, 9:30 a.m. UTC | #2
Hi Pekka,
Pekka Enberg wrote:
> Hi Giuseppe,
>
> On Fri, Feb 13, 2009 at 4:11 PM, Giuseppe CAVALLARO
> <peppe.cavallaro@st.com> wrote:
>   
>> @@ -2262,7 +2266,7 @@ kmem_cache_create (const char *name, size_t size, size_t align,
>>                ralign = align;
>>        }
>>        /* disable debug if necessary */
>> -       if (ralign > __alignof__(unsigned long long))
>> +       if (ralign > ARCH_SLAB_MAX_DEBUG_ALIGN)
>>                flags &= ~(SLAB_RED_ZONE | SLAB_STORE_USER);
>>        /*
>>         * 4) Store it.
>>     
>
> This doesn't address the issues raised by Paul at all.
>
>                                 Pekka
>   
Sorry for my late reply.
You are right.
I'm going to review this but this could take a while.
I'll go back to you as soon as possible.
Regards,
Peppe
//
--
To unsubscribe from this list: send the line "unsubscribe linux-sh" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
diff mbox

Patch

diff --git a/mm/slab.c b/mm/slab.c
index 4d00855..587e0f3 100644
--- a/mm/slab.c
+++ b/mm/slab.c
@@ -165,6 +165,10 @@ 
 #define ARCH_SLAB_MINALIGN 0
 #endif
 
+#ifndef ARCH_SLAB_MAX_DEBUG_ALIGN
+#define ARCH_SLAB_MAX_DEBUG_ALIGN __alignof__(unsigned long long)
+#endif
+
 #ifndef ARCH_KMALLOC_FLAGS
 #define ARCH_KMALLOC_FLAGS SLAB_HWCACHE_ALIGN
 #endif
@@ -2262,7 +2266,7 @@  kmem_cache_create (const char *name, size_t size, size_t align,
 		ralign = align;
 	}
 	/* disable debug if necessary */
-	if (ralign > __alignof__(unsigned long long))
+	if (ralign > ARCH_SLAB_MAX_DEBUG_ALIGN)
 		flags &= ~(SLAB_RED_ZONE | SLAB_STORE_USER);
 	/*
 	 * 4) Store it.