From: Stephen Warren <swarren@wwwdotorg.org>
To: Christoph Lameter <cl@linux.com>
Cc: James Hogan <james.hogan@imgtec.com>,
linux-next <linux-next@vger.kernel.org>,
linux-kernel <linux-kernel@vger.kernel.org>,
Pekka Enberg <penberg@kernel.org>, Matt Mackall <mpm@selenic.com>,
linux-mm@kvack.org
Subject: Re: next-20130204 - bisected slab problem to "slab: Common constants for kmalloc boundaries"
Date: Tue, 05 Feb 2013 11:28:35 -0700 [thread overview]
Message-ID: <51114F53.4030603@wwwdotorg.org> (raw)
In-Reply-To: <0000013cab3780f7-5e49ef46-e41a-4ff2-88f8-46bf216d677e-000000@email.amazonses.com>
On 02/05/2013 09:36 AM, Christoph Lameter wrote:
> OK I was able to reproduce it by setting ARCH_DMA_MINALIGN in slab.h. This
> patch fixes it here:
>
>
> Subject: slab: Handle ARCH_DMA_MINALIGN correctly
>
> A fixed KMALLOC_SHIFT_LOW does not work for arches with higher alignment
> requirements.
>
> Determine KMALLOC_SHIFT_LOW from ARCH_DMA_MINALIGN instead.
Tested-by: Stephen Warren <swarren@nvidia.com>
> +/*
> + * Some archs want to perform DMA into kmalloc caches and need a guaranteed
> + * alignment larger than the alignment of a 64-bit integer.
> + * Setting ARCH_KMALLOC_MINALIGN in arch headers allows that.
> + */
> +#if defined(ARCH_DMA_MINALIGN) && ARCH_DMA_MINALIGN > 8
> +#define ARCH_KMALLOC_MINALIGN ARCH_DMA_MINALIGN
> +#define KMALLOC_MIN_SIZE ARCH_DMA_MINALIGN
I might be tempted to drop that #define of KMALLOC_MIN_SIZE ...
> +#define KMALLOC_SHIFT_LOW ilog2(ARCH_DMA_MINALIGN)
> +#else
> +#define ARCH_KMALLOC_MINALIGN __alignof__(unsigned long long)
> +#endif
> +#ifndef KMALLOC_MIN_SIZE
> #define KMALLOC_MIN_SIZE (1 << KMALLOC_SHIFT_LOW)
> #endif
... and simply drop the ifdef around that #define instead.
That way, KMALLOC_MIN_SIZE is always defined in one place, and derived
from KMALLOC_SHIFT_LOW; the logic will just set KMALLOC_SHIFT_LOW based
on the various conditions. This seems a little safer to me; fewer
conditions and less code to update if anything changes.
WARNING: multiple messages have this Message-ID (diff)
From: Stephen Warren <swarren@wwwdotorg.org>
To: Christoph Lameter <cl@linux.com>
Cc: James Hogan <james.hogan@imgtec.com>,
linux-next <linux-next@vger.kernel.org>,
linux-kernel <linux-kernel@vger.kernel.org>,
Pekka Enberg <penberg@kernel.org>, Matt Mackall <mpm@selenic.com>,
linux-mm@kvack.org
Subject: Re: next-20130204 - bisected slab problem to "slab: Common constants for kmalloc boundaries"
Date: Tue, 05 Feb 2013 11:28:35 -0700 [thread overview]
Message-ID: <51114F53.4030603@wwwdotorg.org> (raw)
In-Reply-To: <0000013cab3780f7-5e49ef46-e41a-4ff2-88f8-46bf216d677e-000000@email.amazonses.com>
On 02/05/2013 09:36 AM, Christoph Lameter wrote:
> OK I was able to reproduce it by setting ARCH_DMA_MINALIGN in slab.h. This
> patch fixes it here:
>
>
> Subject: slab: Handle ARCH_DMA_MINALIGN correctly
>
> A fixed KMALLOC_SHIFT_LOW does not work for arches with higher alignment
> requirements.
>
> Determine KMALLOC_SHIFT_LOW from ARCH_DMA_MINALIGN instead.
Tested-by: Stephen Warren <swarren@nvidia.com>
> +/*
> + * Some archs want to perform DMA into kmalloc caches and need a guaranteed
> + * alignment larger than the alignment of a 64-bit integer.
> + * Setting ARCH_KMALLOC_MINALIGN in arch headers allows that.
> + */
> +#if defined(ARCH_DMA_MINALIGN) && ARCH_DMA_MINALIGN > 8
> +#define ARCH_KMALLOC_MINALIGN ARCH_DMA_MINALIGN
> +#define KMALLOC_MIN_SIZE ARCH_DMA_MINALIGN
I might be tempted to drop that #define of KMALLOC_MIN_SIZE ...
> +#define KMALLOC_SHIFT_LOW ilog2(ARCH_DMA_MINALIGN)
> +#else
> +#define ARCH_KMALLOC_MINALIGN __alignof__(unsigned long long)
> +#endif
> +#ifndef KMALLOC_MIN_SIZE
> #define KMALLOC_MIN_SIZE (1 << KMALLOC_SHIFT_LOW)
> #endif
... and simply drop the ifdef around that #define instead.
That way, KMALLOC_MIN_SIZE is always defined in one place, and derived
from KMALLOC_SHIFT_LOW; the logic will just set KMALLOC_SHIFT_LOW based
on the various conditions. This seems a little safer to me; fewer
conditions and less code to update if anything changes.
--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@kvack.org. For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>
next prev parent reply other threads:[~2013-02-05 18:28 UTC|newest]
Thread overview: 28+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-02-04 16:22 next-20130204 - bisected slab problem to "slab: Common constants for kmalloc boundaries" James Hogan
2013-02-04 16:22 ` James Hogan
2013-02-04 16:22 ` James Hogan
2013-02-04 19:22 ` Christoph Lameter
2013-02-04 19:22 ` Christoph Lameter
2013-02-05 10:08 ` James Hogan
2013-02-05 10:08 ` James Hogan
2013-02-05 12:51 ` James Hogan
2013-02-05 12:51 ` James Hogan
2013-02-05 12:51 ` James Hogan
2013-02-04 19:39 ` Stephen Warren
2013-02-04 19:39 ` Stephen Warren
2013-02-05 2:29 ` Christoph Lameter
2013-02-05 2:29 ` Christoph Lameter
[not found] ` <alpine.DEB.2.02.1302042019170.32396@gentwo.org>
2013-02-05 16:36 ` Christoph Lameter
2013-02-05 16:36 ` Christoph Lameter
2013-02-05 17:08 ` James Hogan
2013-02-05 17:08 ` James Hogan
2013-02-05 18:34 ` Christoph Lameter
2013-02-05 18:34 ` Christoph Lameter
2013-02-06 9:44 ` James Hogan
2013-02-06 9:44 ` James Hogan
2013-02-06 18:33 ` Pekka Enberg
2013-02-06 18:33 ` Pekka Enberg
2013-02-05 18:28 ` Stephen Warren [this message]
2013-02-05 18:28 ` Stephen Warren
2013-02-05 18:52 ` Christoph Lameter
2013-02-05 18:52 ` Christoph Lameter
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=51114F53.4030603@wwwdotorg.org \
--to=swarren@wwwdotorg.org \
--cc=cl@linux.com \
--cc=james.hogan@imgtec.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=linux-next@vger.kernel.org \
--cc=mpm@selenic.com \
--cc=penberg@kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.