22 May, 2007

1 commit

  • First thing mm.h does is including sched.h solely for can_do_mlock() inline
    function which has "current" dereference inside. By dealing with can_do_mlock()
    mm.h can be detached from sched.h which is good. See below, why.

    This patch
    a) removes unconditional inclusion of sched.h from mm.h
    b) makes can_do_mlock() normal function in mm/mlock.c
    c) exports can_do_mlock() to not break compilation
    d) adds sched.h inclusions back to files that were getting it indirectly.
    e) adds less bloated headers to some files (asm/signal.h, jiffies.h) that were
    getting them indirectly

    Net result is:
    a) mm.h users would get less code to open, read, preprocess, parse, ... if
    they don't need sched.h
    b) sched.h stops being dependency for significant number of files:
    on x86_64 allmodconfig touching sched.h results in recompile of 4083 files,
    after patch it's only 3744 (-8.3%).

    Cross-compile tested on

    all arm defconfigs, all mips defconfigs, all powerpc defconfigs,
    alpha alpha-up
    arm
    i386 i386-up i386-defconfig i386-allnoconfig
    ia64 ia64-up
    m68k
    mips
    parisc parisc-up
    powerpc powerpc-up
    s390 s390-up
    sparc sparc-up
    sparc64 sparc64-up
    um-x86_64
    x86_64 x86_64-up x86_64-defconfig x86_64-allnoconfig

    as well as my two usual configs.

    Signed-off-by: Alexey Dobriyan
    Signed-off-by: Linus Torvalds

    Alexey Dobriyan
     

15 May, 2007

2 commits

  • Several parts of kernel/smp.c and smpboot.c are generally useful for other
    subarchitectures and paravirt_ops implementations, so make them available for
    reuse.

    Signed-off-by: Jeremy Fitzhardinge
    Acked-by: Chris Wright
    Cc: James Bottomley
    Cc: Eric W. Biederman
    Cc: Andi Kleen
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Jeremy Fitzhardinge
     
  • This reverts commit f64da958dfc83335de1d2bef9d3868f30feb4e53.

    Andi Kleen is unhappy with the changes, and they really do not seem
    worth it. IPMI could use DIE_NMI_IPI instead of the new callback, even
    though that ends up having its own set of problems too, mainly because
    the IPMI code cannot really know the NMI was from IPMI or not.

    Manually fix up conflicts in arch/x86_64/kernel/traps.c and
    drivers/char/ipmi/ipmi_watchdog.c.

    Cc: Andi Kleen
    Cc: Mathieu Desnoyers
    Cc: Corey Minyard
    Cc: Andrew Morton
    Signed-off-by: Linus Torvalds

    Linus Torvalds
     

13 May, 2007

1 commit

  • SLUB cannot run on i386 at this point because i386 uses the page->private and
    page->index field of slab pages for the pgd cache.

    Make SLUB run on i386 by replacing the pgd slab cache with a quicklist.
    Limit the changes as much as possible. Leave the improvised linked list in place
    etc etc. This has been working here for a couple of weeks now.

    Acked-by: William Lee Irwin III
    Signed-off-by: Christoph Lameter
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Christoph Lameter
     

11 May, 2007

