1. 14 Oct, 2009 4 commits
    • Jiri Olsa's avatar
      tracing: Enable "__cold" functions · 4d828949
      Jiri Olsa authored
      Based on the commit:
      
        a586df06 "x86: Support __attribute__((__cold__)) in gcc 4.3"
      
      some of the functions goes to the ".text.unlikely" section.
      
      Looks like there's not many of them (I found printk, panic,
      __ssb_dma_not_implemented, fat_fs_error), but still worth to
      include I think.
      Signed-off-by: default avatarJiri Olsa <jolsa@redhat.com>
      Cc: Frederic Weisbecker <fweisbec@gmail.com>
      Signed-off-by: default avatarSteven Rostedt <rostedt@goodmis.org>
      LKML-Reference: <20091013203426.175845614@goodmis.org>
      Signed-off-by: default avatarIngo Molnar <mingo@elte.hu>
      4d828949
    • Jiri Olsa's avatar
      tracing: Enable records during the module load · 5cb084bb
      Jiri Olsa authored
      I was debuging some module using "function" and "function_graph"
      tracers and noticed, that if you load module after you enabled
      tracing, the module's hooks will convert only to NOP instructions.
      
      The attached patch enables modules' hooks if there's function trace
      allready on, thus allowing to trace module functions.
      Signed-off-by: default avatarJiri Olsa <jolsa@redhat.com>
      Cc: Frederic Weisbecker <fweisbec@gmail.com>
      Signed-off-by: default avatarSteven Rostedt <rostedt@goodmis.org>
      LKML-Reference: <20091013203425.896285120@goodmis.org>
      Signed-off-by: default avatarIngo Molnar <mingo@elte.hu>
      5cb084bb
    • jolsa@redhat.com's avatar
      tracing: Support multiple pids in set_pid_ftrace file · 756d17ee
      jolsa@redhat.com authored
      Adding the possibility to set more than 1 pid in the set_pid_ftrace
      file, thus allowing to trace more than 1 independent processes.
      
      Usage:
      
       sh-4.0# echo 284 > ./set_ftrace_pid
       sh-4.0# cat ./set_ftrace_pid
       284
       sh-4.0# echo 1 >> ./set_ftrace_pid
       sh-4.0# echo 0 >> ./set_ftrace_pid
       sh-4.0# cat ./set_ftrace_pid
       swapper tasks
       1
       284
       sh-4.0# echo 4 > ./set_ftrace_pid
       sh-4.0# cat ./set_ftrace_pid
       4
       sh-4.0# echo > ./set_ftrace_pid
       sh-4.0# cat ./set_ftrace_pid
       no pid
       sh-4.0#
      Signed-off-by: default avatarJiri Olsa <jolsa@redhat.com>
      Cc: Frederic Weisbecker <fweisbec@gmail.com>
      LKML-Reference: <20091013203425.565454612@goodmis.org>
      Signed-off-by: default avatarSteven Rostedt <rostedt@goodmis.org>
      Signed-off-by: default avatarIngo Molnar <mingo@elte.hu>
      756d17ee
    • Steven Rostedt's avatar
      function-graph/x86: Replace unbalanced ret with jmp · 194ec341
      Steven Rostedt authored
      The function graph tracer replaces the return address with a hook
      to trace the exit of the function call. This hook will finish by
      returning to the real location the function should return to.
      
      But the current implementation uses a ret to jump to the real
      return location. This causes a imbalance between calls and ret.
      That is the original function does a call, the ret goes to the
      handler and then the handler does a ret without a matching call.
      
      Although the function graph tracer itself still breaks the branch
      predictor by replacing the original ret, by using a second ret and
      causing an imbalance, it breaks the predictor even more.
      
      This patch replaces the ret with a jmp to keep the calls and ret
      balanced. I tested this on one box and it showed a 1.7% increase in
      performance. Another box only showed a small 0.3% increase. But no
      box that I tested this on showed a decrease in performance by
      making this change.
      Signed-off-by: default avatarSteven Rostedt <rostedt@goodmis.org>
      Acked-by: default avatarMathieu Desnoyers <mathieu.desnoyers@polymtl.ca>
      Cc: Frederic Weisbecker <fweisbec@gmail.com>
      LKML-Reference: <20091013203425.042034383@goodmis.org>
      Signed-off-by: default avatarIngo Molnar <mingo@elte.hu>
      194ec341
  2. 13 Oct, 2009 5 commits
  3. 12 Oct, 2009 3 commits
  4. 09 Oct, 2009 1 commit
  5. 08 Oct, 2009 2 commits
  6. 07 Oct, 2009 3 commits
  7. 06 Oct, 2009 1 commit
  8. 05 Oct, 2009 2 commits
  9. 04 Oct, 2009 8 commits
  10. 03 Oct, 2009 6 commits
  11. 02 Oct, 2009 5 commits
    • Linus Torvalds's avatar
      Merge master.kernel.org:/home/rmk/linux-2.6-arm · a037a79d
      Linus Torvalds authored
      * master.kernel.org:/home/rmk/linux-2.6-arm: (25 commits)
        ARM: 5728/1: Proper prefetch abort handling on ARMv6 and ARMv7
        ARM: 5727/1: Pass IFSR register to do_PrefetchAbort()
        ARM: 5740/1: fix valid_phys_addr_range() range check
        ARM: 5739/1: ARM: allow empty ATAG_CORE
        ARM: 5735/1: sa1111: CodingStyle cleanups
        ARM: 5738/1: Correct TCM documentation
        ARM: 5734/1: arm: fix compilation of entry-common.S for older CPUs
        ARM: 5733/1: fix bcmring compile error
        ARM: 5732/1: remove redundant include file
        ARM: 5731/2: Fix U300 generic GPIO, remove ifdefs from MMCI v3
        ARM: Ensure do_cache_op takes mmap_sem
        ARM: Fix __cpuexit section mismatch warnings
        ARM: Don't allow highmem on SMP platforms without h/w TLB ops broadcast
        ARM: includecheck fix: mach-davinci, board-dm365-evm.c
        ARM: Remove unused CONFIG SA1100_H3XXX
        ARM: Fix warning: unused variable 'highmem'
        ARM: Fix warning: #warning syscall migrate_pages not implemented
        ARM: Fix SA11x0 clocksource warning
        ARM: Fix SA1100 Neponset serial section mismatch
        ARM: Fix SA1100 Assabet/Neponset PCMCIA section mismatch warnings
        ...
      a037a79d
    • Kirill A. Shutemov's avatar
      ARM: 5728/1: Proper prefetch abort handling on ARMv6 and ARMv7 · d25ef8b8
      Kirill A. Shutemov authored
      Currently, on ARMv6 and ARMv7, if an application tries to execute
      code (or garbage) on non-executable page it hangs. It caused by
      incorrect prefetch abort handling. Now every prefetch abort
      processes as a translation fault.
      
      To fix this we have to analyze instruction fault status register
      to figure out reason why we've got the abort and process it
      accordingly.
      
      To make IFSR different from DFSR we set bit 31 which is reserved in
      both IFSR and DFSR.
      
      This patch also tries to protect from future hangs on unexpected
      exceptions. An application will be killed if unexpected exception
      type was received.
      Signed-off-by: default avatarKirill A. Shutemov <kirill@shutemov.name>
      Signed-off-by: default avatarRussell King <rmk+kernel@arm.linux.org.uk>
      d25ef8b8
    • Kirill A. Shutemov's avatar
      ARM: 5727/1: Pass IFSR register to do_PrefetchAbort() · 4fb28474
      Kirill A. Shutemov authored
      Instruction fault status register, IFSR, was introduced on ARMv6 to
      provide status information about the last insturction fault. It
      needed for proper prefetch abort handling.
      
      Now we have three prefetch abort model:
      
        * legacy - for CPUs before ARMv6. They doesn't provide neither
          IFSR nor IFAR. We simulate IFSR with section translation fault
          status for them to generalize code;
        * ARMv6 - provides IFSR, but not IFAR;
        * ARMv7 - provides both IFSR and IFAR.
      Signed-off-by: default avatarKirill A. Shutemov <kirill@shutemov.name>
      Signed-off-by: default avatarRussell King <rmk+kernel@arm.linux.org.uk>
      4fb28474
    • Greg Ungerer's avatar
      ARM: 5740/1: fix valid_phys_addr_range() range check · 6806bfe1
      Greg Ungerer authored
      Commit 1522ac3e
      ("Fix virtual to physical translation macro corner cases")
      breaks the end of memory check in valid_phys_addr_range().
      The modified expression results in the apparent /dev/mem size
      being 2 bytes smaller than what it actually is.
      
      This patch reworks the expression to correctly check the address,
      while maintaining use of a valid address to __pa().
      Signed-off-by: default avatarGreg Ungerer <gerg@uclinux.org>
      Signed-off-by: default avatarRussell King <rmk+kernel@arm.linux.org.uk>
      6806bfe1
    • David Brown's avatar
      ARM: 5739/1: ARM: allow empty ATAG_CORE · 31abdb74
      David Brown authored
      From: David Brown <davidb@quicinc.com>
      
      The ATAG_CORE is allowed to be empty.  Although this is handled
      by parse_tag_core(), __vet_atags during startup rejects this tag
      unless it contains data.  Allow the initial tag to be either the
      full size, or empty.
      Signed-off-by: default avatarDavid Brown <davidb@quicinc.com>
      Signed-off-by: default avatarRussell King <rmk+kernel@arm.linux.org.uk>
      31abdb74