31 Mar, 2011

1 commit


30 Mar, 2011

1 commit


28 Mar, 2011

1 commit


26 Mar, 2011

2 commits


25 Mar, 2011

1 commit

  • Commit ddd588b5dd55 ("oom: suppress nodes that are not allowed from
    meminfo on oom kill") moved lib/show_mem.o out of lib/lib.a, which
    resulted in build warnings on all architectures that implement their own
    versions of show_mem():

    lib/lib.a(show_mem.o): In function `show_mem':
    show_mem.c:(.text+0x1f4): multiple definition of `show_mem'
    arch/sparc/mm/built-in.o:(.text+0xd70): first defined here

    The fix is to remove __show_mem() and add its argument to show_mem() in
    all implementations to prevent this breakage.

    Architectures that implement their own show_mem() actually don't do
    anything with the argument yet, but they could be made to filter nodes
    that aren't allowed in the current context in the future just like the
    generic implementation.

    Reported-by: Stephen Rothwell
    Reported-by: James Bottomley
    Suggested-by: Andrew Morton
    Signed-off-by: David Rientjes
    Signed-off-by: Linus Torvalds

    David Rientjes
     

24 Mar, 2011

3 commits

  • minix bit operations are only used by minix filesystem and useless by
    other modules. Because byte order of inode and block bitmaps is different
    on each architecture like below:

    m68k:
    big-endian 16bit indexed bitmaps

    h8300, microblaze, s390, sparc, m68knommu:
    big-endian 32 or 64bit indexed bitmaps

    m32r, mips, sh, xtensa:
    big-endian 32 or 64bit indexed bitmaps for big-endian mode
    little-endian bitmaps for little-endian mode

    Others:
    little-endian bitmaps

    In order to move minix bit operations from asm/bitops.h to architecture
    independent code in minix filesystem, this provides two config options.

    CONFIG_MINIX_FS_BIG_ENDIAN_16BIT_INDEXED is only selected by m68k.
    CONFIG_MINIX_FS_NATIVE_ENDIAN is selected by the architectures which use
    native byte order bitmaps (h8300, microblaze, s390, sparc, m68knommu,
    m32r, mips, sh, xtensa). The architectures which always use little-endian
    bitmaps do not select these options.

    Finally, we can remove minix bit operations from asm/bitops.h for all
    architectures.

    Signed-off-by: Akinobu Mita
    Acked-by: Arnd Bergmann
    Acked-by: Greg Ungerer
    Cc: Geert Uytterhoeven
    Cc: Roman Zippel
    Cc: Andreas Schwab
    Cc: Martin Schwidefsky
    Cc: Heiko Carstens
    Cc: Yoshinori Sato
    Cc: Michal Simek
    Cc: "David S. Miller"
    Cc: Hirokazu Takata
    Acked-by: Ralf Baechle
    Acked-by: Paul Mundt
    Cc: Chris Zankel
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Akinobu Mita
     
  • As the result of conversions, there are no users of ext2 non-atomic bit
    operations except for ext2 filesystem itself. Now we can put them into
    architecture independent code in ext2 filesystem, and remove from
    asm/bitops.h for all architectures.

    Signed-off-by: Akinobu Mita
    Cc: Jan Kara
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Akinobu Mita
     
  • Introduce little-endian bit operations to the big-endian architectures
    which do not have native little-endian bit operations and the
    little-endian architectures. (alpha, avr32, blackfin, cris, frv, h8300,
    ia64, m32r, mips, mn10300, parisc, sh, sparc, tile, x86, xtensa)

    These architectures can just include generic implementation
    (asm-generic/bitops/le.h).

    Signed-off-by: Akinobu Mita
    Cc: Richard Henderson
    Cc: Ivan Kokshaysky
    Cc: Mikael Starvik
    Cc: David Howells
    Cc: Yoshinori Sato
    Cc: "Luck, Tony"
    Cc: Ralf Baechle
    Cc: Kyle McMartin
    Cc: Matthew Wilcox
    Cc: Grant Grundler
    Cc: Paul Mundt
    Cc: Kazumoto Kojima
    Cc: Hirokazu Takata
    Cc: "David S. Miller"
    Cc: Chris Zankel
    Cc: Ingo Molnar
    Cc: Thomas Gleixner
    Acked-by: Hans-Christian Egtvedt
    Acked-by: "H. Peter Anvin"
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Akinobu Mita
     

23 Mar, 2011

1 commit

  • Add a node parameter to alloc_thread_info(), and change its name to
    alloc_thread_info_node()

    This change is needed to allow NUMA aware kthread_create_on_cpu()

    Signed-off-by: Eric Dumazet
    Acked-by: David S. Miller
    Reviewed-by: Andi Kleen
    Acked-by: Rusty Russell
    Cc: Tejun Heo
    Cc: Tony Luck
    Cc: Fenghua Yu
    Cc: David Howells
    Cc:
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Eric Dumazet
     

20 Mar, 2011

1 commit

  • Commit 8d7718aa082aaf30a0b4989e1f04858952f941bc changed "int"
    to "u32" in the prototypes but not the definition.
    I missed this when I saw the patch go by on LKML.

    We cast "u32 *" to "int *" since we are tying into the underlying
    atomics framework, and atomic_t uses int as its value type.

    Signed-off-by: Chris Metcalf
    Reviewed-by: Michel Lespinasse

    Chris Metcalf
     

18 Mar, 2011

2 commits

  • * git://git.kernel.org/pub/scm/linux/kernel/git/cmetcalf/linux-tile: (27 commits)
    arch/tile: support newer binutils assembler shift semantics
    arch/tile: fix deadlock bugs in rwlock implementation
    drivers/edac: provide support for tile architecture
    tile on-chip network driver: sync up with latest fixes
    arch/tile: support 4KB page size as well as 64KB
    arch/tile: add some more VMSPLIT options and use consistent naming
    arch/tile: fix some comments and whitespace
    arch/tile: export some additional module symbols
    arch/tile: enhance existing finv_buffer_remote() routine
    arch/tile: fix two bugs in the backtracer code
    arch/tile: use extended assembly to inline __mb_incoherent()
    arch/tile: use a cleaner technique to enable interrupt for cpu_idle()
    arch/tile: sync up with and changes
    arch/tile: fix reversed test of strict_strtol() return value
    arch/tile: avoid a simulator warning during bootup
    arch/tile: export to userspace
    arch/tile: warn and retry if an IPI is not accepted by the target cpu
    arch/tile: stop disabling INTCTRL_1 interrupts during hypervisor downcalls
    arch/tile: fix __ndelay etc to work better
    arch/tile: bug fix: exec'ed task thought it was still single-stepping
    ...

    Fix up trivial conflict in arch/tile/kernel/vmlinux.lds.S (percpu
    alignment vs section naming convention fix)

    Linus Torvalds
     
  • This change supports building the kernel with newer binutils where
    a shift of greater than the word size is no longer interpreted
    silently as modulo the word size, but instead generates a warning.

    Signed-off-by: Chris Metcalf

    Chris Metcalf
     

16 Mar, 2011

1 commit

  • * 'for-2.6.39' of git://git.kernel.org/pub/scm/linux/kernel/git/tj/percpu:
    percpu, x86: Add arch-specific this_cpu_cmpxchg_double() support
    percpu: Generic support for this_cpu_cmpxchg_double()
    alpha: use L1_CACHE_BYTES for cacheline size in the linker script
    percpu: align percpu readmostly subsection to cacheline

    Fix up trivial conflict in arch/x86/kernel/vmlinux.lds.S due to the
    percpu alignment having changed ("x86: Reduce back the alignment of the
    per-CPU data section")

    Linus Torvalds
     

11 Mar, 2011

7 commits

  • Change futex_atomic_op_inuser and futex_atomic_cmpxchg_inatomic
    prototypes to use u32 types for the futex as this is the data type the
    futex core code uses all over the place.

    Signed-off-by: Michel Lespinasse
    Cc: Darren Hart
    Cc: Peter Zijlstra
    Cc: Matt Turner
    Cc: Russell King
    Cc: David Howells
    Cc: Tony Luck
    Cc: Michal Simek
    Cc: Ralf Baechle
    Cc: "James E.J. Bottomley"
    Cc: Benjamin Herrenschmidt
    Cc: Martin Schwidefsky
    Cc: Paul Mundt
    Cc: "David S. Miller"
    Cc: Chris Metcalf
    Cc: Linus Torvalds
    LKML-Reference:
    Signed-off-by: Thomas Gleixner

    Michel Lespinasse
     
  • The cmpxchg_futex_value_locked API was funny in that it returned either
    the original, user-exposed futex value OR an error code such as -EFAULT.
    This was confusing at best, and could be a source of livelocks in places
    that retry the cmpxchg_futex_value_locked after trying to fix the issue
    by running fault_in_user_writeable().

    This change makes the cmpxchg_futex_value_locked API more similar to the
    get_futex_value_locked one, returning an error code and updating the
    original value through a reference argument.

    Signed-off-by: Michel Lespinasse
    Acked-by: Chris Metcalf [tile]
    Acked-by: Tony Luck [ia64]
    Acked-by: Thomas Gleixner
    Tested-by: Michal Simek [microblaze]
    Acked-by: David Howells [frv]
    Cc: Darren Hart
    Cc: Peter Zijlstra
    Cc: Matt Turner
    Cc: Russell King
    Cc: Ralf Baechle
    Cc: "James E.J. Bottomley"
    Cc: Benjamin Herrenschmidt
    Cc: Martin Schwidefsky
    Cc: Paul Mundt
    Cc: "David S. Miller"
    Cc: Linus Torvalds
    LKML-Reference:
    Signed-off-by: Thomas Gleixner

    Michel Lespinasse
     
  • The first issue fixed in this patch is that pending rwlock write locks
    could lock out new readers; this could cause a deadlock if a read lock was
    held on cpu 1, a write lock was then attempted on cpu 2 and was pending,
    and cpu 1 was interrupted and attempted to re-acquire a read lock.
    The write lock code was modified to not lock out new readers.

    The second issue fixed is that there was a narrow race window where a tns
    instruction had been issued (setting the lock value to "1") and the store
    instruction to reset the lock value correctly had not yet been issued.
    In this case, if an interrupt occurred and the same cpu then tried to
    manipulate the lock, it would find the lock value set to "1" and spin
    forever, assuming some other cpu was partway through updating it. The fix
    is to enforce an interrupt critical section around the tns/store pair.

    In addition, this change now arranges to always validate that after
    a readlock we have not wrapped around the count of readers, which
    is only eight bits.

    Since these changes make the rwlock "fast path" code heavier weight,
    I decided to move all the rwlock code all out of line, leaving only the
    conventional spinlock code with fastpath inlines. Since the read_lock
    and read_trylock implementations ended up very similar, I just expressed
    read_lock in terms of read_trylock.

    As part of this change I also eliminate support for the now-obsolete
    tns_atomic mode.

    Signed-off-by: Chris Metcalf

    Chris Metcalf
     
  • Add tile support for the EDAC driver, which provides unified system
    error (memory, PCI, etc.) reporting. For now, the TILEPro port
    reports memory correctable error (CE) only.

    Signed-off-by: Chris Metcalf

    Chris Metcalf
     
  • The Tilera architecture traditionally supports 64KB page sizes
    to improve TLB utilization and improve performance when the
    hardware is being used primarily to run a single application.

    For more generic server scenarios, it can be beneficial to run
    with 4KB page sizes, so this commit allows that to be specified
    (by modifying the arch/tile/include/hv/pagesize.h header).

    As part of this change, we also re-worked the PTE management
    slightly so that PTE writes all go through a __set_pte() function
    where we can do some additional validation. The set_pte_order()
    function was eliminated since the "order" argument wasn't being used.

    One bug uncovered was in the PCI DMA code, which wasn't properly
    flushing the specified range. This was benign with 64KB pages,
    but with 4KB pages we were getting some larger flushes wrong.

    The per-cpu memory reservation code also needed updating to
    conform with the newer percpu stuff; before it always chose 64KB,
    and that was always correct, but with 4KB granularity we now have
    to pay closer attention and reserve the amount of memory that will
    be requested when the percpu code starts allocating.

    Signed-off-by: Chris Metcalf

    Chris Metcalf
     
  • This renames 3G_OPT to 2_75G, and adds 2_5G and 2_25G.

    For memory-intensive applications that are also network-buffer
    intensive it can be helpful to be able to tune the virtual address
    of the start of kernel memory.

    Signed-off-by: Chris Metcalf

    Chris Metcalf
     
  • This is a grab bag of changes with no actual change to generated code.
    This includes whitespace and comment typos, plus a couple of stale
    comments being removed.

    Signed-off-by: Chris Metcalf

    Chris Metcalf
     

02 Mar, 2011

14 commits

  • This adds a grab bag of symbols that have been missing for
    various modules.

    Signed-off-by: Chris Metcalf

    Chris Metcalf
     
  • It now takes an additional argument so it can be used to
    flush-and-invalidate pages that are cached using hash-for-home
    as well those that are cached with coherence point on a single cpu.

    This allows it to be used more widely for changing the coherence
    point of arbitrary pages when necessary.

    Signed-off-by: Chris Metcalf

    Chris Metcalf
     
  • The first is that we were using an incorrect hand-rolled variant
    of __kernel_text_address() which didn't handle module PCs. We now
    just use the standard API.

    The second was that we weren't accounting for the three-level
    page table when we were trying to pre-verify the addresses on
    the 64-bit TILE-Gx processor; we now do that correctly.

    Signed-off-by: Chris Metcalf

    Chris Metcalf
     
  • This avoids having to maintain an additional separate assembly
    file, and of course the inline is slightly more efficient as well.

    Signed-off-by: Chris Metcalf

    Chris Metcalf
     
  • Previously we used iret to atomically return to kernel PL with
    interrupts enabled. However, it turns out that we are architecturally
    guaranteed that we can just set and clear the "interrupt critical
    section" and only interrupt on the following instruction, so we
    now do that instead, since it's cleaner.

    Signed-off-by: Chris Metcalf

    Chris Metcalf
     
  • These headers are used by Linux but are maintained upstream.
    This change incorporates a few minor fixes to these headers,
    including a new sim_print() function, cleaner support for the
    sim_syscall() API, and a sim_query_cpu_speed() method.

    Signed-off-by: Chris Metcalf

    Chris Metcalf
     
  • This fixes the "initfree" boot argument.

    Signed-off-by: Chris Metcalf

    Chris Metcalf
     
  • As the added comment says, we can sometimes see a coherence warning
    from our simulator if the "swapper_pgprot" variable on the boot cpu
    has not been evicted from cache by the time the other cpus come up.
    Force it to be evicted so we never see the warning.

    Signed-off-by: Chris Metcalf

    Chris Metcalf
     
  • This should have been as part of the initial hardwall submission to
    LKML but was overlooked. The header provides the ioctl definitions for
    manipulating the hardwall fd, so needs to be available to userspace.

    Signed-off-by: Chris Metcalf

    Chris Metcalf
     
  • Previously we assumed this was impossible, but in fact it can happen.
    Handle it gracefully by retrying after issuing a warning.

    Signed-off-by: Chris Metcalf

    Chris Metcalf
     
  • The problem was that this could lead to IPIs being disabled during
    the softirq processing after a hypervisor downcall (e.g. for I/O),
    since both IPI and device interrupts use the INCTRL_1 downcall mechanism.
    When this happened at the wrong time, it could lead to deadlock.

    Luckily, we were already maintaining the per-interrupt state we need,
    and using it in the proper way in the hypervisor, so all we had to do
    was to change Linux to stop blocking downcall interrupts for the entire
    length of the downcall. (Now they're blocked while we're executing the
    downcall routine itself, but not while we're executing any subsequent
    softirq routines.) The hypervisor is doing a very small amount of
    work it no longer needs to do (masking INTCTRL_1 on entry to the client
    interrupt routine), but doing so means that older versions of Tile Linux
    will continue to work with a current hypervisor, so that seems reasonable.

    Signed-off-by: Chris Metcalf

    Chris Metcalf
     
  • The current implementations of __ndelay and __udelay call a hypervisor
    service to delay, but the hypervisor service isn't actually implemented
    very well, and the consensus is that Linux should handle figuring this
    out natively and not use a hypervisor service.

    By converting nanoseconds to cycles, and then spinning until the
    cycle counter reaches the desired cycle, we get several benefits:
    first, we are sensitive to the actual clock speed; second, we use
    less power by issuing a slow SPR read once every six cycles while
    we delay; and third, we properly handle the case of an interrupt by
    exiting at the target time rather than after some number of cycles.

    Signed-off-by: Chris Metcalf

    Chris Metcalf
     
  • To handle single-step, tile mmap's a page of memory in the process
    space for each thread and uses it to construct a version of the
    instruction that we want to single step. If the process exec's,
    though, we lose that mapping, and the kernel needs to be aware that
    it will need to recreate it if the exec'ed process than tries to
    single-step as well.

    Also correct some int32_t to s32 for better kernel style.

    Signed-off-by: Chris Metcalf

    Chris Metcalf
     
  • The convention changed to, e.g., ".data..page_aligned". This commit
    fixes the places in the tile architecture that were still using the
    old convention. One tile-specific section (.init.page) was dropped
    in favor of just using an "aligned" attribute.

    Sam Ravnborg pointed out __PAGE_ALIGNED_BSS, etc.

    Signed-off-by: Chris Metcalf

    Chris Metcalf
     

25 Feb, 2011

1 commit


24 Feb, 2011

4 commits