12 Jan, 2006

1 commit


11 Jan, 2006

2 commits

  • hrtimer subsystem core. It is initialized at bootup and expired by the timer
    interrupt, but is otherwise not utilized by any other subsystem yet.

    Signed-off-by: Thomas Gleixner
    Signed-off-by: Ingo Molnar
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Thomas Gleixner
     
  • It seems the "make UID16 support optional" patch was checked when it
    edited the -tiny tree some time ago, but it wasn't checked whether it
    still matches the current situation when it was submitted for inclusion
    in -mm. This patch fixes the following bugs:
    - ARCH_S390X does no longer exist, nowadays this has to be expressed
    through (S390 && 64BIT)
    - in five architecture specific Kconfig files the UID16 options
    weren't removed

    Additionally, it changes the fragile negative dependencies of UID16 to
    positive dependencies (new architectures are more likely to not require
    UID16 support).

    Signed-off-by: Adrian Bunk
    Acked-by: Matt Mackall
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Adrian Bunk
     

09 Jan, 2006

7 commits

  • This adds an option to remove vm86 support under CONFIG_EMBEDDED. Saves
    about 5k.

    This version eliminates most of the #ifdefs of the previous version and
    instead uses function stubs in vm86.h. Also, release_vm86_irqs is moved
    from asm-i386/irq.h to a more appropriate home in vm86.h so that the stubs
    can live together.

    $ size vmlinux-baseline vmlinux-novm86
    text data bss dec hex filename
    2920821 523232 190652 3634705 377611 vmlinux-baseline
    2916268 523100 190492 3629860 376324 vmlinux-novm86

    Signed-off-by: Matt Mackall
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Matt Mackall
     
  • configurable support for ELF core dumps

    text data bss dec hex filename
    3330172 529036 190556 4049764 3dcb64 vmlinux-baseline
    3325552 528912 190556 4045020 3db8dc vmlinux-no-elf

    add/remove: 0/8 grow/shrink: 0/0 up/down: 0/-4424 (-4424)
    function old new delta
    fill_note 32 - -32
    maydump 58 - -58
    dump_seek 67 - -67
    writenote 180 - -180
    elf_dump_thread_status 274 - -274
    fill_psinfo 308 - -308
    fill_prstatus 466 - -466
    elf_core_dump 3039 - -3039

    Signed-off-by: Matt Mackall
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Matt Mackall
     
  • Configurable 16-bit UID and friends support

    This allows turning off the legacy 16 bit UID interfaces on embedded platforms.

    text data bss dec hex filename
    3330172 529036 190556 4049764 3dcb64 vmlinux-baseline
    3328268 529040 190556 4047864 3dc3f8 vmlinux

    From: Adrian Bunk

    UID16 was accidentially disabled for !EMBEDDED.

    Signed-off-by: Matt Mackall
    Signed-off-by: Adrian Bunk
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Matt Mackall
     
  • This adds configurable support for doublefault reporting on x86

    add/remove: 0/3 grow/shrink: 0/1 up/down: 0/-13048 (-13048)
    function old new delta
    cpu_init 846 786 -60
    doublefault_fn 188 - -188
    doublefault_stack 4096 - -4096
    doublefault_tss 8704 - -8704

    Signed-off-by: Matt Mackall
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Matt Mackall
     
  • There's one scsi driver which doesn't compile due to weird __VA_ARGS__ tricks
    and the rather useful scsi/sd.c is currently getting an ICE. None of the new
    SAS code compiles, due to extensive use of anonymous unions. The V4L guys are
    very good at exploiting the gcc-2.95.x macro expansion bug (_why_ does each
    driver need to implement its own debug macros?) and various people keep on
    sneaking in anonymous unions, which are rather nice.

    Plus anonymous unions are rather useful.

    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Andrew Morton
     
  • Remove a couple of more lines of code from the cpuset hooks in the page
    allocation code path.

    There was a check for a NULL cpuset pointer in the routine
    cpuset_update_task_memory_state() that was only needed during system boot,
    after the memory subsystem was initialized, before the cpuset subsystem was
    initialized, to catch a NULL task->cpuset pointer.

    Add a cpuset_init_early() routine, just before the mem_init() call in
    init/main.c, that sets up just enough of the init tasks cpuset structure to
    render cpuset_update_task_memory_state() calls harmless.

    Signed-off-by: Paul Jackson
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Paul Jackson
     
  • configurable replacement for slab allocator

    This adds a CONFIG_SLAB option under CONFIG_EMBEDDED. When CONFIG_SLAB is
    disabled, the kernel falls back to using the 'SLOB' allocator.

    SLOB is a traditional K&R/UNIX allocator with a SLAB emulation layer,
    similar to the original Linux kmalloc allocator that SLAB replaced. It's
    signicantly smaller code and is more memory efficient. But like all
    similar allocators, it scales poorly and suffers from fragmentation more
    than SLAB, so it's only appropriate for small systems.

    It's been tested extensively in the Linux-tiny tree. I've also
    stress-tested it with make -j 8 compiles on a 3G SMP+PREEMPT box (not
    recommended).

    Here's a comparison for otherwise identical builds, showing SLOB saving
    nearly half a megabyte of RAM:

    $ size vmlinux*
    text data bss dec hex filename
    3336372 529360 190812 4056544 3de5e0 vmlinux-slab
    3323208 527948 190684 4041840 3dac70 vmlinux-slob

    $ size mm/{slab,slob}.o
    text data bss dec hex filename
    13221 752 48 14021 36c5 mm/slab.o
    1896 52 8 1956 7a4 mm/slob.o

    /proc/meminfo:
    SLAB SLOB delta
    MemTotal: 27964 kB 27980 kB +16 kB
    MemFree: 24596 kB 25092 kB +496 kB
    Buffers: 36 kB 36 kB 0 kB
    Cached: 1188 kB 1188 kB 0 kB
    SwapCached: 0 kB 0 kB 0 kB
    Active: 608 kB 600 kB -8 kB
    Inactive: 808 kB 812 kB +4 kB
    HighTotal: 0 kB 0 kB 0 kB
    HighFree: 0 kB 0 kB 0 kB
    LowTotal: 27964 kB 27980 kB +16 kB
    LowFree: 24596 kB 25092 kB +496 kB
    SwapTotal: 0 kB 0 kB 0 kB
    SwapFree: 0 kB 0 kB 0 kB
    Dirty: 4 kB 12 kB +8 kB
    Writeback: 0 kB 0 kB 0 kB
    Mapped: 560 kB 556 kB -4 kB
    Slab: 1756 kB 0 kB -1756 kB
    CommitLimit: 13980 kB 13988 kB +8 kB
    Committed_AS: 4208 kB 4208 kB 0 kB
    PageTables: 28 kB 28 kB 0 kB
    VmallocTotal: 1007312 kB 1007312 kB 0 kB
    VmallocUsed: 48 kB 48 kB 0 kB
    VmallocChunk: 1007264 kB 1007264 kB 0 kB

    (this work has been sponsored in part by CELF)

    From: Ingo Molnar

    Fix 32-bitness bugs in mm/slob.c.

    Signed-off-by: Matt Mackall
    Signed-off-by: Ingo Molnar
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Matt Mackall
     

