kernel-ark/arch/ppc64/kernel
Rusty Lynch 97f7943d70 [PATCH] Return probe redesign: ppc64 specific implementation
The following is a patch provided by Ananth Mavinakayanahalli that implements
the new PPC64 specific parts of the new function return probe design.

NOTE: Since getting Ananth's patch, I changed trampoline_probe_handler()
      to consume each of the outstanding return probem instances (feedback
      on my original RFC after Ananth cut a patch), and also added the
      arch_init() function (adding arch specific initialization.) I have
      cross compiled but have not testing this on a PPC64 machine.

Changes include:
 * Addition of kretprobe_trampoline to act as a dummy function for instrumented
   functions to return to, and for the return probe infrastructure to place
   a kprobe on on, gaining control so that the return probe handler
   can be called, and so that the instruction pointer can be moved back
   to the original return address.
 * Addition of arch_init(), allowing a kprobe to be registered on
   kretprobe_trampoline
 * Addition of trampoline_probe_handler() which is used as the pre_handler
   for the kprobe inserted on kretprobe_implementation.  This is the function
   that handles the details for calling the return probe handler function
   and returning control back at the original return address
 * Addition of arch_prepare_kretprobe() which is setup as the pre_handler
   for a kprobe registered at the beginning of the target function by
   kernel/kprobes.c so that a return probe instance can be setup when
   a caller enters the target function.  (A return probe instance contains
   all the needed information for trampoline_probe_handler to do it's job.)
 * Hooks added to the exit path of a task so that we can cleanup any left-over
   return probe instances (i.e. if a task dies while inside a targeted function
   then the return probe instance was reserved at the beginning of the function
   but the function never returns so we need to mark the instance as unused.)

Signed-off-by: Rusty Lynch <rusty.lynch@intel.com>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
2005-06-27 15:23:53 -07:00
..
vdso32
vdso64
align.c
asm-offsets.c [PATCH] ppc64 iSeries: tidy up some includes and HvCall.h 2005-06-21 18:46:28 -07:00
binfmt_elf32.c
bitops.c
bpa_iic.c [PATCH] ppc64: Add driver for BPA interrupt controllers 2005-06-23 09:43:43 +10:00
bpa_iic.h [PATCH] ppc64: Add driver for BPA interrupt controllers 2005-06-23 09:43:43 +10:00
bpa_iommu.c [PATCH] ppc64: Add driver for BPA iommu 2005-06-23 09:43:54 +10:00
bpa_iommu.h [PATCH] ppc64: Add driver for BPA iommu 2005-06-23 09:43:54 +10:00
bpa_nvram.c [PATCH] ppc64: add a minimal nvram driver 2005-06-23 09:43:31 +10:00
bpa_setup.c [PATCH] ppc64: Add driver for BPA iommu 2005-06-23 09:43:54 +10:00
btext.c
cpu_setup_power4.S [PATCH] ppc64: add BPA platform type 2005-06-23 09:43:37 +10:00
cputable.c [PATCH] ppc64: add BPA platform type 2005-06-23 09:43:37 +10:00
dma.c [PATCH] ppc64 iSeries: allow build with no PCI 2005-06-21 18:46:31 -07:00
eeh.c [PATCH] ppc64: Abolish ioremap_mm 2005-06-21 18:46:26 -07:00
entry.S
head.S [PATCH] ppc64: kexec support for ppc64 2005-06-25 16:24:51 -07:00
HvCall.c
hvCall.S
hvconsole.c
hvcserver.c
HvLpConfig.c
HvLpEvent.c [PATCH] ppc64 iSeries: remove LparData.h 2005-06-21 18:46:27 -07:00
i8259.c
i8259.h
idle_power4.S
idle.c [PATCH] ppc64 iSeries: cleanup ItLpQueue.h 2005-06-21 18:46:28 -07:00
init_task.c
ioctl32.c
iomap.c
iommu.c
irq.c [PATCH] ppc64: add BPA platform type 2005-06-23 09:43:37 +10:00
iSeries_htab.c
iSeries_iommu.c [PATCH] ppc64 iSeries: allow build with no PCI 2005-06-21 18:46:31 -07:00
iSeries_irq.c [PATCH] ppc64 iSeries: tidy up irq code after merge 2005-06-21 18:46:30 -07:00
iSeries_pci.c [PATCH] ppc64 iSeries: remove some more members of iSeries_Device_Node 2005-06-21 18:46:30 -07:00
iSeries_proc.c [PATCH] ppc64 iSeries: remove LparData.h 2005-06-21 18:46:27 -07:00
iSeries_setup.c [PATCH] ppc64: consolidate calibrate_decr implementations 2005-06-23 09:43:07 +10:00
iSeries_setup.h
iSeries_smp.c [PATCH] ppc64 iSeries: eliminate some unused inline functions 2005-06-21 18:46:28 -07:00
iSeries_VpdInfo.c [PATCH] ppc64 iSeries: remove some more members of iSeries_Device_Node 2005-06-21 18:46:30 -07:00
ItLpQueue.c [PATCH] ppc64 iSeries: remove LparData.h 2005-06-21 18:46:27 -07:00
kprobes.c [PATCH] Return probe redesign: ppc64 specific implementation 2005-06-27 15:23:53 -07:00
lmb.c
lparcfg.c [PATCH] ppc64: Fix compile warnings in arch/ppc64/kernel/lparcfg.c 2005-06-25 16:24:27 -07:00
LparData.c
machine_kexec.c [PATCH] kexec code cleanup 2005-06-25 16:24:55 -07:00
Makefile [PATCH] ppc64: kexec support for ppc64 2005-06-25 16:24:51 -07:00
maple_pci.c
maple_setup.c [PATCH] Maple powerdown patch 2005-06-23 17:14:39 +10:00
maple_time.c [PATCH] ppc64: consolidate calibrate_decr implementations 2005-06-23 09:43:07 +10:00
mf.c [PATCH] ppc64 iSeries: tidy up some includes and HvCall.h 2005-06-21 18:46:28 -07:00
misc.S [PATCH] ppc64: kexec support for ppc64 2005-06-25 16:24:51 -07:00
module.c
mpic.c [PATCH] ppc64: kexec support for ppc64 2005-06-25 16:24:51 -07:00
mpic.h [PATCH] ppc64: kexec support for ppc64 2005-06-25 16:24:51 -07:00
nvram.c
of_device.c
pacaData.c
pci_direct_iommu.c
pci_dn.c
pci_iommu.c
pci.c [PATCH] pSeries - read irqs dynamically 2005-06-23 17:09:54 +10:00
pci.h [PATCH] pSeries - read irqs dynamically 2005-06-23 17:09:54 +10:00
pmac_feature.c
pmac_low_i2c.c
pmac_nvram.c
pmac_pci.c
pmac_setup.c
pmac_smp.c
pmac_time.c [PATCH] ppc64: consolidate calibrate_decr implementations 2005-06-23 09:43:07 +10:00
pmac.h
pmc.c
ppc_ksyms.c [PATCH] ppc64: Add missing exports 2005-06-27 15:11:43 -07:00
proc_ppc64.c [PATCH] ppc64: add BPA platform type 2005-06-23 09:43:37 +10:00
process.c [PATCH] Return probe redesign: ppc64 specific implementation 2005-06-27 15:23:53 -07:00
prom_init.c [PATCH] ppc64: add BPA platform type 2005-06-23 09:43:37 +10:00
prom.c [PATCH] ppc64: set/clear SMT capable bit at boot 2005-06-21 18:46:31 -07:00
pSeries_hvCall.S
pSeries_iommu.c
pSeries_lpar.c
pSeries_nvram.c
pSeries_pci.c [PATCH] pSeries - read irqs dynamically 2005-06-23 17:09:54 +10:00
pSeries_reconfig.c
pSeries_setup.c [PATCH] ppc64: kexec support for ppc64 2005-06-25 16:24:51 -07:00
pSeries_smp.c [PATCH] i386 CPU hotplug 2005-06-25 16:24:29 -07:00
ptrace32.c
ptrace.c [PATCH] ppc64: fix seccomp with 32-bit userland 2005-06-24 00:05:18 -07:00
ras.c [PATCH] ppc64 iSeries: remove LparData.h 2005-06-21 18:46:27 -07:00
rtas_flash.c
rtas_pci.c [PATCH] ppc64: Split out generic rtas code from pSeries_pci.c. 2005-06-23 09:43:23 +10:00
rtas-proc.c [PATCH] ppc64: pSeries_progress -> rtas_progress 2005-06-23 09:43:28 +10:00
rtas.c [PATCH] correct printing to operator panel 2005-06-23 16:09:41 +10:00
rtasd.c
rtc.c [PATCH] ppc64: rename pSeries rtc functions into rtas_* 2005-06-23 09:43:18 +10:00
scanlog.c
semaphore.c
setup.c [PATCH] ppc64: kexec support for ppc64 2005-06-25 16:24:51 -07:00
signal32.c
signal.c
smp-tbsync.c
smp.c [PATCH] ppc64: Add driver for BPA interrupt controllers 2005-06-23 09:43:43 +10:00
spider-pic.c [PATCH] ppc64: Add driver for BPA interrupt controllers 2005-06-23 09:43:43 +10:00
sys_ppc32.c [PATCH] ppc64 iSeries: allow build with no PCI 2005-06-21 18:46:31 -07:00
syscalls.c
sysfs.c
time.c [PATCH] ppc64: Add missing exports 2005-06-27 15:11:43 -07:00
traps.c [PATCH] ppc64: add BPA platform type 2005-06-23 09:43:37 +10:00
u3_iommu.c
udbg.c
vdso.c
vecemu.c
vector.S
vio.c [PATCH] ppc64: tidy up vio devices fake parent 2005-06-21 18:46:31 -07:00
viopath.c [PATCH] ppc64 iSeries: misc header cleanups 2005-06-21 18:46:28 -07:00
vmlinux.lds.S
xics.c [PATCH] ppc64: kexec support for ppc64 2005-06-25 16:24:51 -07:00