10 May, 2007

1 commit

  • 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
     

09 May, 2007

16 commits

  • This reverts commit 464bdd33e9baad9806c7adbd8dfc37081a55f27e.

    Peter Anvin correctly points out that VESA modes have nothing to do with
    frame buffers per se - they are often just regular extended text modes.
    Disabling them just because we don't have frame buffer support is very
    wrong.

    Cc: H. Peter Anvin
    Cc: Antonino A. Daplas ,
    Cc: Andrew Morton
    Signed-off-by: Linus Torvalds

    Linus Torvalds
     
  • * '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
     
  • If the option vga= is added to the boot parameter, it will
    activate graphics mode, but without any framebuffer support, the user is left
    with an unusable display.

    Change the behavior such that the user is instead prompted for another mode
    (ala vga=ask).

    NOTE: People can always use vbetool to set a graphics mode if this is really
    desired, but the number of people doing this approaches zero.

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

    Antonino A. Daplas
     
  • 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
     
  • Add IRQF_IRQPOLL to timer interrupts on i386.

    Signed-off-by: Bernhard Walle
    Cc: Andi Kleen
    Cc: Ingo Molnar
    Cc: Thomas Gleixner
    Cc: Alan Cox
    Cc: James Bottomley
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Bernhard Walle
     
  • This patch provides a debugfs knob to turn kprobes on/off

    o A new file /debug/kprobes/enabled indicates if kprobes is enabled or
    not (default enabled)
    o Echoing 0 to this file will disarm all installed probes
    o Any new probe registration when disabled will register the probe but
    not arm it. A message will be printed out in such a case.
    o When a value 1 is echoed to the file, all probes (including ones
    registered in the intervening period) will be enabled
    o Unregistration will happen irrespective of whether probes are globally
    enabled or not.
    o Update Documentation/kprobes.txt to reflect these changes. While there
    also update the doc to make it current.

    We are also looking at providing sysrq key support to tie to the disabling
    feature provided by this patch.

    [akpm@linux-foundation.org: Use bool like a bool!]
    [akpm@linux-foundation.org: add printk facility levels]
    [cornelia.huck@de.ibm.com: Add the missing arch_trampoline_kprobe() for s390]
    Signed-off-by: Ananth N Mavinakayanahalli
    Signed-off-by: Srinivasa DS
    Signed-off-by: Cornelia Huck
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Ananth N Mavinakayanahalli
     
  • - consolidate duplicate code in all arch_prepare_kretprobe instances
    into common code
    - replace various odd helpers that use hlist_for_each_entry to get
    the first elemenet of a list with either a hlist_for_each_entry_save
    or an opencoded access to the first element in the caller
    - inline add_rp_inst into it's only remaining caller
    - use kretprobe_inst_table_head instead of opencoding it

    Signed-off-by: Christoph Hellwig
    Cc: Prasanna S Panchamukhi
    Acked-by: Ananth N Mavinakayanahalli
    Cc: Anil S Keshavamurthy
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Christoph Hellwig
     
  • 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
     
  • dma_declare_coherent_memory() allocates a bitmap 1 bit per page, it
    calculates the bitmap size based on size of long, but allocates bytes...
    Thanks to James Bottomley for clarifications and corrections.

    Signed-off-by: G. Liakhovetski
    Acked-by: James Bottomley
    Cc: Mikael Starvik
    Cc: Andi Kleen
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Guennadi Liakhovetski
     
  • HZ has not always been 100Hz for some time.

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

    Alan Cox
     
  • We used to warn unless the EFI system table major revision was exactly 1.
    But EFI 2.00 firmware is starting to appear, and the 2.00 changes don't
    affect anything in Linux.

    Signed-off-by: Bjorn Helgaas
    Cc: Andi Kleen
    Cc: "Luck, Tony"
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Bjorn Helgaas
     
  • In certain cases like when the real return address can't be found or when
    the number of tracked calls to a kretprobed function is less than the
    number of returns, we may not be able to find the correct return address
    after processing a kretprobe. Currently we just do a BUG_ON, but no
    information is provided about the actual failing kretprobe.

    Print out details of the kretprobe before calling BUG().

    Signed-off-by: Ananth N Mavinakayanahalli
    Cc: Prasanna S Panchamukhi
    Cc: Jim Keniston
    Cc: Anil S Keshavamurthy
    Cc: Maneesh Soni
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Ananth N Mavinakayanahalli
     
  • Remove includes of where it is not used/needed.
    Suggested by Al Viro.

    Builds cleanly on x86_64, i386, alpha, ia64, powerpc, sparc,
    sparc64, and arm (all 59 defconfigs).

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

    Randy Dunlap
     
  • 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
     
  • 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
     
  • Use SLAB_PANIC and delete duplicated panic().

    Signed-off-by: Akinobu Mita
    Cc: Ian Molton
    Cc: David Howells
    Cc: Andi Kleen
    Cc: Paul Mackerras
    Cc: Benjamin Herrenschmidt
    Cc: Paul Mundt
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Akinobu Mita
     