6 commits

  • This patch wires the eventfd system call to the x86 architectures.

    Signed-off-by: Davide Libenzi
    Cc: Michael Kerrisk
    Cc: Andi Kleen
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Davide Libenzi
     
  • This patch wires the timerfd system call to the x86 architectures.

    Signed-off-by: Davide Libenzi
    Cc: Andi Kleen
    Cc: Michael Kerrisk
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Davide Libenzi
     
  • This patch wires the signalfd system call to the x86 architectures.

    Signed-off-by: Davide Libenzi
    Cc: Michael Kerrisk
    Cc: Andi Kleen
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Davide Libenzi
     
  • These files are almost all the same.

    This patch could be made even simpler if we don't mind POLLREMOVE turning
    up in a few architectures that didn't have it previously (which should be
    OK as POLLREMOVE is not used anywhere in the current tree).

    Signed-off-by: Stephen Rothwell
    Cc:
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Stephen Rothwell
     
  • A recent change makes my Dell 1501 hang on boot. It's an AMD MK-36. I use
    an x86_64 kernel. It is 100% reproducible.

    I debugged this problem a bit and my compiler[1]interprets the =A constraint
    as %rax instead of %edx:%eax on x86_64 which causes the problem. The appended
    patch provides a workaround for this and fixed the hang on my machine.

    [1] gcc version 4.1.3 20070429 (prerelease) (Debian 4.1.2-5)

    Signed-off-by: Joerg Roedel
    Cc: Andi Kleen
    Cc: Benny Halevy
    Cc: Pete Zaitcev
    Cc: "Joerg Roedel"
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Joerg Roedel
     
  • This reverts commit c9ccf30d77f04064fe5436027ab9d2230c7cdd94.

    Entering the kernel at startup_32 without passing our real mode data in
    %esi, and without guaranteeing that physical and virtual addresses are
    identity mapped makes head.S impossible to maintain.

    The only user of this infrastructure is lguest which is not merged so
    nothing we currently support will break by removing this over designed
    nightmare, and only the pending lguest patches will be affected. The
    pending Xen patches have a different entry point that they use.

    We are currently discussing what Xen and lguest need to do to boot the
    kernel in a more normal fashion so using startup_32 in this weird manner is
    clearly not their long term direction.

    So let's remove this code in head.S before it causes brain damage to people
    trying to maintain head.S

    Cc: Chris Wright
    Cc: Andi Kleen
    Cc: Jeremy Fitzhardinge
    Cc: Zachary Amsden
    CC: H. Peter Anvin
    Signed-off-by: Eric W. Biederman
    Signed-off-by: Rusty Russell
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Eric W. Biederman
     

10 May, 2007

7 commits

  • * git://git.kernel.org/pub/scm/linux/kernel/git/bunk/trivial: (25 commits)
    sound: convert "sound" subdirectory to UTF-8
    MAINTAINERS: Add cxacru website/mailing list
    include files: convert "include" subdirectory to UTF-8
    general: convert "kernel" subdirectory to UTF-8
    documentation: convert the Documentation directory to UTF-8
    Convert the toplevel files CREDITS and MAINTAINERS to UTF-8.
    remove broken URLs from net drivers' output
    Magic number prefix consistency change to Documentation/magic-number.txt
    trivial: s/i_sem /i_mutex/
    fix file specification in comments
    drivers/base/platform.c: fix small typo in doc
    misc doc and kconfig typos
    Remove obsolete fat_cvf help text
    Fix occurrences of "the the "
    Fix minor typoes in kernel/module.c
    Kconfig: Remove reference to external mqueue library
    Kconfig: A couple of grammatical fixes in arch/i386/Kconfig
    Correct comments in genrtc.c to refer to correct /proc file.
    Fix more "deprecated" spellos.
    Fix "deprecated" typoes.
    ...

    Fix trivial comment conflict in kernel/relay.c.

    Linus Torvalds
     
  • When implementing things as macros, make sure we use typecasts and
    parentheses where needed. The macros as defined were vulnerable to
    surreptitious promotion causing problems.

    Avoid macros where practical; e.g. wrmsr() can be an inline instead.

    Signed-off-by: H. Peter Anvin
    Signed-off-by: Linus Torvalds

    H. Peter Anvin
     
  • All users to the two-part rdtsc() macro have already switched to using
    rdtscl() or rdtscll(). Remove the now-obsolete macro.

    Signed-off-by: H. Peter Anvin
    Signed-off-by: Linus Torvalds

    H. Peter Anvin
     
  • Replace automatic variable instances of __attribute__ ((unused)) with
    __maybe_unused.

    Cc: Andy Whitcroft
    Signed-off-by: David Rientjes
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    David Rientjes
     
  • Recently a few direct accesses to the thread_info in the task structure snuck
    back, so this wraps them with the appropriate wrapper.

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

    Roman Zippel
     
  • hard_smp_processor_id used to be just a macro that hard-coded
    hard_smp_processor_id to 0 in the non SMP case. When booting non SMP kernels
    on hardware where the boot ioapic id is not 0 this turns out to be a problem.
    This is happens frequently in the case of kdump and once in a great while in
    the case of real hardware.

    Use the APIC to determine the hardware processor id in both UP and SMP kernels
    to fix this issue.

    Notice that hard_smp_processor_id is only used by SMP code or by code that
    works with apics so we do not need to handle the case when apics are not
    present and hard_smp_processor_id should never be called there.

    Signed-off-by: Fernando Luis Vazquez Cao
    Cc: "Luck, Tony"
    Acked-by: Andi Kleen
    Cc: "Eric W. Biederman"
    Cc: Vivek Goyal
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Fernando Luis Vazquez Cao
     
  • With the advent of kdump, the assumption that the boot CPU when booting an UP
    kernel is always the CPU with a particular hardware ID (often 0) (usually
    referred to as BSP on some architectures) is not valid anymore. The reason
    being that the dump capture kernel boots on the crashed CPU (the CPU that
    invoked crash_kexec), which may be or may not be that particular CPU.

    Move definition of hard_smp_processor_id for the UP case to
    architecture-specific code ("asm/smp.h") where it belongs, so that each
    architecture can provide its own implementation.

    Signed-off-by: Fernando Luis Vazquez Cao
    Cc: "Luck, Tony"
    Acked-by: Andi Kleen
    Cc: "Eric W. Biederman"
    Cc: Vivek Goyal
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Fernando Luis Vazquez Cao
     