07 Jan, 2006

4 commits

  • md supports multiple different RAID level, each being implemented by a
    'personality' (which is often in a separate module).

    These personalities have fairly artificial 'numbers'. The numbers
    are use to:
    1- provide an index into an array where the various personalities
    are recorded
    2- identify the module (via an alias) which implements are particular
    personality.

    Neither of these uses really justify the existence of personality numbers.
    The array can be replaced by a linked list which is searched (array lookup
    only happens very rarely). Module identification can be done using an alias
    based on level rather than 'personality' number.

    The current 'raid5' modules support two level (4 and 5) but only one
    personality. This slight awkwardness (which was handled in the mapping from
    level to personality) can be better handled by allowing raid5 to register 2
    personalities.

    With this change in place, the core md module does not need to have an
    exhaustive list of all possible personalities, so other personalities can be
    added independently.

    This patch also moves the check for chunksize being non-zero into the ->run
    routines for the personalities that need it, rather than having it in core-md.
    This has a side effect of allowing 'faulty' and 'linear' not to have a
    chunk-size set.

    Signed-off-by: Neil Brown
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    NeilBrown
     
  • Sanitize some s390 Kconfig options. We have ARCH_S390, ARCH_S390X,
    ARCH_S390_31, 64BIT, S390_SUPPORT and COMPAT. Replace these 6 options by
    S390, 64BIT and COMPAT.

    Signed-off-by: Martin Schwidefsky
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Martin Schwidefsky
     
  • Generic prep-work for marking the .rodata section readonly:
    * Align the rodata section at 4Kb boundary
    * call the mark_rodata_ro() function when available

    Signed-off-by: Arjan van de Ven
    Signed-off-by: Ingo Molnar
    Signed-off-by: Adrian Bunk
    Cc: Andi Kleen
    Signed-off-by: Jesper Juhl
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Arjan van de Ven
     
  • The attached patch makes the SYSV IPC shared memory facilities use the new
    ramfs facilities on a no-MMU kernel.

    The following changes are made:

    (1) There are now shmem_mmap() and shmem_get_unmapped_area() functions to
    allow the IPC SHM facilities to commune with the tiny-shmem and shmem
    code.

    (2) ramfs files now need resizing using do_truncate() rather than by modifying
    the inode size directly (see shmem_file_setup()). This causes ramfs to
    attempt to bind a block of pages of sufficient size to the inode.

    (3) CONFIG_SYSVIPC is no longer contingent on CONFIG_MMU.

    Signed-off-by: David Howells
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    David Howells
     

