1. 02 3月, 2017 1 次提交
  2. 11 5月, 2015 1 次提交
    • C
      tile: improve stack backtrace · 47ad7b9b
      Chris Metcalf 提交于
      This commit fixes a number of issues with the tile backtrace code.
      
      - Don't try to identify userspace shared object or executable paths
        if we are doing a backtrace from an interrupt; it's not legal,
        and also unlikely to be interesting.  Likewise, don't try to do
        it for other address spaces, since d_path() assumes it is being
        called in "current" context.
      
      - Move "in_backtrace" from thread_struct to thread_info.
        This way we can access it even if our stack thread_info has been
        clobbered, which makes backtracing more robust.
      
      - Avoid using "current" directly when testing for is_sigreturn().
        Since "current" may be corrupt, we're better off using kbt->task
        explicitly to look up the vdso_base for the current task.
        Conveniently, this simplifies the internal APIs (we only need
        one is_sigreturn() function now).
      
      - Avoid bogus "Odd fault" warning when pc/sp/ex1 are all zero,
        as is true for kernel threads above the last frame.
      
      - Hook into Tejun Heo's dump_stack() framework in lib/dump_stack.c.
      
      - Write last entry in save_stack_trace() as ULONG_MAX, not zero,
        since ftrace (at least) relies on finding that marker.
      
      - Implement save_stack_trace_regs() and save_strack_trace_user(),
        and set CONFIG_USER_STACKTRACE_SUPPORT.
      Signed-off-by: NChris Metcalf <cmetcalf@ezchip.com>
      47ad7b9b
  3. 03 4月, 2012 1 次提交
    • C
      arch/tile: various bugs in stack backtracer · 5f639fdc
      Chris Metcalf 提交于
      Fix a long-standing bug in the stack backtracer where we would print
      garbage to the console instead of kernel function names, if the kernel
      wasn't built with symbol support (e.g. mboot).
      
      Make sure to tag every line of userspace backtrace output if we actually
      have the mmap_sem, since that way if there's no tag, we know that it's
      because we couldn't trylock the semaphore.
      
      Stop doing a TLB flush and examining page tables during backtrace.
      Instead, just trust that __copy_from_user_inatomic() will properly fault
      and return a failure, which it should do in all cases.
      
      Fix a latent bug where the backtracer would directly examine a signal
      context in user space, rather than copying it safely to kernel memory
      first.  This meant that a race with another thread could potentially
      have caused a kernel panic.
      
      Guard against unaligned sp when trying to restart backtrace at an
      interrupt or signal handler point in the kernel backtracer.
      
      Report kernel symbolic information for the call instruction rather
      than for the following instruction.  We still report the actual numeric
      address corresponding to the instruction after the call, for the sake
      of consistency with the normal expectations for stack backtracers.
      Signed-off-by: NChris Metcalf <cmetcalf@tilera.com>
      5f639fdc
  4. 11 3月, 2011 1 次提交
    • C
      arch/tile: support 4KB page size as well as 64KB · 76c567fb
      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: NChris Metcalf <cmetcalf@tilera.com>
      76c567fb
  5. 07 7月, 2010 1 次提交
    • C
      arch/tile: Miscellaneous cleanup changes. · 0707ad30
      Chris Metcalf 提交于
      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: NChris Metcalf <cmetcalf@tilera.com>
      Acked-by: NArnd Bergmann <arnd@arndb.de>
      0707ad30
  6. 05 6月, 2010 1 次提交