09 May, 2007

16 commits

  • Fix the misspellings of "propogate", "writting" and (oh, the shame
    :-) "kenrel" in the source tree.

    Signed-off-by: Robert P. J. Day
    Signed-off-by: Adrian Bunk

    Robert P. J. Day
     
  • * 'hwmon-for-linus' of git://jdelvare.pck.nerim.net/jdelvare-2.6: (32 commits)
    Use menuconfig objects - hwmon
    hwmon/smsc47b397: Use dynamic sysfs callbacks
    hwmon/smsc47b397: Convert to a platform driver
    hwmon/w83781d: Deprecate W83627HF support
    hwmon/w83781d: Use dynamic sysfs callbacks
    hwmon/w83781d: Be less i2c_client-centric
    hwmon/w83781d: Clean up conversion macros
    hwmon/w83781d: No longer use i2c-isa
    hwmon/ams: Do not print error on systems without apple motion sensor
    hwmon/ams: Fix I2C read retry logic
    hwmon: New AD7416, AD7417 and AD7418 driver
    hwmon/coretemp: Add documentation
    hwmon: New coretemp driver
    i386: Use functions from library in msr driver
    i386: Add safe variants of rdmsr_on_cpu and wrmsr_on_cpu
    hwmon/lm75: Use dynamic sysfs callbacks
    hwmon/lm78: Use dynamic sysfs callbacks
    hwmon/lm78: Be less i2c_client-centric
    hwmon/lm78: No longer use i2c-isa
    hwmon: New max6650 driver
    ...

    Linus Torvalds
     
  • Make x86 COM ports into platform devices and don't probe for them
    if we have PNP.

    This prevents double discovery, where a device was found both by
    the legacy probe and by 8250_pnp, e.g.,

    serial8250: ttyS0 at I/O 0x3f8 (irq = 4) is a 16550A
    00:02: ttyS0 at I/O 0x3f8 (irq = 4) is a 16550A

    This also means IRDA devices without a UART PNP ID will no longer be
    claimed by the serial driver, which might require changes in IRDA
    drivers and administration.

    In addition to this patch, you may need to configure a setserial init
    script, e.g., /etc/init.d/setserial, so it doesn't poke legacy UART
    stuff back in. On Debian, "dpkg-reconfigure setserial" with the "kernel"
    option does this.

    To force the old legacy probe behavior even when we have PNPBIOS or
    ACPI, load the new legacy_serial module (or build 8250 static) with
    the "legacy_serial.force" option.

    [akpm@linux-foundation.org: fix makefiles]
    Signed-off-by: Bjorn Helgaas
    Cc: Keith Owens
    Cc: Len Brown
    Cc: Adam Belay
    Cc: Matthieu CASTET
    Cc: Jean Tourrilhes
    Cc: Matthew Garrett
    Cc: Ville Syrjala
    Cc: Russell King
    Cc: Samuel Ortiz
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Bjorn Helgaas
     
  • Tweak and add content for extractable documentation in asm-i386/atomic.h.

    Signed-off-by: Robert P. J. Day
    Acked-by: Randy Dunlap
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Robert P. J. Day
     
  • i386:

    Rearrange the cmpxchg code to allow atomic.h to get it without needing to
    include system.h. This kills warnings in the UML build from atomic.h about
    implicit declarations of cmpxchg symbols. The i386 build presumably isn't
    seeing this because a separate inclusion of system.h is covering it over.

    The cmpxchg stuff is moved to asm-i386/cmpxchg.h, with an include left in
    system.h for the benefit of generic code which expects cmpxchg there.

    Meanwhile, atomic.h includes cmpxchg.h.

    This causes no noticable damage to the i386 build.

    x86_64:

    Move cmpxchg into its own header. atomic.h already included system.h, so
    this is changed to include cmpxchg.h.

    This is purely cleanup - it's not fixing any warnings - so if the x86_64
    system.h isn't considered as cleanup-worthy as i386, then this can be
    dropped.

    It causes no noticable damage to the x86_64 build.

    uml:

    The i386 and x86_64 cmpxchg patches require an asm-um/cmpxchg.h for the
    UML build.

    Signed-off-by: Jeff Dike
    Cc: Paolo 'Blaisorblade' Giarrusso
    Cc: Andi Kleen
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Jeff Dike
     
  • tas() has no users, so get rid of it.

    Signed-off-by: Jeff Dike
    Cc:
    Cc: Paolo 'Blaisorblade' Giarrusso
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Jeff Dike
     
  • Signed-off-by: Mathieu Desnoyers
    Cc: Andi Kleen
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Mathieu Desnoyers
     
  • atomic_add_unless as inline. Remove system.h atomic.h circular dependency.
    I agree (with Andi Kleen) this typeof is not needed and more error
    prone. All the original atomic.h code that uses cmpxchg (which includes
    the atomic_add_unless) uses defines instead of inline functions,
    probably to circumvent a circular dependency between system.h and
    atomic.h on powerpc (which my patch addresses). Therefore, it makes
    sense to use inline functions that will provide type checking.

    atomic_add_unless as inline. Remove system.h atomic.h circular dependency.
    Digging into the FRV architecture shows me that it is also affected by
    such a circular dependency. Here is the diff applying this against the
    rest of my atomic.h patches.

    It applies over the atomic.h standardization patches.

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

    Mathieu Desnoyers
     
  • Remove an explicit cast to an integer type for the result returned by cmpxchg.
    It is not per se a problem on the i386 architecture, because sizeof(int) ==
    sizeof(long), but whenever this code is cut'n'pasted to a accept passing an
    atomic64_t value as parameter to cmpxchg, xchg and add_unless, having 64 bits
    inputs casted to 32 bits.

    Signed-off-by: Mathieu Desnoyers
    Cc: Andi Kleen
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Mathieu Desnoyers
     
  • Implement utimensat(2) which is an extension to futimesat(2) in that it

    a) supports nano-second resolution for the timestamps
    b) allows to selectively ignore the atime/mtime value
    c) allows to selectively use the current time for either atime or mtime
    d) supports changing the atime/mtime of a symlink itself along the lines
    of the BSD lutimes(3) functions

    For this change the internally used do_utimes() functions was changed to
    accept a timespec time value and an additional flags parameter.

    Additionally the sys_utime function was changed to match compat_sys_utime
    which already use do_utimes instead of duplicating the work.

    Also, the completely missing futimensat() functionality is added. We have
    such a function in glibc but we have to resort to using /proc/self/fd/* which
    not everybody likes (chroot etc).

    Test application (the syscall number will need per-arch editing):

    #include
    #include
    #include
    #include
    #include
    #include

    #define __NR_utimensat 280

    #define UTIME_NOW ((1l << 30) - 1l)
    #define UTIME_OMIT ((1l << 30) - 2l)

    int
    main(void)
    {
    int status = 0;

    int fd = open("ttt", O_RDWR|O_CREAT|O_EXCL, 0666);
    if (fd == -1)
    error (1, errno, "failed to create test file \"ttt\"");

    struct stat64 st1;
    if (fstat64 (fd, &st1) != 0)
    error (1, errno, "fstat failed");

    struct timespec t[2];
    t[0].tv_sec = 0;
    t[0].tv_nsec = 0;
    t[1].tv_sec = 0;
    t[1].tv_nsec = 0;
    if (syscall(__NR_utimensat, AT_FDCWD, "ttt", t, 0) != 0)
    error (1, errno, "utimensat failed");

    struct stat64 st2;
    if (fstat64 (fd, &st2) != 0)
    error (1, errno, "fstat failed");

    if (st2.st_atim.tv_sec != 0 || st2.st_atim.tv_nsec != 0)
    {
    puts ("atim not reset to zero");
    status = 1;
    }
    if (st2.st_mtim.tv_sec != 0 || st2.st_mtim.tv_nsec != 0)
    {
    puts ("mtim not reset to zero");
    status = 1;
    }
    if (status != 0)
    goto out;

    t[0] = st1.st_atim;
    t[1].tv_sec = 0;
    t[1].tv_nsec = UTIME_OMIT;
    if (syscall(__NR_utimensat, AT_FDCWD, "ttt", t, 0) != 0)
    error (1, errno, "utimensat failed");

    if (fstat64 (fd, &st2) != 0)
    error (1, errno, "fstat failed");

    if (st2.st_atim.tv_sec != st1.st_atim.tv_sec
    || st2.st_atim.tv_nsec != st1.st_atim.tv_nsec)
    {
    puts ("atim not set");
    status = 1;
    }
    if (st2.st_mtim.tv_sec != 0 || st2.st_mtim.tv_nsec != 0)
    {
    puts ("mtim changed from zero");
    status = 1;
    }
    if (status != 0)
    goto out;

    t[0].tv_sec = 0;
    t[0].tv_nsec = UTIME_OMIT;
    t[1] = st1.st_mtim;
    if (syscall(__NR_utimensat, AT_FDCWD, "ttt", t, 0) != 0)
    error (1, errno, "utimensat failed");

    if (fstat64 (fd, &st2) != 0)
    error (1, errno, "fstat failed");

    if (st2.st_atim.tv_sec != st1.st_atim.tv_sec
    || st2.st_atim.tv_nsec != st1.st_atim.tv_nsec)
    {
    puts ("mtim changed from original time");
    status = 1;
    }
    if (st2.st_mtim.tv_sec != st1.st_mtim.tv_sec
    || st2.st_mtim.tv_nsec != st1.st_mtim.tv_nsec)
    {
    puts ("mtim not set");
    status = 1;
    }
    if (status != 0)
    goto out;

    sleep (2);

    t[0].tv_sec = 0;
    t[0].tv_nsec = UTIME_NOW;
    t[1].tv_sec = 0;
    t[1].tv_nsec = UTIME_NOW;
    if (syscall(__NR_utimensat, AT_FDCWD, "ttt", t, 0) != 0)
    error (1, errno, "utimensat failed");

    if (fstat64 (fd, &st2) != 0)
    error (1, errno, "fstat failed");

    struct timeval tv;
    gettimeofday(&tv,NULL);

    if (st2.st_atim.tv_sec tv.tv_sec)
    {
    puts ("atim not set to NOW");
    status = 1;
    }
    if (st2.st_mtim.tv_sec tv.tv_sec)
    {
    puts ("mtim not set to NOW");
    status = 1;
    }

    if (symlink ("ttt", "tttsym") != 0)
    error (1, errno, "cannot create symlink");

    t[0].tv_sec = 0;
    t[0].tv_nsec = 0;
    t[1].tv_sec = 0;
    t[1].tv_nsec = 0;
    if (syscall(__NR_utimensat, AT_FDCWD, "tttsym", t, AT_SYMLINK_NOFOLLOW) != 0)
    error (1, errno, "utimensat failed");

    if (lstat64 ("tttsym", &st2) != 0)
    error (1, errno, "lstat failed");

    if (st2.st_atim.tv_sec != 0 || st2.st_atim.tv_nsec != 0)
    {
    puts ("symlink atim not reset to zero");
    status = 1;
    }
    if (st2.st_mtim.tv_sec != 0 || st2.st_mtim.tv_nsec != 0)
    {
    puts ("symlink mtim not reset to zero");
    status = 1;
    }
    if (status != 0)
    goto out;

    t[0].tv_sec = 1;
    t[0].tv_nsec = 0;
    t[1].tv_sec = 1;
    t[1].tv_nsec = 0;
    if (syscall(__NR_utimensat, fd, NULL, t, 0) != 0)
    error (1, errno, "utimensat failed");

    if (fstat64 (fd, &st2) != 0)
    error (1, errno, "fstat failed");

    if (st2.st_atim.tv_sec != 1 || st2.st_atim.tv_nsec != 0)
    {
    puts ("atim not reset to one");
    status = 1;
    }
    if (st2.st_mtim.tv_sec != 1 || st2.st_mtim.tv_nsec != 0)
    {
    puts ("mtim not reset to one");
    status = 1;
    }

    if (status == 0)
    puts ("all OK");

    out:
    close (fd);
    unlink ("ttt");
    unlink ("tttsym");

    return status;
    }

    [akpm@linux-foundation.org: add missing i386 syscall table entry]
    Signed-off-by: Ulrich Drepper
    Cc: Alexey Dobriyan
    Cc: Michael Kerrisk
    Cc:
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Ulrich Drepper
     
  • Most architectures defined three macros, MK_IOSPACE_PFN(), GET_IOSPACE()
    and GET_PFN() in pgtable.h. However, the only callers of any of these
    macros are in Sparc specific code, either in arch/sparc, arch/sparc64 or
    drivers/sbus.

    This patch removes the redundant macros from all architectures except
    sparc and sparc64.

    Signed-off-by: David Gibson
    Cc:
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    David Gibson
     
  • linux/module.h
    -> linux/elf.h
    -> asm-i386/elf.h
    -> linux/utsname.h
    -> linux/sched.h

    Noticeably cut the number of files which are rebuild upon touching sched.h
    and cut down pulled junk from every module.h inclusion.

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

    Alexey Dobriyan
     
  • Currently the size of the per-cpu region reserved to save crash notes is
    set by the per-architecture value MAX_NOTE_BYTES. Which in turn is
    currently set to 1024 on all supported architectures.

    While testing ia64 I recently discovered that this value is in fact too
    small. The particular setup I was using actually needs 1172 bytes. This
    lead to very tedious failure mode where the tail of one elf note would
    overwrite the head of another if they ended up being alocated sequentially
    by kmalloc, which was often the case.

    It seems to me that a far better approach is to caclculate the size that
    the area needs to be. This patch does just that.

    If a simpler stop-gap patch for ia64 to be squeezed into 2.6.21(.X) is
    needed then this should be as easy as making MAX_NOTE_BYTES larger in
    arch/asm-ia64/kexec.h. Perhaps 2048 would be a good choice. However, I
    think that the approach in this patch is a much more robust idea.

    Acked-by: Vivek Goyal
    Signed-off-by: Simon Horman
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Simon Horman
     
  • This patch moves the die notifier handling to common code. Previous
    various architectures had exactly the same code for it. Note that the new
    code is compiled unconditionally, this should be understood as an appel to
    the other architecture maintainer to implement support for it aswell (aka
    sprinkling a notify_die or two in the proper place)

    arm had a notifiy_die that did something totally different, I renamed it to
    arm_notify_die as part of the patch and made it static to the file it's
    declared and used at. avr32 used to pass slightly less information through
    this interface and I brought it into line with the other architectures.

    [akpm@linux-foundation.org: build fix]
    [akpm@linux-foundation.org: fix vmalloc_sync_all bustage]
    [bryan.wu@analog.com: fix vmalloc_sync_all in nommu]
    Signed-off-by: Christoph Hellwig
    Cc:
    Cc: Russell King
    Signed-off-by: Bryan Wu
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Christoph Hellwig
     
  • Adds the needed TCGETS2/TCSETS2 ioctl calls, structures, defines and the like.
    Tested against the test suite and passes. Other platforms should need
    roughly the same change.

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

    Alan Cox
     
  • Convert over to the new NMI handling for getting IPMI watchdog timeouts via an
    NMI. This add config options to know if there is the ability to receive NMIs
    and if it has an NMI post processing call. Then it modifies the IPMI watchdog
    to take advantage of this so that it can know if an NMI comes in.

    It also adds testing that the IPMI NMI watchdog works.

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

    Corey Minyard
     

08 May, 2007

4 commits

  • Add safe (exception handled) variants of rdmsr_on_cpu and wrmsr_on_cpu.
    You should use these when the target MSR may not actually exist, as
    doing so could trigger an exception which the regular functions do not
    handle. The safe variants are slower, though.

    The upcoming coretemp hardware monitoring driver will need this.

    Signed-off-by: Rudolf Marek
    Cc: Alexey Dobriyan
    Cc: Dave Jones
    Signed-off-by: Jean Delvare

    Rudolf Marek
     
  • i386 uses kmalloc to allocate the threadinfo structure assuming that the
    allocations result in a page sized aligned allocation. That has worked so
    far because SLAB exempts page sized slabs from debugging and aligns them in
    special ways that goes beyond the restrictions imposed by
    KMALLOC_ARCH_MINALIGN valid for other slabs in the kmalloc array.

    SLUB also works fine without debugging since page sized allocations neatly
    align at page boundaries. However, if debugging is switched on then SLUB
    will extend the slab with debug information. The resulting slab is not
    longer of page size. It will only be aligned following the requirements
    imposed by KMALLOC_ARCH_MINALIGN. As a result the threadinfo structure may
    not be page aligned which makes i386 fail to boot with SLUB debug on.

    Replace the calls to kmalloc with calls into the page allocator.

    An alternate solution may be to create a custom slab cache where the
    alignment is set to PAGE_SIZE. That would allow slub debugging to be
    applied to the threadinfo structure.

    Signed-off-by: Christoph Lameter
    Cc: William Lee Irwin III
    Cc: Andi Kleen
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Christoph Lameter
     
  • If you actually clear the bit, you need to:

    + pte_update_defer(vma->vm_mm, addr, ptep);

    The reason is, when updating PTEs, the hypervisor must be notified. Using
    atomic operations to do this is fine for all hypervisors I am aware of.
    However, for hypervisors which shadow page tables, if these PTE
    modifications are not trapped, you need a post-modification call to fulfill
    the update of the shadow page table.

    Acked-by: Zachary Amsden
    Cc: Hugh Dickins
    Signed-off-by: David Rientjes
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Zachary Amsden
     
  • Add ptep_test_and_clear_{dirty,young} to i386. They advertise that they
    have it and there is at least one place where it needs to be called without
    the page table lock: to clear the accessed bit on write to
    /proc/pid/clear_refs.

    ptep_clear_flush_{dirty,young} are updated to use the new functions. The
    overall net effect to current users of ptep_clear_flush_{dirty,young} is
    that we introduce an additional branch.

    Cc: Hugh Dickins
    Cc: Ingo Molnar
    Signed-off-by: David Rientjes
    Cc: Andi Kleen
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    David Rientjes
     

06 May, 2007

2 commits

  • * 'for-linus' of git://one.firstfloor.org/home/andi/git/linux-2.6: (231 commits)
    [PATCH] i386: Don't delete cpu_devs data to identify different x86 types in late_initcall
    [PATCH] i386: type may be unused
    [PATCH] i386: Some additional chipset register values validation.
    [PATCH] i386: Add missing !X86_PAE dependincy to the 2G/2G split.
    [PATCH] x86-64: Don't exclude asm-offsets.c in Documentation/dontdiff
    [PATCH] i386: avoid redundant preempt_disable in __unlazy_fpu
    [PATCH] i386: white space fixes in i387.h
    [PATCH] i386: Drop noisy e820 debugging printks
    [PATCH] x86-64: Fix allnoconfig error in genapic_flat.c
    [PATCH] x86-64: Shut up warnings for vfat compat ioctls on other file systems
    [PATCH] x86-64: Share identical video.S between i386 and x86-64
    [PATCH] x86-64: Remove CONFIG_REORDER
    [PATCH] x86-64: Print type and size correctly for unknown compat ioctls
    [PATCH] i386: Remove copy_*_user BUG_ONs for (size < 0)
    [PATCH] i386: Little cleanups in smpboot.c
    [PATCH] x86-64: Don't enable NUMA for a single node in K8 NUMA scanning
    [PATCH] x86: Use RDTSCP for synchronous get_cycles if possible
    [PATCH] i386: Add X86_FEATURE_RDTSCP
    [PATCH] i386: Implement X86_FEATURE_SYNC_RDTSC on i386
    [PATCH] i386: Implement alternative_io for i386
    ...

    Fix up trivial conflict in include/linux/highmem.h manually.

    Signed-off-by: Linus Torvalds

    Linus Torvalds
     
  • * master.kernel.org:/pub/scm/linux/kernel/git/jejb/voyager-2.6:
    [VOYAGER] add smp alternatives
    [VOYAGER] Use modern techniques to setup and teardown low identiy mappings.
    [VOYAGER] Convert the monitor thread to use the kthread API
    [VOYAGER] clockevents driver: bring voyager in to line
    [VOYAGER] clockevents: correct boot cpu is zero assumption
    [VOYAGER] add smp_call_function_single

    Linus Torvalds
     

05 May, 2007

1 commit

  • * master.kernel.org:/pub/scm/linux/kernel/git/gregkh/pci-2.6: (59 commits)
    PCI: Free resource files in error path of pci_create_sysfs_dev_files()
    pci-quirks: disable MSI on RS400-200 and RS480
    PCI hotplug: Use menuconfig objects
    PCI: ZT5550 CPCI Hotplug driver fix
    PCI: rpaphp: Remove semaphores
    PCI: rpaphp: Ensure more pcibios_add/pcibios_remove symmetry
    PCI: rpaphp: Use pcibios_remove_pci_devices() symmetrically
    PCI: rpaphp: Document is_php_dn()
    PCI: rpaphp: Document find_php_slot()
    PCI: rpaphp: Rename rpaphp_register_pci_slot() to rpaphp_enable_slot()
    PCI: rpaphp: refactor tail call to rpaphp_register_slot()
    PCI: rpaphp: remove rpaphp_set_attention_status()
    PCI: rpaphp: remove print_slot_pci_funcs()
    PCI: rpaphp: Remove setup_pci_slot()
    PCI: rpaphp: remove a call that does nothing but a pointer lookup
    PCI: rpaphp: Remove another wrappered function
    PCI: rpaphp: Remve another call that is a wrapper
    PCI: rpaphp: remove a function that does nothing but wrap debug printks
    PCI: rpaphp: Remove un-needed goto
    PCI: rpaphp: Fix a memleak; slot->location string was never freed
    ...

    Linus Torvalds