1. 08 11月, 2016 1 次提交
    • P
      arm64: Add uprobe support · 9842ceae
      Pratyush Anand 提交于
      This patch adds support for uprobe on ARM64 architecture.
      
      Unit tests for following have been done so far and they have been found
      working
          1. Step-able instructions, like sub, ldr, add etc.
          2. Simulation-able like ret, cbnz, cbz etc.
          3. uretprobe
          4. Reject-able instructions like sev, wfe etc.
          5. trapped and abort xol path
          6. probe at unaligned user address.
          7. longjump test cases
      
      Currently it does not support aarch32 instruction probing.
      Signed-off-by: NPratyush Anand <panand@redhat.com>
      Signed-off-by: NCatalin Marinas <catalin.marinas@arm.com>
      9842ceae
  2. 23 9月, 2016 1 次提交
  3. 19 7月, 2016 1 次提交
    • S
      arm64: Kprobes with single stepping support · 2dd0e8d2
      Sandeepa Prabhu 提交于
      Add support for basic kernel probes(kprobes) and jump probes
      (jprobes) for ARM64.
      
      Kprobes utilizes software breakpoint and single step debug
      exceptions supported on ARM v8.
      
      A software breakpoint is placed at the probe address to trap the
      kernel execution into the kprobe handler.
      
      ARM v8 supports enabling single stepping before the break exception
      return (ERET), with next PC in exception return address (ELR_EL1). The
      kprobe handler prepares an executable memory slot for out-of-line
      execution with a copy of the original instruction being probed, and
      enables single stepping. The PC is set to the out-of-line slot address
      before the ERET. With this scheme, the instruction is executed with the
      exact same register context except for the PC (and DAIF) registers.
      
      Debug mask (PSTATE.D) is enabled only when single stepping a recursive
      kprobe, e.g.: during kprobes reenter so that probed instruction can be
      single stepped within the kprobe handler -exception- context.
      The recursion depth of kprobe is always 2, i.e. upon probe re-entry,
      any further re-entry is prevented by not calling handlers and the case
      counted as a missed kprobe).
      
      Single stepping from the x-o-l slot has a drawback for PC-relative accesses
      like branching and symbolic literals access as the offset from the new PC
      (slot address) may not be ensured to fit in the immediate value of
      the opcode. Such instructions need simulation, so reject
      probing them.
      
      Instructions generating exceptions or cpu mode change are rejected
      for probing.
      
      Exclusive load/store instructions are rejected too.  Additionally, the
      code is checked to see if it is inside an exclusive load/store sequence
      (code from Pratyush).
      
      System instructions are mostly enabled for stepping, except MSR/MRS
      accesses to "DAIF" flags in PSTATE, which are not safe for
      probing.
      
      This also changes arch/arm64/include/asm/ptrace.h to use
      include/asm-generic/ptrace.h.
      
      Thanks to Steve Capper and Pratyush Anand for several suggested
      Changes.
      Signed-off-by: NSandeepa Prabhu <sandeepa.s.prabhu@gmail.com>
      Signed-off-by: NDavid A. Long <dave.long@linaro.org>
      Signed-off-by: NPratyush Anand <panand@redhat.com>
      Acked-by: NMasami Hiramatsu <mhiramat@kernel.org>
      Signed-off-by: NCatalin Marinas <catalin.marinas@arm.com>
      2dd0e8d2
  4. 24 2月, 2016 1 次提交
  5. 19 2月, 2016 1 次提交
  6. 28 7月, 2015 1 次提交
    • W
      arm64: debug: rename enum debug_el to avoid symbol collision · 6f883d10
      Will Deacon 提交于
      lib/list_sort.c defines a 'struct debug_el', where "el" is assumedly a
      a contraction of "element". This conflicts with 'enum debug_el' in our
      asm/debug-monitors.h header file, where "el" stands for Exception Level.
      
      The result is build failure when targetting allmodconfig, so rename our
      enum to 'dbg_active_el' to be slightly more explicit about what it is.
      Signed-off-by: NWill Deacon <will.deacon@arm.com>
      6f883d10
  7. 27 7月, 2015 8 次提交
  8. 25 9月, 2014 2 次提交
    • C
      arm64: Fix typos in KGDB macros · 7acf71d1
      Catalin Marinas 提交于
      Some of the KGDB macros used for generating the BRK instructions had the
      wrong spelling for DBG and KGDB abbreviations.
      Signed-off-by: NCatalin Marinas <catalin.marinas@arm.com>
      7acf71d1
    • M
      arm64: insn: Add return statements after BUG_ON() · a9ae04c9
      Mark Brown 提交于
      Following a recent series of enhancements to the insn code the ARMv8
      allnoconfig build has been generating a large number of warnings in the
      form of:
      
      arch/arm64/kernel/insn.c:689:8: warning: 'insn' may be used uninitialized in this function [-Wmaybe-uninitialized]
      
      This is because BUG() and related macros can be compiled out so we get
      execution paths which normally result in a panic compiling out to noops
      instead.
      
      I wasn't able to immediately identify a sensible return value to use in
      these cases so just return AARCH64_BREAK_FAULT - this is all "should
      never happen" code so hopefully it never has a practical impact.
      Signed-off-by: NMark Brown <broonie@kernel.org>
      [catalin.marinas@arm.com: AARCH64_BREAK_FAULT definition contributed by Daniel Borkmann]
      [catalin.marinas@arm.com: replace return 0 with AARCH64_BREAK_FAULT]
      Signed-off-by: NCatalin Marinas <catalin.marinas@arm.com>
      a9ae04c9
  9. 11 7月, 2014 1 次提交
  10. 26 2月, 2014 2 次提交
  11. 20 12月, 2013 1 次提交
  12. 19 7月, 2013 1 次提交
  13. 12 6月, 2013 1 次提交
  14. 17 9月, 2012 1 次提交