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


26 Jul, 2005

1 commit


15 Jul, 2005

2 commits


13 Jul, 2005

1 commit


11 Jul, 2005

1 commit


30 Jun, 2005

1 commit

  • On system boot up, there was an failure reported to boot.msg:

    Trying to move old root to /initrd ... failed

    According to initrd(4) man page, step #7 of BOOT-UP OPERATION
    is described as below:
    7. If the normal root file has directory /initrd, device
    /dev/ram0 is moved from / to /initrd. Otherwise if
    directory /initrd does not exist device /dev/ram0 is
    unmounted.

    We got service calls from customers concerning about this failure message
    at boot time. Many systems do not have /initrd and thus the message can be
    changed in the case of non-existing /initrd so that it does not sound like
    a failure of the system.

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

    Jay Lan
     

29 Jun, 2005

1 commit

  • This patch tweaks idle thread setup semantics a bit: instead of setting
    NEED_RESCHED in init_idle(), we do an explicit schedule() before calling
    into cpu_idle().

    This patch, while having no negative side-effects, enables wider use of
    cond_resched()s. (which might happen in the stock kernel too, but it's
    particulary important for voluntary-preempt)

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

    Ingo Molnar
     

26 Jun, 2005

1 commit


24 Jun, 2005

1 commit

  • Issue:
    Current tsc based delay_calibration can result in significant errors in
    loops_per_jiffy count when the platform events like SMIs
    (System Management Interrupts that are non-maskable) are present. This could
    lead to potential kernel panic(). This issue is becoming more visible with 2.6
    kernel (as default HZ is 1000) and on platforms with higher SMI handling
    latencies. During the boot time, SMIs are mostly used by BIOS (for things
    like legacy keyboard emulation).

    Description:
    The psuedocode for current delay calibration with tsc based delay looks like
    (0) Estimate a value for loops_per_jiffy
    (1) While (loops_per_jiffy estimate is accurate enough)
    (2) wait for jiffy transition (jiffy1)
    (3) Note down current tsc (tsc1)
    (4) loop until tsc becomes tsc1 + loops_per_jiffy
    (5) check whether jiffy changed since jiffy1 or not and refine
    loops_per_jiffy estimate

    Consider the following cases
    Case 1:
    If SMIs happen between (2) and (3) above, we can end up with a
    loops_per_jiffy value that is too low. This results in shorted delays and
    kernel can panic () during boot (Mostly at IOAPIC timer initialization
    timer_irq_works() as we don't have enough timer interrupts in a specified
    interval).

    Case 2:
    If SMIs happen between (3) and (4) above, then we can end up with a
    loops_per_jiffy value that is too high. And with current i386 code, too
    high lpj value (greater than 17M) can result in a overflow in
    delay.c:__const_udelay() again resulting in shorter delay and panic().

    Solution:
    The patch below makes the calibration routine aware of asynchronous events
    like SMIs. We increase the delay calibration time and also identify any
    significant errors (greater than 12.5%) in the calibration and notify it to
    user.

    Patch below changes both i386 and x86-64 architectures to use this
    new and improved calibrate_delay_direct() routine.

    Signed-off-by: Venkatesh Pallipadi
    Signed-off-by: Adrian Bunk
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Venkatesh Pallipadi
     

22 Jun, 2005

1 commit

  • This patch modifies the way pagesets in struct zone are managed.

    Each zone has a per-cpu array of pagesets. So any particular CPU has some
    memory in each zone structure which belongs to itself. Even if that CPU is
    not local to that zone.

    So the patch relocates the pagesets for each cpu to the node that is nearest
    to the cpu instead of allocating the pagesets in the (possibly remote) target
    zone. This means that the operations to manage pages on remote zone can be
    done with information available locally.

    We play a macro trick so that non-NUMA pmachines avoid the additional
    pointer chase on the page allocator fastpath.

    AIM7 benchmark on a 32 CPU SGI Altix

    w/o patches:
    Tasks jobs/min jti jobs/min/task real cpu
    1 484.68 100 484.6769 12.01 1.97 Fri Mar 25 11:01:42 2005
    100 27140.46 89 271.4046 21.44 148.71 Fri Mar 25 11:02:04 2005
    200 30792.02 82 153.9601 37.80 296.72 Fri Mar 25 11:02:42 2005
    300 32209.27 81 107.3642 54.21 451.34 Fri Mar 25 11:03:37 2005
    400 34962.83 78 87.4071 66.59 588.97 Fri Mar 25 11:04:44 2005
    500 31676.92 75 63.3538 91.87 742.71 Fri Mar 25 11:06:16 2005
    600 36032.69 73 60.0545 96.91 885.44 Fri Mar 25 11:07:54 2005
    700 35540.43 77 50.7720 114.63 1024.28 Fri Mar 25 11:09:49 2005
    800 33906.70 74 42.3834 137.32 1181.65 Fri Mar 25 11:12:06 2005
    900 34120.67 73 37.9119 153.51 1325.26 Fri Mar 25 11:14:41 2005
    1000 34802.37 74 34.8024 167.23 1465.26 Fri Mar 25 11:17:28 2005

    with slab API changes and pageset patch:

    Tasks jobs/min jti jobs/min/task real cpu
    1 485.00 100 485.0000 12.00 1.96 Fri Mar 25 11:46:18 2005
    100 28000.96 89 280.0096 20.79 150.45 Fri Mar 25 11:46:39 2005
    200 32285.80 79 161.4290 36.05 293.37 Fri Mar 25 11:47:16 2005
    300 40424.15 84 134.7472 43.19 438.42 Fri Mar 25 11:47:59 2005
    400 39155.01 79 97.8875 59.46 590.05 Fri Mar 25 11:48:59 2005
    500 37881.25 82 75.7625 76.82 730.19 Fri Mar 25 11:50:16 2005
    600 39083.14 78 65.1386 89.35 872.79 Fri Mar 25 11:51:46 2005
    700 38627.83 77 55.1826 105.47 1022.46 Fri Mar 25 11:53:32 2005
    800 39631.94 78 49.5399 117.48 1169.94 Fri Mar 25 11:55:30 2005
    900 36903.70 79 41.0041 141.94 1310.78 Fri Mar 25 11:57:53 2005
    1000 36201.23 77 36.2012 160.77 1458.31 Fri Mar 25 12:00:34 2005

    Signed-off-by: Christoph Lameter
    Signed-off-by: Shobhit Dayal
    Signed-off-by: Shai Fultheim
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Christoph Lameter
     

02 Jun, 2005

1 commit


29 May, 2005

1 commit


11 May, 2005

1 commit


08 May, 2005

1 commit


03 May, 2005

2 commits


01 May, 2005

2 commits

  • Arrange for all kernel printks to be no-ops. Only available if
    CONFIG_EMBEDDED.

    This patch saves about 375k on my laptop config and nearly 100k on minimal
    configs.

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

    Matt Mackall
     
  • This patch eliminates all kernel BUGs, trims about 35k off the typical
    kernel, and makes the system slightly faster.

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

    Matt Mackall
     

17 Apr, 2005

1 commit

  • Initial git repository build. I'm not bothering with the full history,
    even though we have it. We can create a separate "historical" git
    archive of that later if we want to, and in the meantime it's about
    3.2GB when imported into git - space that would just make the early
    git days unnecessarily complicated, when we don't have a lot of good
    infrastructure for it.

    Let it rip!

    Linus Torvalds