05 Jan, 2006

4 commits


04 Jan, 2006

1 commit


27 Dec, 2005

1 commit


21 Dec, 2005

1 commit

  • It was a stupid workaround for the "static inline" vs.
    "extern inline" issues of long ago, and it is what causes
    schedule() to be inlined like crazy into kernel/sched.c
    when -Os is specified.

    MIPS and S390 should probably do the same.

    Now CC_OPTIMIZE_FOR_SIZE can be safely used on sparc64
    once more.

    Signed-off-by: David S. Miller

    David S. Miller
     

15 Dec, 2005

1 commit

  • Also, disable on sparc64 - a number of people report breakage. Probably
    a compiler bug, but it's quite possible that it tickles some latent
    kernel problem too.

    It still defaults to 'y' everywhere else (when enabled through
    EXPERIMENTAL), and Dave Jones points out that Fedora (and RHEL4) has
    been building with size optimizations for a long time on x86, x86-64,
    ia64, s390, s390x, ppc32 and ppc64. So it is really only moderately
    experimental, but the sparc64 breakage certainly shows that it can
    trigger "issues".

    Signed-off-by: Linus Torvalds

    Linus Torvalds
     

14 Dec, 2005

2 commits

  • Let's put my money where my mouth is. Smaller code is almost always
    faster, if only because a single I$ miss ends up leaving a lot of cycles
    to make up for. And system software - kernels in particular - are known
    for taking more cache misses than most other kinds.

    On my random config, this made the kernel about 10% smaller, and lmbench
    seems to say that it's pretty uniformly faster too. Your milage may vary.

    Signed-off-by: Linus Torvalds

    Linus Torvalds
     
  • KOBJECT_UEVENT=n seems to be a common pitfall for udev users in 2.6.14 .

    -mm already contains a bigger patch removing this option that is IMHO
    too big for being applied now to 2.6.15-rc.

    This patch simply allows KOBJECT_UEVENT=n only if EMBEDDED.

    Signed-off-by: Adrian Bunk
    Signed-off-by: Linus Torvalds

    Adrian Bunk
     

09 Nov, 2005

1 commit

  • Run idle threads with preempt disabled.

    Also corrected a bugs in arm26's cpu_idle (make it actually call schedule()).
    How did it ever work before?

    Might fix the CPU hotplugging hang which Nigel Cunningham noted.

    We think the bug hits if the idle thread is preempted after checking
    need_resched() and before going to sleep, then the CPU offlined.

    After calling stop_machine_run, the CPU eventually returns from preemption and
    into the idle thread and goes to sleep. The CPU will continue executing
    previous idle and have no chance to call play_dead.

    By disabling preemption until we are ready to explicitly schedule, this bug is
    fixed and the idle threads generally become more robust.

    From: alexs

    PPC build fix

    From: Yoichi Yuasa

    MIPS build fix

    Signed-off-by: Nick Piggin
    Signed-off-by: Yoichi Yuasa
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Nick Piggin
     

