29 Oct, 2009

40 commits

  • * 'merge' of git://git.kernel.org/pub/scm/linux/kernel/git/benh/powerpc:
    powerpc/ppc64: Use preempt_schedule_irq instead of preempt_schedule
    powerpc: Minor cleanup to lib/Kconfig.debug
    powerpc: Minor cleanup to sound/ppc/Kconfig
    powerpc: Minor cleanup to init/Kconfig
    powerpc: Limit memory hotplug support to PPC64 Book-3S machines
    powerpc: Limit hugetlbfs support to PPC64 Book-3S machines
    powerpc: Fix compile errors found by new ppc64e_defconfig
    powerpc: Add a Book-3E 64-bit defconfig
    powerpc/booke: Fix xmon single step on PowerPC Book-E
    powerpc: Align vDSO base address
    powerpc: Fix segment mapping in vdso32
    powerpc/iseries: Remove compiler version dependent hack
    powerpc/perf_events: Fix priority of MSR HV vs PR bits
    powerpc/5200: Update defconfigs
    drivers/serial/mpc52xx_uart.c: Use UPIO_MEM rather than SERIAL_IO_MEM
    powerpc/boot/dts: drop obsolete 'fsl5200-clocking'
    of: Remove nested function
    mpc5200: support for the MAN mpc5200 based board mucmc52
    mpc5200: support for the MAN mpc5200 based board uc101

    Linus Torvalds
     
  • * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/sameo/mfd-2.6:
    mfd: Do not dereference null pointer in twl4030 error path
    mfd: Always initialise WM831x IRQ mutex

    Linus Torvalds
     
  • * 'hwpoison-2.6.32' of git://git.kernel.org/pub/scm/linux/kernel/git/ak/linux-mce-2.6:
    HWPOISON: fix invalid page count in printk output
    HWPOISON: Allow schedule_on_each_cpu() from keventd
    HWPOISON: fix/proc/meminfo alignment
    HWPOISON: fix oops on ksm pages
    HWPOISON: Fix page count leak in hwpoison late kill in do_swap_page
    HWPOISON: return early on non-LRU pages
    HWPOISON: Add brief hwpoison description to Documentation
    HWPOISON: Clean up PR_MCE_KILL interface

    Linus Torvalds
     
  • * 'for-linus' of git://oss.sgi.com/xfs/xfs:
    xfs: fix double IRELE in xfs_dqrele_inode

    Linus Torvalds
     
  • …/git/tmlind/linux-omap-2.6

    * 'omap-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tmlind/linux-omap-2.6:
    omap4: Fix UART4 platform data on omap4
    omap4: Allow omap_serial_early_init() for OMAP4430 board
    omap3: PM: enable UART3 module wakeups
    omap2: Fix console serial port number for n8x0
    omap2: Fix detection of n8x0
    omap1: Fix DSP public peripherals support for ams-delta
    omap1: Fix redundant UARTs pin muxing that can break other hardware support
    omap: iommu: fix wrong condition check for SUPERSECTION
    omap: SDMA: Fix omap_stop_dma() API for channel linking
    omap: Fix omap-keypad by restoring old keypad.h without breaking omap2 boards that use matrix_keypad

    Linus Torvalds
     
  • * 'for-linus' of git://git.infradead.org/ubi-2.6:
    UBI: fix check on unsigned long
    UBI: fix backward compatibility

    Linus Torvalds
     
  • * 'hwmon-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jdelvare/staging:
    hwmon: (it87) Fix VID reading on IT8718F/IT8720F
    hwmon: (dme1737) No vid attributes for SCH311x
    hwmon: (fschmd) Fix check on unsigned in watchdog_write()
    hwmon: (coretemp) Maintainer update

    Linus Torvalds
     
  • * 'urgent-v2' of git://git.kernel.org/pub/scm/linux/kernel/git/brodo/pcmcia-2.6:
    pcmcia: do not load the pd6729 driver if io_base is NULL
    pcmcia: Fix possible printk format warnings
    pcmcia: do not try to store more than 4 version strings
    pcmcia: pccard_read_tuple and TUPLE_RETURN_COMMON cleanup
    pcmcia: properly close previous dev_printk if kzalloc fails in do_io_probe
    pcmcia: fix controller printk format warnings

    Linus Torvalds
     
  • * master.kernel.org:/home/rmk/linux-2.6-arm: (22 commits)
    ARM: Fix lubbock defconfig build
    ARM: 5769/1: CPU_ARM920T: remove dead Maverick EP9312 URL
    ARM: 5768/1: ep93xx: remove dead code in ep93xx_gpio_ab_irq_handler()
    ARM: 5767/1: ep93xx: remove ep93xx_init_time() prototype
    ARM: 5765/1: Updated U300 defconfig
    ARM: 5766/1: Fix watchdog enabling for AT91SAM9G45
    ARM: 5764/1: bcmring: add oprofile pmu support
    [ARM] pxa/spitz: add gpio button support (fixes regression)
    [ARM] pxa/cm-x300: fix mmc numbering
    ARM: 5763/1: ARM: SMP: Fix the BUG with CONFIG_PREEMPT enabled
    ARM: 5760/1: ep93xx: fix build error in edb93xx.c
    ARM: 5759/1: Add register information of threads to coredump
    ARM: 5757/1: Thumb-2: Correct "mov.w pc, lr" instruction which is unpredictable
    MXC: fix reset for mx31, mx35 and mx27 SoCs
    fix pcm037_eet compilation with the new SPI driver
    fix compilation of i.MX31 platforms
    pcm970 mmc: Fix ro switch
    pcm038: Add SPI/MC13783 support
    mx25: Add missing copyright / license header
    mx25pdk: remove nand support as it is not present in current tree
    ...

    Linus Torvalds
     
  • …/git/tip/linux-2.6-tip

    * 'core-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip:
    futex: Move drop_futex_key_refs out of spinlock'ed region
    rcu: Fix TREE_PREEMPT_RCU CPU_HOTPLUG bad-luck hang
    rcu: Stopgap fix for synchronize_rcu_expedited() for TREE_PREEMPT_RCU
    rcu: Prevent RCU IPI storms in presence of high call_rcu() load
    futex: Check for NULL keys in match_futex
    futex: Handle spurious wake up

    Linus Torvalds
     
  • …/git/tip/linux-2.6-tip

    * 'perf-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip:
    perf timechart: Improve the visual appearance of scheduler delays
    perf timechart: Fix the wakeup-arrows that point to non-visible processes
    perf top: Fix --delay_secs 0 division by zero
    perf tools: Bump version to 0.0.2
    perf_event: Adjust frequency and unthrottle for non-group-leader events

    Linus Torvalds
     
  • …l/git/tip/linux-2.6-tip

    * 'sched-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip:
    sched: Do less agressive buddy clearing
    sched: Disable SD_PREFER_LOCAL for MC/CPU domains

    Linus Torvalds
     
  • …git/tip/linux-2.6-tip

    * 'x86-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip:
    x86, UV: Set DELIVERY_MODE=4 for vector=NMI_VECTOR in uv_hub_send_ipi()
    x86, UV: Fix and clean up bau code to use uv_gpa_to_pnode()
    x86: Don't print number of MCE banks for every CPU
    x86, UV: Fix information in __uv_hub_info structure
    x86: Document linker script ASSERT() quirk

    Linus Torvalds
     
  • syscallno is unsigned

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

    Roel Kluin
     
  • There are some places where we do like:

    pte = pte_map();
    do {
    (do break in some conditions)
    } while (pte++, ...);
    pte_unmap(pte - 1);

    But if the loop breaks at the first loop, pte_unmap() unmaps invalid pte.

    This patch is a fix for this problem.

    Signed-off-by: Daisuke Nishimura
    Reviewd-by: KAMEZAWA Hiroyuki
    Acked-by: Hugh Dickins
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Daisuke Nishimura
     
  • I have an HP HDX 18 laptop, and noted that the configuration of the
    accelerometer needs to be x_inverted.

    Signed-off-by: Ian E. Morgan
    Signed-off-by: Éric Piel
    Cc: Pavel Machek
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Ian E. Morgan
     
  • Correct orientation for HP EliteBook 8530w.

    Reported-by: Jörgen Jonssson
    Signed-off-by: Éric Piel
    Cc: Pavel Machek
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Éric Piel
     
  • I have learned that the 6730b and 6730s have different accelerometer
    orientation, and have modified the driver accordingly (diff attached),
    while dropping the wild guess for AMD based 6735 having the same
    orientation as Intel based 6730 (this is not true for any other related
    series/family, thus is not probable for 673x).

    Signed-off-by: Pavel Herrmann
    Signed-off-by: Éric Piel
    Cc: Pavel Machek
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Pavel Herrmann
     
  • In the case where cpuidle_idle_call() returns before changing state due to
    a need_resched(), it was returning with IRQs disabled.

    The idle path assumes that the platform specific idle code returns with
    interrupts enabled (although this too is undocumented AFAICT) and on ARM
    we have a WARN_ON(!(irqs_disabled()) when returning from the idle loop, so
    the user-visible effects were only a warning since interrupts were
    eventually re-enabled later.

    On x86, this same problem exists, but there is no WARN_ON() to detect it.
    As on ARM, the interrupts are eventually re-enabled, so I'm not sure of
    any actual bugs triggered by this. It's primarily a
    correctness/consistency fix.

    This patch ensures IRQs are (re)enabled before returning.

    Reported-by: Hemanth V
    Signed-off-by: Kevin Hilman
    Cc: Arjan van de Ven
    Cc: Len Brown
    Cc: Venkatesh Pallipadi
    Cc: Ingo Molnar
    Cc: "Rafael J. Wysocki"
    Tested-by: Martin Michlmayr
    Cc: [2.6.31.x]
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Kevin Hilman
     
  • Signed-off-by: Andy Whitcroft
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Andy Whitcroft
     
  • Ingo reported that the following lines triggered a false warning,

    static struct lock_class_key rcu_lock_key;
    struct lockdep_map rcu_lock_map =
    STATIC_LOCKDEP_MAP_INIT("rcu_read_lock", &rcu_lock_key);
    EXPORT_SYMBOL_GPL(rcu_lock_map);

    from kernel/rcutree.c , and the false warning looked like this,

    WARNING: EXPORT_SYMBOL(foo); should immediately follow its
    function/variable
    +EXPORT_SYMBOL_GPL(rcu_lock_map);

    We actually should be checking the statement before the EXPORT_* for a
    mention of the exported object, and complain where it is not there.

    [akpm@linux-foundation.org: coding-style fixes]
    Cc: Ingo Molnar
    Cc: Paul E. McKenney
    Reported-by: Daniel Walker
    Signed-off-by: Andy Whitcroft
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Andy Whitcroft
     
  • In the following code,

    union thread_union init_thread_union
    __attribute__((__section__(".data.init_task"))) =
    { INIT_THREAD_INFO(init_task) };

    There is a non-conforming declaration. It should really be like the
    following,

    union thread_union init_thread_union
    __attribute__((__section__(".data.init_task"))) = {
    INIT_THREAD_INFO(init_task)
    };

    However, checkpatch doesn't catch this right now because it doesn't
    correctly evaluate the "__attribute__".

    It is not at all clear that we care what preceeds an assignment style
    attribute when we find the open brace. Relax the test so we do not need
    to check the __attribute__.

    Reported-by: Daniel Walker
    Signed-off-by: Andy Whitcroft
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Andy Whitcroft
     
  • The macro concatenation (##) sequence can cause false errors when checking
    macro's. Checkpatch doesn't currently know about the operator.

    For example this line,

    + entry = (struct ftrace_raw_##call *)raw_data; \

    is correct but it produces the following error,

    ERROR: need consistent spacing around '*' (ctx:WxB)
    + entry = (struct ftrace_raw_##call *)raw_data;\
    ^

    The line above doesn't have any spacing problems, and if you remove the
    macro concatenation sequence checkpatch doesn't give any errors.

    Extend identifier handling to include ## concatenation within the
    definition of an identifier.

    Reported-by: Daniel Walker
    Signed-off-by: Andy Whitcroft
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Andy Whitcroft
     
  • Signed-off-by: Andy Whitcroft
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Andy Whitcroft
     
  • We are allowing context scanning checks to apply against the first line of
    context outside at the end of the hunk. This can lead to false matches to
    patch names leading to various perl warnings. Correctly stop at the
    bottom of the hunk.

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

    Andy Whitcroft
     
  • Prevent known non types being detected as modifiers. Ensure we do not
    look at any type which starts with a keyword.

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

    Andy Whitcroft
     
  • Currently, sparsemem is only available if EXPERIMENTAL is enabled.
    However, it hasn't ever been marked experimental.

    It's been about four years since sparsemem was merged, and we have
    platforms which depend on it; allow architectures to decide whether
    sparsemem should be the default memory model.

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

    Russell King
     
  • Allow csrows to properly initialize when the topology only has active
    channels on 2 and 3. This new check allows proper detection and
    initialization in this topology. Only checking the first mrt that
    represented channels 0 and 1 is not sufficient.

    I also fixed up the related debug information path. I can submit as a 2nd
    patch if needed.

    Signed-off-by: Keith Mannthey
    Acked-by: Aristeu Rozanski
    Signed-off-by: Doug Thompson
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Keith Mannthey
     
  • When building without CONFIG_PCI the edac_pci_idx variable is unused,
    causing a build-time warning. Wrap the variable in #ifdef CONFIG_PCI,
    just like the rest of the PCI support.

    Signed-off-by: Ira W. Snyder
    Signed-off-by: Doug Thompson
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Ira W. Snyder
     
  • The i5400 EDAC driver has several bugs with chip-select row computation
    which most likely lead to bugs in detailed error reporting. Attempts to
    contact the authors have gone mostly unanswered so I am presenting my diff
    here. I do not subscribe to lkml and would appreciate being kept in the
    cc.

    The most egregious problem was miscalculating the addresses of MTR
    registers after register 0 by assuming they are 32bit rather than 16.
    This caused the driver to miss half of the memories. Most motherboards
    tend to have only 8 dimm slots and not 16, so this may not have been
    noticed before.

    Further, the row calculations multiplied the number of dimms several
    times, ultimately ending up with a maximum row of 32. The chipset only
    supports 4 dimms in each of 4 channels, so csrow could not be higher than
    4 unless you use a row per-rank with dual-rank dimms. I opted to
    eliminate this behavior as it is confusing to the user and the error
    reporting works by slot and not rank. This gives a much clearer view of
    memory by slot and channel in /sys.

    Signed-off-by: Jeff Roberson
    Signed-off-by: Doug Thompson
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Jeff Roberson
     
  • Having ->procname but not ->proc_handler is valid when PROC_SYSCTL=n,
    people use such combination to reduce ifdefs with non-standard handlers.

    Addresses http://bugzilla.kernel.org/show_bug.cgi?id=14408

    Signed-off-by: Alexey Dobriyan
    Reported-by: Peter Teoh
    Cc: "Eric W. Biederman"
    Cc: "Rafael J. Wysocki"
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Alexey Dobriyan
     
  • Augment the documentation of the hwmon sysfs API to accomodate ACPI power
    meters and the current desired behavior of power capping hardware drivers.

    Signed-off-by: Darrick J. Wong
    Cc: Zhang Rui
    Cc: Pavel Machek
    Cc: Len Brown
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Darrick J. Wong
     
  • The gpio_twl4030_probe() function calls gpio_twl4030_remove(), and the
    former has __devinit, so the latter cannot use __devexit. Otherwise we
    hit the section mismatch warning:

    WARNING: drivers/gpio/built-in.o(.devinit.text+0x71a): Section mismatch
    in reference from the function _gpio_twl4030_probe() to the function
    .devexit.text:_gpio_twl4030_remove()
    The function __devinit _gpio_twl4030_probe() references a function
    __devexit _gpio_twl4030_remove().
    This is often seen when error handling in the init function uses
    functionality in the exit path.
    The fix is often to remove the __devexit annotation of
    _gpio_twl4030_remove() so it may be used outside an exit section.

    Signed-off-by: Mike Frysinger
    Cc: David Brownell
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Mike Frysinger
     
  • The IBM Saturn serial card has only one port. Without that fixup,
    the kernel thinks it has two, which confuses userland setup and
    admin tools as well.

    [akpm@linux-foundation.org: fix pci-ids.h layout]
    Signed-off-by: Benjamin Herrenschmidt
    Acked-by: Alan Cox
    Cc: Michael Reed
    Cc:
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Benjamin Herrenschmidt
     
  • Add support for ADDI-DATA GmbH PCI-Express communication cards:

    APCIe-7300
    APCIe-7420
    APCIe-7500
    APCIe-7800

    Warning: 8250_pci.c depends on pci_ids.h. 8250_pci.c

    Signed-off-by: Krauth Julien
    Acked-by: Alan Cox
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Krauth.Julien
     
  • is_power_of_2() appears not to be constant enough for BUILD_BUG_ON()
    after the latest rework, so replace it with an open-coded test.

    Signed-off-by: Haavard Skinnemoen
    Cc: Uwe Kleine-König
    Cc: Jan Beulich
    Cc: Haavard Skinnemoen
    Cc: Alan Cox
    Cc: Nicolas Ferre
    Cc: Claudio Scordino
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Haavard Skinnemoen
     
  • Isolators putting a page back to the LRU do not hold the page lock, and if
    the page is mlocked, another thread might munlock it concurrently.

    Expecting this, the putback code re-checks the evictability of a page when
    it just moved it to the unevictable list in order to correct its decision.

    The problem, however, is that ordering is not garuanteed between setting
    PG_lru when moving the page to the list and checking PG_mlocked
    afterwards:

    #0: #1

    spin_lock()
    if (TestClearPageMlocked())
    if (PageLRU())
    move to evictable list
    SetPageLRU()
    spin_unlock()
    if (!PageMlocked())
    move to evictable list

    The PageMlocked() check may get reordered before SetPageLRU() in #0,
    resulting in #0 not moving the still mlocked page, and in #1 failing to
    isolate and move the page as well. The page is now stranded on the
    unevictable list.

    The race condition is very unlikely. The consequence currently is one
    page falling off the reclaim grid and eventually getting freed with
    PG_unevictable set, which triggers a warning in the page allocator.

    TestClearPageMlocked() in #1 already provides full memory barrier
    semantics.

    This patch adds an explicit full barrier to force ordering between
    SetPageLRU() and PageMlocked() so that either one of the competitors
    rescues the page.

    Signed-off-by: Johannes Weiner
    Reviewed-by: KOSAKI Motohiro
    Cc: Hugh Dickins
    Cc: Mel Gorman
    Cc: Lee Schermerhorn
    Cc: Peter Zijlstra
    Reviewed-by: Rik van Riel
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Johannes Weiner
     
  • If migrate_prep is failed, new variable is leaked. This patch fixes it.

    Signed-off-by: KOSAKI Motohiro
    Acked-by: Christoph Lameter
    Cc:
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    KOSAKI Motohiro
     
  • If mbind() receives an invalid address, do_mbind leaks a page. The
    following test program detects this leak.

    This patch fixes it.

    migrate_efault.c
    =======================================
    #include
    #include
    #include
    #include
    #include
    #include
    #include

    static unsigned long pagesize;

    static void* make_hole_mapping(void)
    {

    void* addr;

    addr = mmap(NULL, pagesize*3, PROT_READ|PROT_WRITE,
    MAP_ANON|MAP_PRIVATE, 0, 0);
    if (addr == MAP_FAILED)
    return NULL;

    /* make page populate */
    memset(addr, 0, pagesize*3);

    /* make memory hole */
    munmap(addr+pagesize, pagesize);

    return addr;
    }

    int main(int argc, char** argv)
    {
    void* addr;
    int ch;
    int node;
    struct bitmask *nmask = numa_allocate_nodemask();
    int err;
    int node_set = 0;

    while ((ch = getopt(argc, argv, "n:")) != -1){
    switch (ch){
    case 'n':
    node = strtol(optarg, NULL, 0);
    numa_bitmask_setbit(nmask, node);
    node_set = 1;
    break;
    default:
    ;
    }
    }
    argc -= optind;
    argv += optind;

    if (!node_set)
    numa_bitmask_setbit(nmask, 0);

    pagesize = getpagesize();

    addr = make_hole_mapping();

    err = mbind(addr, pagesize*3, MPOL_BIND, nmask->maskp, nmask->size, MPOL_MF_MOVE_ALL);
    if (err)
    perror("mbind ");

    return 0;
    }
    =======================================

    Signed-off-by: KOSAKI Motohiro
    Acked-by: Christoph Lameter
    Cc:
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    KOSAKI Motohiro
     
  • A particular fsfuzzer run caused an hfs file system to crash on mount.
    This is due to a corrupted MDB extent record causing a miscalculation of
    HFS_I(inode)->first_blocks for the extent tree. If the extent records are
    zereod out, it won't trigger the first_blocks special case. Instead it
    falls through to the extent code which we're still in the middle of
    initializing.

    This patch catches the 0 size extent records, reports the corruption, and
    fails the mount.

    Reported-by: Ramon de Carvalho Valle
    Signed-off-by: Jeff Mahoney
    Cc: Valdis Kletnieks
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Jeff Mahoney