From: Mike Frysinger <vapier.adi@gmail.com>
To: Paul Mundt <lethal@linux-sh.org>, Jie Zhang <jie@codesourcery.com>
Cc: Mike Frysinger <vapier@gentoo.org>,
uclinux-dev@uclinux.org, David Howells <dhowells@redhat.com>,
David McCullough <davidm@snapgear.com>,
Greg Ungerer <gerg@uclinux.org>,
uclinux-dist-devel@blackfin.uclinux.org,
microblaze-uclinux@itee.uq.edu.au,
Michal Simek <monstr@monstr.eu>,
linux-m32r@ml.linux-m32r.org,
Hirokazu Takata <takata@linux-m32r.org>,
linux-kernel@vger.kernel.org,
Yoshinori Sato <ysato@users.sourceforge.jp>
Subject: Re: [PATCH] FLAT: allow arches to declare a larger alignment than the slab
Date: Tue, 25 May 2010 19:17:16 -0400 [thread overview]
Message-ID: <AANLkTinTbJ3yu9ElO32rnavnGwCrsItdDCl58KoeEW3j@mail.gmail.com> (raw)
In-Reply-To: <20100525210755.GA8920@linux-sh.org>
On Tue, May 25, 2010 at 17:07, Paul Mundt wrote:
> On Tue, May 25, 2010 at 03:24:27PM -0400, Mike Frysinger wrote:
>> This stems from the alignment usage in the FLAT loader. The behavior
>> before was that FLAT would default to ARCH_SLAB_MINALIGN only if it was
>> defined, and this was only defined by arches when they wanted a larger
>> alignment value. Otherwise it'd default to pointer alignment. Arguably,
>> this is kind of hokey that the FLAT is semi-abusing defines it shouldn't.
>
> This needs some explaining. What exactly do you find problematic with
> ARCH_SLAB_MINALIGN in this case? For the case that was introduced leading
> up to the wrapping of the minalign value it was absolutely the proper
> thing to use. If blackfin has special alignment requirements on top of
> that, then that's certainly fine, but it doesn't negate the validity of
> the minalign wrapping for the other platforms.
the Blackfin processor only requires alignment according to the
natural type sizes for 8, 16, and 32 bits. so "char" needs no
alignment, "short" needs 2 byte alignment, and "int" & "void*" need 4
byte alignment. these translate directly into a minimum aligned size
for .data sections as 4 bytes, and similarly for the stack.
FLAT is using ARCH_SLAB_MINALIGN to align the stack and align the data
section. as such, Blackfin needs 4 byte alignment here. the previous
FLAT behavior was "use arch slab sizes if defined, otherwise use
sizeof(void*)". this worked fine for us size sizeof(void*) == 4.
now with ARCH_SLAB_MINALIGN being in global space, this defaults to 0
for us and the manual stack & data alignment no longer work.
i'm a schlub when it comes to these allocators, so i know as much as
the documentation states. slab_def.h says:
* Enforce a minimum alignment for all caches.
* Intended for archs that get misalignment faults even for BYTES_PER_WORD
* aligned buffers.
this comment does not seem to apply to Blackfin as BYTES_PER_WORD is 4
and we can work with anything aligned to 4 bytes.
>> /*
>> - * User data (stack, data section and bss) needs to be aligned
>> - * for the same reasons as SLAB memory is, and to the same amount.
>> + * User data (stack, data section and bss) needs to be aligned.
>> + * If ARCH_FLAT_DATA_ALIGN is defined, use it.
>> + */
>
> If you're going to update the comment, the update should at least serve
> some purpose. This not only obscures the reason for the slab minalign
> wrapping, it also fails to suggest why anyone would deviate from that.
>
> If the intention is that ARCH_FLAT_DATA_ALIGN provides cacheline
> alignment on blackfin, then use ARCH_KMALLOC_MINALIGN like everyone else.
i do not believe that is the reason for this, but unfortunately Jie is
about the only one atm who knows the inner details as for why shared
FLAT libraries requires 0x20 rather than just 0x4 alignment. i do
know that there are some gcc fortran tests that fail otherwise.
hopefully he can remember details ;).
to be sure, we dont need 0x20 alignment in general. i just figured
kill two birds with one patch here. and Blackfin is already setting
ARCH_KMALLOC_MINALIGN to cacheline size, but that wouldnt make any
difference in these issues.
-mike
next prev parent reply other threads:[~2010-05-25 23:17 UTC|newest]
Thread overview: 25+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-05-25 19:24 [PATCH] FLAT: allow arches to declare a larger alignment than the slab Mike Frysinger
2010-05-25 19:50 ` Geert Uytterhoeven
2010-05-25 21:07 ` Paul Mundt
2010-05-25 23:17 ` Mike Frysinger [this message]
2010-05-26 2:23 ` Jie Zhang
2010-05-26 6:59 ` Geert Uytterhoeven
2010-05-26 7:23 ` Mike Frysinger
2010-05-26 7:33 ` Paul Mundt
2010-05-26 7:36 ` Mike Frysinger
2010-05-26 7:36 ` Mike Frysinger
2010-05-26 7:48 ` Paul Mundt
2010-05-26 8:01 ` Mike Frysinger
2010-05-26 7:24 ` Michal Simek
2010-05-26 8:45 ` [PATCH 1/2 v2] FLAT: split the stack & data alignments Mike Frysinger
2010-05-27 8:24 ` Michal Simek
2010-05-27 18:30 ` [Uclinux-dist-devel] " Mike Frysinger
2010-05-27 23:15 ` [microblaze-uclinux] " David McCullough
2010-05-28 4:57 ` Mike Frysinger
2010-05-28 6:05 ` Mike Frysinger
2010-05-28 6:23 ` David McCullough
2010-05-28 6:40 ` Greg Ungerer
2010-05-26 8:45 ` [PATCH 2/2 v2] FLAT: tweak default stack alignment Mike Frysinger
2010-05-28 6:24 ` David McCullough
2010-05-28 6:39 ` Greg Ungerer
2010-06-06 7:12 ` [PATCH v3] " Mike Frysinger
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=AANLkTinTbJ3yu9ElO32rnavnGwCrsItdDCl58KoeEW3j@mail.gmail.com \
--to=vapier.adi@gmail.com \
--cc=davidm@snapgear.com \
--cc=dhowells@redhat.com \
--cc=gerg@uclinux.org \
--cc=jie@codesourcery.com \
--cc=lethal@linux-sh.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-m32r@ml.linux-m32r.org \
--cc=microblaze-uclinux@itee.uq.edu.au \
--cc=monstr@monstr.eu \
--cc=takata@linux-m32r.org \
--cc=uclinux-dev@uclinux.org \
--cc=uclinux-dist-devel@blackfin.uclinux.org \
--cc=vapier@gentoo.org \
--cc=ysato@users.sourceforge.jp \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).