04 Nov, 2005

1 commit


01 Nov, 2005

1 commit


31 Oct, 2005

2 commits

  • Try to make the INIT_ENV_ARG_LIMIT help text more readable and
    understandable.

    Signed-off-by: Randy Dunlap
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Randy Dunlap
     
  • All kinds of ugliness exists because we don't initialize
    the apics during init_IRQs.
    - We calibrate jiffies in non apic mode even when we are using apics.
    - We have to have special code to initialize the apics when non-smp.
    - The legacy i8259 must exist and be setup correctly, even
    when we won't use it past initialization.
    - The kexec on panic code must restore the state of the io_apics.
    - init/main.c needs a special case for !smp smp_init on x86

    In addition to pure code movement I needed a couple
    of non-obvious changes:
    - Move setup_boot_APIC_clock into APIC_late_time_init for
    simplicity.
    - Use cpu_khz to generate a better approximation of loops_per_jiffies
    so I can verify the timer interrupt is working.
    - Call setup_apic_nmi_watchdog again after cpu_khz is initialized on
    the boot cpu.

    Signed-off-by: Eric W. Biederman
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Eric W. Biederman
     

13 Sep, 2005

1 commit

  • Besides freeing initrd memory, also clear out the now dangling pointers to
    it, to make sure accidental late use attempts can be detected.

    Signed-off-by: Jan Beulich
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Jan Beulich
     

08 Sep, 2005

3 commits

  • Since early userspace was added, there's no way to override which init to
    run from it. Some people tack on an extra cpio archive with a link from
    /init depending on what they want to run, but that's sometimes impractical.

    Changing the "init=" to also override the early userspace isn't feasible,
    since it is still used to indicate what init to run from disk when early
    userspace has completed doing whatever it's doing (i.e. load filesystem
    modules and drivers).

    Instead, introduce "rdinit=" and make it override the default "/init" if
    specified.

    Signed-off-by: Olof Johansson
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Olof Johansson
     
  • I passed init=/mylinuxrc to the kernel on the command line. The kernel
    silently dropped down to exec /sbin/init. It turned out that /mylinuxrc
    had improper permissions. Without any warning message from the kernel that
    something was wrong it took awhile to find the issue. The patch below adds
    a warning.

    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Avery, Brian
     
  • This patch adds a new kernel debug feature: CONFIG_DETECT_SOFTLOCKUP.

    When enabled then per-CPU watchdog threads are started, which try to run
    once per second. If they get delayed for more than 10 seconds then a
    callback from the timer interrupt detects this condition and prints out a
    warning message and a stack dump (once per lockup incident). The feature
    is otherwise non-intrusive, it doesnt try to unlock the box in any way, it
    only gets the debug info out, automatically, and on all CPUs affected by
    the lockup.

    Signed-off-by: Ingo Molnar
    Signed-off-by: Nishanth Aravamudan
    Signed-Off-By: Matthias Urlichs
    Signed-off-by: Richard Purdie
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Ingo Molnar
     

06 Sep, 2005

1 commit


02 Sep, 2005

1 commit


30 Aug, 2005

1 commit

  • Of this type, mostly:

    CHECK net/ipv6/netfilter.c
    net/ipv6/netfilter.c:96:12: warning: symbol 'ipv6_netfilter_init' was not declared. Should it be static?
    net/ipv6/netfilter.c:101:6: warning: symbol 'ipv6_netfilter_fini' was not declared. Should it be static?

    Signed-off-by: Arnaldo Carvalho de Melo
    Signed-off-by: David S. Miller

    Arnaldo Carvalho de Melo
     

11 Aug, 2005

2 commits


29 Jul, 2005

1 commit

  • Minor cleanup.

    Move things into their include files, remove obsolete includes, fix
    indentation, remove obsolete special cases etc.

    I also added the per cpu section to asm-generic/sections.h and fixed
    init/main.c to use it.

    Signed-off-by: Andi Kleen
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Andi Kleen
     

28 Jul, 2005

1 commit