08 May, 2007

4 commits

  • Use safe MSR functions provided by arch/*/lib/msr-on-cpu.c in
    arch/i386/kernel/msr.c.

    Signed-off-by: Nicolas Boichat
    Cc: H. Peter Anvin
    Signed-off-by: Jean Delvare

    Nicolas Boichat
     
  • 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
     
  • Handle MAP_FIXED in i386 hugetlb_get_unmapped_area(), just call
    prepare_hugepage_range.

    Signed-off-by: Benjamin Herrenschmidt
    Acked-by: William Irwin
    Cc: Andi Kleen
    Cc: Adam Litke
    Cc: David Gibson
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Benjamin Herrenschmidt
     
  • This is a new slab allocator which was motivated by the complexity of the
    existing code in mm/slab.c. It attempts to address a variety of concerns
    with the existing implementation.

    A. Management of object queues

    A particular concern was the complex management of the numerous object
    queues in SLAB. SLUB has no such queues. Instead we dedicate a slab for
    each allocating CPU and use objects from a slab directly instead of
    queueing them up.

    B. Storage overhead of object queues

    SLAB Object queues exist per node, per CPU. The alien cache queue even
    has a queue array that contain a queue for each processor on each
    node. For very large systems the number of queues and the number of
    objects that may be caught in those queues grows exponentially. On our
    systems with 1k nodes / processors we have several gigabytes just tied up
    for storing references to objects for those queues This does not include
    the objects that could be on those queues. One fears that the whole
    memory of the machine could one day be consumed by those queues.

    C. SLAB meta data overhead

    SLAB has overhead at the beginning of each slab. This means that data
    cannot be naturally aligned at the beginning of a slab block. SLUB keeps
    all meta data in the corresponding page_struct. Objects can be naturally
    aligned in the slab. F.e. a 128 byte object will be aligned at 128 byte
    boundaries and can fit tightly into a 4k page with no bytes left over.
    SLAB cannot do this.

    D. SLAB has a complex cache reaper

    SLUB does not need a cache reaper for UP systems. On SMP systems
    the per CPU slab may be pushed back into partial list but that
    operation is simple and does not require an iteration over a list
    of objects. SLAB expires per CPU, shared and alien object queues
    during cache reaping which may cause strange hold offs.

    E. SLAB has complex NUMA policy layer support

    SLUB pushes NUMA policy handling into the page allocator. This means that
    allocation is coarser (SLUB does interleave on a page level) but that
    situation was also present before 2.6.13. SLABs application of
    policies to individual slab objects allocated in SLAB is
    certainly a performance concern due to the frequent references to
    memory policies which may lead a sequence of objects to come from
    one node after another. SLUB will get a slab full of objects
    from one node and then will switch to the next.

    F. Reduction of the size of partial slab lists

    SLAB has per node partial lists. This means that over time a large
    number of partial slabs may accumulate on those lists. These can
    only be reused if allocator occur on specific nodes. SLUB has a global
    pool of partial slabs and will consume slabs from that pool to
    decrease fragmentation.

    G. Tunables

    SLAB has sophisticated tuning abilities for each slab cache. One can
    manipulate the queue sizes in detail. However, filling the queues still
    requires the uses of the spin lock to check out slabs. SLUB has a global
    parameter (min_slab_order) for tuning. Increasing the minimum slab
    order can decrease the locking overhead. The bigger the slab order the
    less motions of pages between per CPU and partial lists occur and the
    better SLUB will be scaling.

    G. Slab merging

    We often have slab caches with similar parameters. SLUB detects those
    on boot up and merges them into the corresponding general caches. This
    leads to more effective memory use. About 50% of all caches can
    be eliminated through slab merging. This will also decrease
    slab fragmentation because partial allocated slabs can be filled
    up again. Slab merging can be switched off by specifying
    slub_nomerge on boot up.

    Note that merging can expose heretofore unknown bugs in the kernel
    because corrupted objects may now be placed differently and corrupt
    differing neighboring objects. Enable sanity checks to find those.

    H. Diagnostics

    The current slab diagnostics are difficult to use and require a
    recompilation of the kernel. SLUB contains debugging code that
    is always available (but is kept out of the hot code paths).
    SLUB diagnostics can be enabled via the "slab_debug" option.
    Parameters can be specified to select a single or a group of
    slab caches for diagnostics. This means that the system is running
    with the usual performance and it is much more likely that
    race conditions can be reproduced.

    I. Resiliency

    If basic sanity checks are on then SLUB is capable of detecting
    common error conditions and recover as best as possible to allow the
    system to continue.

    J. Tracing

    Tracing can be enabled via the slab_debug=T, option
    during boot. SLUB will then protocol all actions on that slabcache
    and dump the object contents on free.

    K. On demand DMA cache creation.

    Generally DMA caches are not needed. If a kmalloc is used with
    __GFP_DMA then just create this single slabcache that is needed.
    For systems that have no ZONE_DMA requirement the support is
    completely eliminated.

    L. Performance increase

    Some benchmarks have shown speed improvements on kernbench in the
    range of 5-10%. The locking overhead of slub is based on the
    underlying base allocation size. If we can reliably allocate
    larger order pages then it is possible to increase slub
    performance much further. The anti-fragmentation patches may
    enable further performance increases.

    Tested on:
    i386 UP + SMP, x86_64 UP + SMP + NUMA emulation, IA64 NUMA + Simulator

    SLUB Boot options

    slub_nomerge Disable merging of slabs
    slub_min_order=x Require a minimum order for slab caches. This
    increases the managed chunk size and therefore
    reduces meta data and locking overhead.
    slub_min_objects=x Mininum objects per slab. Default is 8.
    slub_max_order=x Avoid generating slabs larger than order specified.
    slub_debug Enable all diagnostics for all caches
    slub_debug= Enable selective options for all caches
    slub_debug=, Enable selective options for a certain set of
    caches

    Available Debug options
    F Double Free checking, sanity and resiliency
    R Red zoning
    P Object / padding poisoning
    U Track last free / alloc
    T Trace all allocs / frees (only use for individual slabs).

    To use SLUB: Apply this patch and then select SLUB as the default slab
    allocator.

    [hugh@veritas.com: fix an oops-causing locking error]
    [akpm@linux-foundation.org: various stupid cleanups and small fixes]
    Signed-off-by: Christoph Lameter
    Signed-off-by: Hugh Dickins
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Christoph Lameter
     

07 May, 2007

1 commit

  • This was broken. It adds complexity, for no good reason. Rather than
    separate __pa() and __pa_symbol(), we should deprecate __pa_symbol(),
    and preferably __pa() too - and just use "virt_to_phys()" instead, which
    is more readable and has nicer semantics.

    However, right now, just undo the separation, and make __pa_symbol() be
    the exact same as __pa(). That fixes the bugs this patch introduced,
    and we can do the fairly obvious cleanups later.

    Do the new __phys_addr() function (which is now the actual workhorse for
    the unified __pa()/__pa_symbol()) as a real external function, that way
    all the potential issues with compile/link-time optimizations of
    constant symbol addresses go away, and we can also, if we choose to, add
    more sanity-checking of the argument.

    Cc: Eric W. Biederman
    Cc: Vivek Goyal
    Cc: Andi Kleen
    Cc: Andrew Morton
    Signed-off-by: Linus Torvalds

    Linus Torvalds
     

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

2 commits

  • * 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
     
  • * master.kernel.org:/pub/scm/linux/kernel/git/davej/cpufreq:
    [CPUFREQ] Report the number of processors in PowerNow-k8 correctly
    [CPUFREQ] do not declare undefined functions
    [CPUFREQ] cleanup kconfig options
    [CPUFREQ] Longhaul - Revert Longhaul ver. 2
    [CPUFREQ] Remove deprecated /proc/acpi/processor/performance write support
    [CPUFREQ] Fix limited cpufreq when booted on battery
    Fix preemption warnings in speedstep-centrino.c
    [CPUFREQ] Longhaul - Correct PCI code
    [CPUFREQ] p4-clockmod: switch to rdmsr_on_cpu/wrmsr_on_cpu

    Linus Torvalds
     

03 May, 2007

14 commits

  • Add more information to PCI resource collision message
    to help with debugging.

    Signed-off-by: Chuck Ebbert
    Signed-off-by: Greg Kroah-Hartman

    Chuck Ebbert
     
  • set_irq_msi() currently connects an irq_desc to an msi_desc. The archs call
    it at some point in their setup routine, and then the generic code sets up the
    reverse mapping from the msi_desc back to the irq.

    set_irq_msi() should do both connections, making it the one and only call
    required to connect an irq with it's MSI desc and vice versa.

    The arch code MUST call set_irq_msi(), and it must do so only once it's sure
    it's not going to fail the irq allocation.

    Given that there's no need for the arch to return the irq anymore, the return
    value from the arch setup routine just becomes 0 for success and anything else
    for failure.

    Signed-off-by: Michael Ellerman
    Signed-off-by: Greg Kroah-Hartman

    Michael Ellerman
     
  • Allows architectures to advertise that they support MSI rather than listing
    each architecture as a PCI_MSI dependency.

    Signed-off-by: Dan Williams
    Acked-by: "Eric W. Biederman"
    Signed-off-by: Greg Kroah-Hartman

    Dan Williams
     
  • At one time, if a BIOS ROM shadow was detected for the boot video
    device (stored at offset 0xc0000), we'd set a special resource flag,
    IORESOURCE_ROM_SHADOW, so that the sysfs ROM file code could handle
    it properly. That broke along the way somewhere though, so current
    kernels will be missing 'rom' files in sysfs if the video device
    doesn't have an explicit ROM BAR.

    This patch fixes the regression by moving the video fixup quirk to a
    little later in the boot cycle (to avoid having its work undone by
    PCI resource allocation) and checking in the PCI sysfs code whether
    a rom file should be created due to a shadow resource, which is also
    moved to a little later in the boot cycle so it will occur after the
    video fixup. Tested and works on my i386 test box.

    Signed-off-by: Jesse Barnes
    Signed-off-by: Greg Kroah-Hartman

    Jesse Barnes
     
  • I noticed that many source files include while they do
    not appear to need it. Here is an attempt to clean it all up.

    In order to find all possibly affected files, I searched for all
    files including but without any other occurence of "pci"
    or "PCI". I removed the include statement from all of these, then I
    compiled an allmodconfig kernel on both i386 and x86_64 and fixed the
    false positives manually.

    My tests covered 66% of the affected files, so there could be false
    positives remaining. Untested files are:

    arch/alpha/kernel/err_common.c
    arch/alpha/kernel/err_ev6.c
    arch/alpha/kernel/err_ev7.c
    arch/ia64/sn/kernel/huberror.c
    arch/ia64/sn/kernel/xpnet.c
    arch/m68knommu/kernel/dma.c
    arch/mips/lib/iomap.c
    arch/powerpc/platforms/pseries/ras.c
    arch/ppc/8260_io/enet.c
    arch/ppc/8260_io/fcc_enet.c
    arch/ppc/8xx_io/enet.c
    arch/ppc/syslib/ppc4xx_sgdma.c
    arch/sh64/mach-cayman/iomap.c
    arch/xtensa/kernel/xtensa_ksyms.c
    arch/xtensa/platform-iss/setup.c
    drivers/i2c/busses/i2c-at91.c
    drivers/i2c/busses/i2c-mpc.c
    drivers/media/video/saa711x.c
    drivers/misc/hdpuftrs/hdpu_cpustate.c
    drivers/misc/hdpuftrs/hdpu_nexus.c
    drivers/net/au1000_eth.c
    drivers/net/fec_8xx/fec_main.c
    drivers/net/fec_8xx/fec_mii.c
    drivers/net/fs_enet/fs_enet-main.c
    drivers/net/fs_enet/mac-fcc.c
    drivers/net/fs_enet/mac-fec.c
    drivers/net/fs_enet/mac-scc.c
    drivers/net/fs_enet/mii-bitbang.c
    drivers/net/fs_enet/mii-fec.c
    drivers/net/ibm_emac/ibm_emac_core.c
    drivers/net/lasi_82596.c
    drivers/parisc/hppb.c
    drivers/sbus/sbus.c
    drivers/video/g364fb.c
    drivers/video/platinumfb.c
    drivers/video/stifb.c
    drivers/video/valkyriefb.c
    include/asm-arm/arch-ixp4xx/dma.h
    sound/oss/au1550_ac97.c

    I would welcome test reports for these files. I am fine with removing
    the untested files from the patch if the general opinion is that these
    changes aren't safe. The tested part would still be nice to have.

    Note that this patch depends on another header fixup patch I submitted
    to LKML yesterday:
    [PATCH] scatterlist.h needs types.h
    http://lkml.org/lkml/2007/3/01/141

    Signed-off-by: Jean Delvare
    Cc: Badari Pulavarty
    Signed-off-by: Greg Kroah-Hartman

    Jean Delvare
     
  • In arch/i386/cpu/common.c there is:
    cpu_devs[X86_VENDOR_INTEL]
    cpu_devs[X86_VENDOR_CYRIX]
    cpu_devs[X86_VENDOR_AMD]
    ...
    They are all filled with data early.
    The data (struct) got set to NULL for all, but Intel in different
    late_initcall (exit_cpu_vendor) calls.
    I don't see what sense this makes at all, maybe something that got
    forgotten with the HOTPLUG_CPU extenstions?

    Please check/review whether initdata, cpuinitdata is still ok and this
    still works with HOTPLUG_CPU and without, it should...

    Signed-off-by: Thomas Renninger
    Signed-off-by: Andi Kleen
    Cc: davej@redhat.com

    Thomas Renninger
     
  • In the case of !CONFIG_PCI_DIRECT && !CONFIG_PCI_MMCONFIG, type is
    unreferened.

    Cc: Andi Kleen
    Signed-off-by: David Rientjes
    Signed-off-by: Andi Kleen

    David Rientjes
     
  • On i945, a mmconfig range hitting the f0000000-ffffffff zone conflicts
    with the APIC registers and others. Consider it invalid.

    On E7520, values 0000 and f000 for the window register are defined
    invalid in the documentation.

    I haven't seen a bios use these values, but who trusts biosen these
    days?

    Signed-off-by: Olivier Galibert
    Signed-off-by: Andi Kleen

    arch/i386/pci/mmconfig-shared.c | 25 +++++++++++++++++--------
    1 file changed, 17 insertions(+), 8 deletions(-)

    Olivier Galibert
     
  • Only 1GB-aligned kernel/user splits are now handled for PAE. The
    2GB/2GB split attempts to avoid aliasing vmallocspace with the 1:1
    mapping for physical memory by using an actual split of 1.875/2.125
    to accommodate 128MB of vmallocspace out of what would otherwise
    be a full 2GB for userspace. That attempt disturbs the alignment
    required by PAE for 2GB/2GB splits, and furthermore does not provide
    a 2GB/2GB split as advertised.

    This patch resolves the issues here in two manners. The first is
    by providing a true 2GB/2GB split in addition to the 1.875/2.125
    split. The second is by renaming the 1.875/2.125 split to
    CONFIG_VMSPLIT_2G_OPT analogously to CONFIG_VMSPLIT_3G_OPT, which
    performs a similar manuever to avoid aliasing vmallocspace with
    the 1:1 mapping for physical memory around the 3GB boundary. With
    the 1.875/2.125 split properly-named, its config option is then
    tagged as depending on !HIGHMEM to express the PAE implementation's
    current inability to deal with such unaligned splits.

    This patch is essentially a combination of two patches, one written
    by Eric Biederman and the other by Eric Dumazet. If they could add
    their Signed-off-by: to this, I'd be much obliged.

    Signed-off-by: William Irwin
    Signed-off-by: Andi Kleen
    Cc: Eric Dumazet
    Cc: Mark Lord
    Cc: Eric W. Biederman
    Cc: Andi Kleen

    Bill Irwin
     
  • Signed-off-by: Andi Kleen

    Andi Kleen
     
  • access_ok checks this case anyways, no need to check twice.

    Signed-off-by: Andi Kleen

    Andi Kleen
     
  • - Remove #if that is always set
    - Fix warning

    Signed-off-by: Andi Kleen

    Andi Kleen
     
  • Syncs up with x86-64.

    Signed-off-by: Andi Kleen

    Andi Kleen
     
  • Check some CPUID bits that are needed for compiler generated early in boot.
    When the system is still in real mode before changing the VESA BIOS mode
    it is possible to still display an visible error message on the screen.

    Similar to x86-64.

    Includes cleanups from Eric Biederman

    Signed-off-by: Andi Kleen

    Andi Kleen