04 Sep, 2013

1 commit

  • This chip is no longer being actively developed for (it was superceded
    by the TILEPro64 in 2008), and in any case the existing compiler and
    toolchain in the community do not support it. It's unlikely that the
    kernel works with TILE64 at this point as the configuration has not been
    tested in years. The support is also awkward as it requires maintaining
    a significant number of ifdefs. So, just remove it altogether.

    Signed-off-by: Chris Metcalf

    Chris Metcalf
     

14 Aug, 2013

1 commit

  • This change enables unaligned userspace memory access via a kernel
    fast path on tilegx. The kernel tracks user PC/instruction pairs
    per-thread using a direct-mapped cache in userspace. The cache
    maps those PC/instruction pairs to JIT'ed instruction sequences that
    load or store using byte-wide load store intructions and then
    synthesize 2-, 4- or 8-byte load or store results. Once an
    instruction has been seen to generate an unaligned access once,
    subsequent hits on that instruction typically require overhead
    of only around 50 cycles if cache and TLB is hot.

    We support the prctl() PR_GET_UNALIGN / PR_SET_UNALIGN sys call to
    enable or disable unaligned fixups on a per-process basis.

    To do this we pull some of the tilepro unaligned support out of the
    single_step.c file; tilepro uses instruction disassembly for both
    single-step and unaligned access support. Since tilegx actually has
    hardware singlestep support, though, it's cleaner to keep the tilegx
    unaligned access code in a separate file. While we're at it,
    properly rename the tilepro-specific types, etc., to have tilepro
    suffixes instead of generic tile suffixes.

    Signed-off-by: Chris Metcalf

    Chris Metcalf
     

26 May, 2012

1 commit


21 Apr, 2012

1 commit

  • This continues the theme started with vm_brk() and vm_munmap():
    vm_mmap() does the same thing as do_mmap(), but additionally does the
    required VM locking.

    This uninlines (and rewrites it to be clearer) do_mmap(), which sadly
    duplicates it in mm/mmap.c and mm/nommu.c. But that way we don't have
    to export our internal do_mmap_pgoff() function.

    Some day we hopefully don't have to export do_mmap() either, if all
    modular users can become the simpler vm_mmap() instead. We're actually
    very close to that already, with the notable exception of the (broken)
    use in i810, and a couple of stragglers in binfmt_elf.

    Signed-off-by: Linus Torvalds

    Linus Torvalds
     

03 Apr, 2012

1 commit


29 Mar, 2012

1 commit


04 Nov, 2011

1 commit

  • The kernel code was using some headers that included a mix
    of hardware-specific information (typically found in Tilera
    headers) and structures, enums, and function declarations supporting
    the disassembly function of the tile-desc.c sources.

    This change refactors that code so that a hardware-specific, but
    OS- and application-agnostic header, is created: .
    This header is then exported to userspace along with the other
    headers and can be used to build userspace code; in particular,
    it is used by glibc as part of implementing the backtrace() function.

    The new header, together with a header that specifically describes
    the disassembly code ( with _32 and _64 variants),
    replaces the old and
    headers.

    As part of this change, we are also renaming the 32-bit constants
    from TILE_xxx to TILEPRO_xxx to better reflect the fact that they
    are specific to the TILEPro architecture, and not to TILE-Gx
    and any successor "tile" architecture chips.

    Signed-off-by: Chris Metcalf

    Chris Metcalf
     

20 May, 2011

1 commit

  • This change adds support for /proc/sys/debug/exception-trace to tile.
    Like x86 and sparc, by default it is set to "1", generating a one-line
    printk whenever a user process crashes. By setting it to "2", we get
    a much more complete userspace diagnostic at crash time, including
    a user-space backtrace, register dump, and memory dump around the
    address of the crash.

    Some vestiges of the Tilera-internal version of this support are
    removed with this patch (the show_crashinfo variable and the
    arch_coredump_signal function). We retain a "crashinfo" boot parameter
    which allows you to set the boot-time value of exception-trace.

    Signed-off-by: Chris Metcalf

    Chris Metcalf
     

03 May, 2011

1 commit

  • This support is required for CONFIG_KEYS, NFSv4 kernel DNS, etc.
    The change is slightly more complex than the minimal thing, since
    I took advantage of having to go into the assembly code to just
    move a bunch of stuff into C code: specifically, the schedule(),
    do_async_page_fault(), do_signal(), and single_step_once() support,
    in addition to the TIF_NOTIFY_RESUME support.

    Signed-off-by: Chris Metcalf

    Chris Metcalf
     

02 Mar, 2011

1 commit

  • 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
     

16 Oct, 2010

1 commit

  • This is not quite the complete support, since we're not yet shipping
    intvec_64.S, but it is the support relevant to the set of files we are
    currently shipping, and makes it easier to track changes between
    our internal sources and our public GIT repository.

    Signed-off-by: Chris Metcalf

    Chris Metcalf
     

07 Jul, 2010

1 commit

  • This commit is primarily changes caused by reviewing "sparse"
    and "checkpatch" output on our sources, so is somewhat noisy, since
    things like "printk() -> pr_err()" (or whatever) throughout the
    codebase tend to get tedious to read. Rather than trying to tease
    apart precisely which things changed due to which type of code
    review, this commit includes various cleanups in the code:

    - sparse: Add declarations in headers for globals.
    - sparse: Fix __user annotations.
    - sparse: Using gfp_t consistently instead of int.
    - sparse: removing functions not actually used.
    - checkpatch: Clean up printk() warnings by using pr_info(), etc.;
    also avoid partial-line printks except in bootup code.
    - checkpatch: Use exposed structs rather than typedefs.
    - checkpatch: Change some C99 comments to C89 comments.

    In addition, a couple of minor other changes are rolled in
    to this commit:

    - Add support for a "raise" instruction to cause SIGFPE, etc., to be raised.
    - Remove some compat code that is unnecessary when we fully eliminate
    some of the deprecated syscalls from the generic syscall ABI.
    - Update the tile_defconfig to reflect current config contents.

    Signed-off-by: Chris Metcalf
    Acked-by: Arnd Bergmann

    Chris Metcalf
     

05 Jun, 2010

1 commit

  • This change is the core kernel support for TILEPro and TILE64 chips.
    No driver support (except the console driver) is included yet.

    This includes the relevant Linux headers in asm/; the low-level
    low-level "Tile architecture" headers in arch/, which are
    shared with the hypervisor, etc., and are build-system agnostic;
    and the relevant hypervisor headers in hv/.

    Signed-off-by: Chris Metcalf
    Acked-by: Arnd Bergmann
    Acked-by: FUJITA Tomonori
    Reviewed-by: Paul Mundt

    Chris Metcalf