lkml.org 
[lkml]   [2007]   [Jun]   [21]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Date
    From
    SubjectRe: [BUG] long freezes on thinkpad t60

    * Linus Torvalds <torvalds@linux-foundation.org> wrote:

    > Umm. i386 spinlocks could and should be *one*byte*.
    >
    > In fact, I don't even know why they are wasting four bytes right now:
    > the fact that somebody made them an "int" just wastes memory. All the
    > actual code uses "decb", so it's not even a question of safety. I
    > wonder why we have that 32-bit thing and the ugly casts.
    >
    > Ingo, any memory of that?

    no real reason that i can recall - i guess nobody dared to touch it
    because it used to have that 'volatile', indicating black voodoo ;-) Now
    that the bad stigma has been removed, we could try the patch below. It
    boots fine here, and we save 1K of kernel text size:

    text data bss dec hex filename
    6236003 611992 401408 7249403 6e9dfb vmlinux.before
    6235075 611992 401408 7248475 6e9a5b vmlinux.after

    I can understand why no data is saved by this change: gcc is aligning
    the next field to a natural boundary anyway and we dont really have
    arrays of spinlocks (fortunately). [and we save no data even if using
    the ((packed)) attribute.] Perhaps some data structure that is never in
    the kernel image itself still got smaller? Any good way to determine
    that?

    But why is the text size different? Ah: i think it's spin_lock_init()
    getting shorter :-)

    but this is certainly not something for 2.6.22, it's an early 2.6.23
    matter i suspect.

    Ingo

    ------------------->
    From: Ingo Molnar <mingo@elte.hu>
    Subject: [patch] spinlocks i386: change them to byte fields

    all spinlock ops are on byte operands, so change the spinlock field to
    be unsigned char. This saves a bit of kernel text size:

    text data bss dec hex filename
    6236003 611992 401408 7249403 6e9dfb vmlinux.before
    6235075 611992 401408 7248475 6e9a5b vmlinux.after

    Signed-off-by: Ingo Molnar <mingo@elte.hu>
    ---
    include/asm-i386/spinlock_types.h | 2 +-
    1 file changed, 1 insertion(+), 1 deletion(-)

    Index: linux/include/asm-i386/spinlock_types.h
    ===================================================================
    --- linux.orig/include/asm-i386/spinlock_types.h
    +++ linux/include/asm-i386/spinlock_types.h
    @@ -6,7 +6,7 @@
    #endif

    typedef struct {
    - unsigned int slock;
    + unsigned char slock;
    } raw_spinlock_t;

    #define __RAW_SPIN_LOCK_UNLOCKED { 1 }
    -
    To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
    the body of a message to majordomo@vger.kernel.org
    More majordomo info at http://vger.kernel.org/majordomo-info.html
    Please read the FAQ at http://www.tux.org/lkml/
    \
     
     \ /
      Last update: 2007-06-21 22:01    [W:0.025 / U:0.392 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site