Steven Rostedt
31e889098a
ftrace: pass module struct to arch dynamic ftrace functions
...
Impact: allow archs more flexibility on dynamic ftrace implementations
Dynamic ftrace has largly been developed on x86. Since x86 does not
have the same limitations as other architectures, the ftrace interaction
between the generic code and the architecture specific code was not
flexible enough to handle some of the issues that other architectures
have.
Most notably, module trampolines. Due to the limited branch distance
that archs make in calling kernel core code from modules, the module
load code must create a trampoline to jump to what will make the
larger jump into core kernel code.
The problem arises when this happens to a call to mcount. Ftrace checks
all code before modifying it and makes sure the current code is what
it expects. Right now, there is not enough information to handle modifying
module trampolines.
This patch changes the API between generic dynamic ftrace code and
the arch dependent code. There is now two functions for modifying code:
ftrace_make_nop(mod, rec, addr) - convert the code at rec->ip into
a nop, where the original text is calling addr. (mod is the
module struct if called by module init)
ftrace_make_caller(rec, addr) - convert the code rec->ip that should
be a nop into a caller to addr.
The record "rec" now has a new field called "arch" where the architecture
can add any special attributes to each call site record.
Signed-off-by: Steven Rostedt <srostedt@redhat.com>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
2008-11-16 07:36:02 +01:00
..
amba
byteorder
can
dvb
hdlc
i2c
isdn
lockd
mfd
mlx4
mlx4_core: Multiple port type support
2008-10-22 15:38:42 -07:00
mmc
mmc: struct device - replace bus_id with dev_name(), dev_set_name()
2008-11-08 21:37:46 +01:00
mtd
[MTD] [NOR] Fix cfi_send_gen_cmd handling of x16 devices in x8 mode (v4)
2008-11-05 14:40:25 +01:00
netfilter
netfilter_arp
netfilter_bridge
netfilter_ipv4
netfilter_ipv6
nfsd
raid
regulator
rtc
spi
spi: fix compile error
2008-10-30 11:38:47 -07:00
ssb
ssb: Fix DMA-API compilation for non-PCI systems
2008-11-10 13:50:19 -08:00
sunrpc
tc_act
tc_ematch
unaligned
usb
uwb
8250_pci.h
a.out.h
ac97_codec.h
acct.h
acpi.h
acpi_pmtmr.h
adb.h
adfs_fs.h
adfs_fs_i.h
adfs_fs_sb.h
aer.h
affs_hardblocks.h
agp_backend.h
agpgart.h
aio.h
aio_abi.h
amifd.h
amifdreg.h
amigaffs.h
anon_inodes.h
apm-emulation.h
apm_bios.h
arcdevice.h
arcfb.h
async_tx.h
ata.h
ata_platform.h
atalk.h
atm.h
atm_eni.h
atm_he.h
atm_idt77105.h
atm_nicstar.h
atm_suni.h
atm_tcp.h
atm_zatm.h
atmapi.h
atmarp.h
atmbr2684.h
atmclip.h
atmdev.h
atmel-pwm-bl.h
atmel-ssc.h
atmel_pdc.h
atmel_pwm.h
atmel_serial.h
atmel_tc.h
atmioc.h
atmlec.h
atmmpc.h
atmppp.h
atmsap.h
atmsvc.h
attribute_container.h
audit.h
auto_dev-ioctl.h
auto_fs.h
auto_fs4.h
auxvec.h
ax25.h
b1lli.h
b1pcmcia.h
backing-dev.h
backlight.h
baycom.h
bcd.h
bfs_fs.h
binfmts.h
bio.h
bio: define __BIOVEC_PHYS_MERGEABLE
2008-11-06 08:41:55 +01:00
bit_spinlock.h
bitmap.h
Merge branch 'for-upstream' of git://git.kernel.org/pub/scm/linux/kernel/git/dvrabel/uwb
2008-10-23 08:20:34 -07:00
bitops.h
bitrev.h
blkdev.h
blkpg.h
blktrace_api.h
blockgroup_lock.h
bootmem.h
bottom_half.h
bpqether.h
brcmphy.h
bsg.h
buffer_head.h
bug.h
byteorder.h
cache.h
can.h
capability.h
capi.h
cciss_ioctl.h
cd1400.h
cdev.h
cdk.h
cdrom.h
cfag12864b.h
cgroup.h
cgroups: tiny cleanups
2008-10-30 11:38:45 -07:00
cgroup_subsys.h
cgroupstats.h
chio.h
circ_buf.h
clk.h
clockchips.h
clocksource.h
cm4000_cs.h
cn_proc.h
cnt32_to_63.h
clarify usage expectations for cnt32_to_63()
2008-11-09 11:17:33 -08:00
coda.h
coda_cache.h
coda_fs_i.h
coda_linux.h
coda_psdev.h
coff.h
com20020.h
compat.h
compiler-gcc.h
compiler-gcc3.h
compiler-gcc4.h
compiler-intel.h
compiler.h
trace: rename unlikely profiler to branch profiler
2008-11-12 22:27:58 +01:00
completion.h
comstats.h
concap.h
configfs.h
connector.h
console.h
console_struct.h
consolemap.h
const.h
cpu.h
cpufreq.h
cpuidle.h
cpumask.h
cpumask: introduce new API, without changing anything, v3
2008-11-09 21:09:54 +01:00
cpuset.h
cramfs_fs.h
cramfs_fs_sb.h
crash_dump.h
proc: move /proc/vmcore creation to fs/proc/vmcore.c
2008-10-23 18:51:22 +04:00
crc-ccitt.h
crc-itu-t.h
crc-t10dif.h
crc7.h
crc16.h
crc32.h
crc32c.h
cred.h
crypto.h
cryptohash.h
ctype.h
cuda.h
cyclades.h
cyclomx.h
cycx_cfm.h
cycx_drv.h
cycx_x25.h
dca.h
dcache.h
[PATCH vfs-2.6 2/6] vfs: add d_ancestor()
2008-10-23 05:13:16 -04:00
dccp.h
dcookies.h
debug_locks.h
debugfs.h
debugobjects.h
delay.h
delayacct.h
device-mapper.h
Merge git://git.kernel.org/pub/scm/linux/kernel/git/viro/bdev
2008-10-23 10:23:07 -07:00
device.h
i2c: Constify i2c_get_clientdata's parameter
2008-10-22 20:21:31 +02:00
device_cgroup.h
devpts_fs.h
dio.h
dirent.h
display.h
dlm.h
dlm_device.h
dlm_netlink.h
dlm_plock.h
dlmconstants.h
dm-dirty-log.h
dm-io.h
dm-ioctl.h
dm-kcopyd.h
dm-region-hash.h
dm9000.h
dma-attrs.h
dma-mapping.h
dma_remapping.h
dmaengine.h
dmapool.h
dmar.h
dmi.h
dn.h
dnotify.h
dqblk_v1.h
dqblk_v2.h
dqblk_xfs.h
ds1wm.h
ds1286.h
ds17287rtc.h
dtlk.h
dw_dmac.h
dynamic_printk.h
edac.h
edd.h
eeprom_93cx6.h
efi.h
efs_fs_sb.h
efs_vh.h
eisa.h
elevator.h
elf-em.h
elf-fdpic.h
elf.h
elfcore-compat.h
elfcore.h
elfnote.h
enclosure.h
err.h
errno.h
errqueue.h
etherdevice.h
ethtool.h
eventfd.h
eventpoll.h
exportfs.h
ext2_fs.h
ext2_fs_sb.h
ext3_fs.h
ext3_fs_i.h
ext3_fs_sb.h
ext3_jbd.h
f75375s.h
fadvise.h
falloc.h
fault-inject.h
fb.h
fcdevice.h
fcntl.h
fd.h
fddidevice.h
fdreg.h
fdtable.h
fib_rules.h
fiemap.h
file.h
filter.h
firewire-cdev.h
firewire-constants.h
firmware-map.h
firmware.h
flat.h
font.h
freezer.h
freezer_cg: use thaw_process() in unfreeze_cgroup()
2008-10-30 11:38:45 -07:00
fs.h
fs: remove prepare_write/commit_write
2008-10-30 11:38:45 -07:00
fs_enet_pd.h
fs_stack.h
fs_struct.h
fs_uart_pd.h
fsl_devices.h
gianfar: Fix race in TBI/SerDes configuration
2008-10-31 00:59:46 -04:00
fsnotify.h
ftrace.h
ftrace: pass module struct to arch dynamic ftrace functions
2008-11-16 07:36:02 +01:00
ftrace_irq.h
tracing, x86: add low level support for ftrace return tracing
2008-11-11 10:29:11 +01:00
fuse.h
futex.h
gameport.h
gen_stats.h
genalloc.h
generic_acl.h
generic_serial.h
genetlink.h
genhd.h
proc: move /proc/diskstats boilerplate to block/genhd.c
2008-10-23 17:57:37 +04:00
getcpu.h
gfp.h
gfs2_ondisk.h
gigaset_dev.h
gpio.h
gpio_keys.h
gpio_mouse.h
hardirq.h
ftrace: split out hardirq ftrace code into own header
2008-11-06 22:20:46 +01:00
hash.h
hayesesp.h
hdlc.h
hdlcdrv.h
hdpu_features.h
hdreg.h
hid-debug.h
hid.h
HID: fix oops during suspend of unbound HID devices
2008-10-27 15:06:01 +01:00
hiddev.h
hidraw.h
highmem.h
highuid.h
hil.h
hil_mlc.h
hippidevice.h
hp_sdc.h
hpet.h
hrtimer.h
Fix accidental implicit cast in HR-timer conversion
2008-11-06 15:44:19 -08:00
htirq.h
hugetlb.h
proc: switch /proc/meminfo to seq_file
2008-10-23 13:52:40 +04:00
hw_random.h
hwmon-sysfs.h
hwmon-vid.h
hwmon.h
hysdn_if.h
i2c-algo-bit.h
i2c-algo-pca.h
i2c-algo-pcf.h
i2c-algo-pcf: Add adapter hooks around xfer begin and end
2008-10-22 20:21:30 +02:00
i2c-algo-sgi.h
i2c-dev.h
i2c-gpio.h
i2c-id.h
i2c-ocores.h
i2c-pca-platform.h
i2c-pnx.h
i2c-pxa.h
i2c.h
i2c: Add info->archdata field
2008-10-22 20:21:33 +02:00
i2o-dev.h
i2o.h
i8k.h
i7300_idle.h
i7300_idle: Disable ioat channel only on platforms where ile driver can load
2008-10-24 12:54:18 -04:00
i8042.h
ibmtr.h
icmp.h
icmpv6.h
ide.h
idr.h
ieee80211.h
if.h
if_addr.h
if_addrlabel.h
if_arcnet.h
if_arp.h
if_bonding.h
if_bridge.h
if_cablemodem.h
if_ec.h
if_eql.h
if_ether.h
if_fc.h
if_fddi.h
if_frad.h
if_hippi.h
if_infiniband.h
if_link.h
if_ltalk.h
if_macvlan.h
if_packet.h
if_phonet.h
if_plip.h
if_ppp.h
if_pppol2tp.h
if_pppox.h
if_slip.h
if_strip.h
if_tr.h
if_tun.h
if_tunnel.h
if_vlan.h
net: fix packet socket delivery in rx irq handler
2008-11-04 14:49:57 -08:00
igmp.h
ihex.h
in.h
in6.h
in_route.h
inet.h
inet_diag.h
inet_lro.h
inetdevice.h
init.h
adjust init section definitions
2008-10-29 22:02:09 +01:00
init_ohci1394_dma.h
init_task.h
initrd.h
inotify.h
input-polldev.h
input.h
intel-iommu.h
interrupt.h
io-mapping.h
io mapping: clean up #ifdefs
2008-11-03 18:21:45 +01:00
io.h
ioc3.h
ioc4.h
iocontext.h
ioctl.h
iommu-helper.h
ioport.h
ioprio.h
iova.h
ip.h
ip6_tunnel.h
ip_vs.h
ipc.h
ipc_namespace.h
ipmi.h
ipmi_msgdefs.h
ipmi_smi.h
ipsec.h
ipv6.h
ipv6_route.h
ipx.h
irda.h
irq.h
irq_cpustat.h
irqflags.h
irqnr.h
irqreturn.h
isa.h
isapnp.h
iscsi_ibft.h
isdn.h
isdn_divertif.h
isdn_ppp.h
isdnif.h
isicom.h
iso_fs.h
istallion.h
ivtv.h
ivtvfb.h
ixjuser.h
jbd.h
jbd: fix error handling for checkpoint io
2008-10-23 08:55:01 -07:00
jbd2.h
jffs2.h
jhash.h
jiffies.h
journal-head.h
joystick.h
kallsyms.h
kbd_diacr.h
kbd_kern.h
Kbuild
kbuild.h
kd.h
kdebug.h
kdev_t.h
kernel.h
kernel.h: fix might_sleep kernel-doc
2008-10-30 11:38:47 -07:00
kernel_stat.h
kernelcapi.h
kexec.h
key-type.h
key-ui.h
key.h
keyboard.h
keyctl.h
kfifo.h
kgdb.h
klist.h
kmalloc_sizes.h
kmod.h
kobj_map.h
kobject.h
kprobes.h
kref.h
ks0108.h
kthread.h
ktime.h
kvm.h
KVM: Future-proof device assignment ABI
2008-10-28 14:22:15 +02:00
kvm_host.h
KVM: Fix guest shared interrupt with in-kernel irqchip
2008-10-28 14:21:34 +02:00
kvm_para.h
kvm_types.h
lapb.h
latencytop.h
lcd.h
leds-pca9532.h
leds.h
lguest.h
lguest_launcher.h
libata.h
libata: revert convert-to-block-tagging patches
2008-11-10 08:04:47 -08:00
libps2.h
license.h
limits.h
linkage.h
linux_logo.h
list.h
llc.h
lm_interface.h
lmb.h
lockdep.h
log2.h
loop.h
lp.h
lzo.h
m48t86.h
magic.h
major.h
map_to_7segment.h
maple.h
marker.h
markers: remove exported symbol marker_probe_cb_noarg()
2008-10-27 13:02:23 +01:00
math64.h
matroxfb.h
mbcache.h
mbus.h
mc6821.h
mc146818rtc.h
mca-legacy.h
mca.h
mdio-bitbang.h
memcontrol.h
memory.h
memory_hotplug.h
mempolicy.h
mempool.h
memstick.h
meye.h
migrate.h
mii.h
minix_fs.h
miscdevice.h
mISDNdsp.h
mISDNhw.h
mISDNif.h
mm.h
mm_inline.h
mm_types.h
mman.h
mmdebug.h
mmiotrace.h
mmtimer.h
mmu_notifier.h
mmzone.h
mnt_namespace.h
mod_devicetable.h
HID: fix hid_device_id for cross compiling
2008-10-29 00:51:25 +01:00
module.h
moduleloader.h
moduleparam.h
mount.h
mpage.h
mqueue.h
mroute.h
mroute6.h
msdos_fs.h
fat: Cleanup FAT attribute stuff
2008-11-06 15:41:21 -08:00
msg.h
msi.h
mtio.h
mutex-debug.h
mutex.h
mv643xx.h
mv643xx_eth.h
mv643xx_i2c.h
n_r3964.h
namei.h
[PATCH vfs-2.6 6/6] vfs: add LOOKUP_RENAME_TARGET intent
2008-10-23 05:13:20 -04:00
nbd.h
ncp.h
ncp_fs.h
ncp_fs_i.h
ncp_fs_sb.h
ncp_mount.h
ncp_no.h
neighbour.h
net.h
netdevice.h
net: delete excess kernel-doc notation
2008-10-30 23:54:35 -07:00
netfilter.h
netfilter_arp.h
netfilter_bridge.h
netfilter_decnet.h
netfilter_ipv4.h
netfilter_ipv6.h
netlink.h
netpoll.h
netrom.h
nfs.h
nfs2.h
nfs3.h
nfs4.h
nfs4_acl.h
nfs4_mount.h
nfs_fs.h
nfs_fs_i.h
nfs_fs_sb.h
nfs_idmap.h
nfs_iostat.h
nfs_mount.h
nfs_page.h
nfs_xdr.h
nfsacl.h
nfsd_idmap.h
nl80211.h
nls.h
nmi.h
node.h
nodemask.h
notifier.h
nsc_gpio.h
nsproxy.h
nubus.h
numa.h
nvram.h
of.h
of_device.h
of_gpio.h
of_i2c.h
of_platform.h
of_spi.h
oom.h
oprofile.h
page-flags.h
page-isolation.h
page_cgroup.h
memcg: fix page_cgroup allocation
2008-10-23 08:55:02 -07:00
pageblock-flags.h
pagemap.h
pagevec.h
param.h
parport.h
parport_pc.h
parser.h
patchkey.h
path.h
pci-acpi.h
pci-aspm.h
pci.h
PCI: annotate return value of pci_ioremap_bar with __iomem
2008-11-03 14:31:18 -08:00
pci_hotplug.h
PCI: Hotplug core: remove 'name'
2008-10-22 16:42:43 -07:00
pci_ids.h
Merge branch 'release' of git://git.kernel.org/pub/scm/linux/kernel/git/lenb/linux-acpi-2.6
2008-10-23 10:20:36 -07:00
pci_regs.h
PCI: add support for function level reset
2008-10-22 16:42:35 -07:00
pcieport_if.h
pda_power.h
percpu.h
percpu_counter.h
personality.h
pfkeyv2.h
pfn.h
pg.h
phantom.h
phonedev.h
phonet.h
Phonet: do not reply to indication reset packets
2008-10-26 23:07:25 -07:00
phy.h
phy_fixed.h
pid.h
pid_namespace.h
pim.h
pipe_fs_i.h
pkt_cls.h
pkt_sched.h
pktcdvd.h
platform_device.h
plist.h
pm.h
pm_qos_params.h
pm_wakeup.h
pmu.h
pnp.h
Merge branch 'linus' into test
2008-10-23 00:11:07 -04:00
poison.h
poll.h
posix-timers.h
posix_acl.h
posix_acl_xattr.h
posix_types.h
power_supply.h
ppdev.h
ppp-comp.h
ppp_channel.h
ppp_defs.h
prctl.h
preempt.h
prefetch.h
prio_heap.h
prio_tree.h
proc_fs.h
proc: remove fs/proc/proc_misc.c
2008-10-23 18:54:05 +04:00
profile.h
profiling: fix up CONFIG_PROC_FS=n build
2008-10-23 08:55:01 -07:00
proportions.h
ptrace.h
pwm.h
pwm_backlight.h
qnx4_fs.h
qnxtypes.h
quicklist.h
quota.h
quotaio_v1.h
quotaio_v2.h
quotaops.h
radeonfb.h
radix-tree.h
raid_class.h
ramfs.h
random.h
ratelimit.h
raw.h
rbtree.h
rcuclassic.h
rculist.h
rcupdate.h
rcupreempt.h
rcupreempt_trace.h
reboot.h
reciprocal_div.h
regset.h
reiserfs_acl.h
reiserfs_fs.h
reiserfs_fs_i.h
reiserfs_fs_sb.h
reiserfs_xattr.h
relay.h
res_counter.h
resource.h
mm: increase the default mlock limit from 32k to 64k
2008-10-30 11:38:45 -07:00
resume-trace.h
rfkill.h
ring_buffer.h
ring-buffer: buffer record on/off switch
2008-11-11 15:02:04 -05:00
rio.h
rio_drv.h
rio_ids.h
rio_regs.h
rmap.h
romfs_fs.h
root_dev.h
rose.h
route.h
rslib.h
rtc-v3020.h
rtc.h
rtmutex.h
rtnetlink.h
rwsem-spinlock.h
rwsem.h
rxrpc.h
sc26198.h
scatterlist.h
scc.h
sched.h
Merge branch 'tracing/function-return-tracer' into tracing/fastboot
2008-11-12 10:17:09 +01:00
screen_info.h
sctp.h
scx200.h
scx200_gpio.h
sdla.h
seccomp.h
securebits.h
security.h
nfsd: fix vm overcommit crash
2008-10-30 11:38:47 -07:00
selection.h
selinux.h
selinux_netlink.h
sem.h
semaphore.h
seq_file.h
seq_file_net.h
seqlock.h
serial.h
serial167.h
serial_8250.h
serial_core.h
serial_pnx8xxx.h
serial_reg.h
serial_sci.h
serialP.h
serio.h
sh_intc.h
shm.h
shmem_fs.h
signal.h
signalfd.h
skbuff.h
slab.h
proc: move /proc/slabinfo boilerplate to mm/slub.c, mm/slab.c
2008-10-23 15:20:06 +04:00
slab_def.h
slob_def.h
slub_def.h
sm501-regs.h
sm501.h
smb.h
smb_fs.h
smb_fs_i.h
smb_fs_sb.h
smb_mount.h
smbno.h
smc91x.h
smc911x.h
smp.h
cpumask: introduce new API, without changing anything
2008-11-06 09:05:33 +01:00
smp_lock.h
snmp.h
socket.h
sockios.h
som.h
sonet.h
sony-laptop.h
sonypi.h
sort.h
sound.h
soundcard.h
spinlock.h
spinlock_api_smp.h
spinlock_api_up.h
spinlock_types.h
spinlock_types_up.h
spinlock_up.h
splice.h
srcu.h
stacktrace.h
stallion.h
start_kernel.h
stat.h
statfs.h
stddef.h
stop_machine.h
string.h
linux/string.h: fix comment typo
2008-11-02 10:15:07 -08:00
string_helpers.h
stringify.h
superhyway.h
suspend.h
suspend_ioctls.h
svga.h
swab.h
swap.h
swapops.h
swiotlb.h
synclink.h
sys.h
syscalls.h
sysctl.h
sysdev.h
sysfs.h
sysrq.h
sysv_fs.h
task_io_accounting.h
task_io_accounting_ops.h
taskstats.h
taskstats_kern.h
tc.h
tcp.h
telephony.h
telephony: trivial: fix up email address
2008-11-11 09:30:23 -08:00
termios.h
textsearch.h
textsearch_fsm.h
tfrc.h
thermal.h
thread_info.h
threads.h
tick.h
tifm.h
time.h
timer.h
Add round_jiffies_up and related routines
2008-11-06 08:42:48 +01:00
timerfd.h
times.h
timex.h
tiocl.h
tipc.h
tipc_config.h
topology.h
sched: fine-tune SD_SIBLING_INIT
2008-11-07 16:09:23 +01:00
toshiba.h
tracehook.h
tracepoint.h
tracepoint: introduce *_noupdate APIs.
2008-11-03 10:28:52 +01:00
transport_class.h
trdevice.h
tsacct_kern.h
tty.h
tty_driver.h
tty_flip.h
tty_ldisc.h
typecheck.h
types.h
uaccess.h
ucb1400.h
udf_fs_i.h
udp.h
uinput.h
uio.h
uio_driver.h
ultrasound.h
un.h
unistd.h
unwind.h
usb.h
usb_usual.h
usbdevice_fs.h
user.h
user_namespace.h
utime.h
uts.h
utsname.h
uwb.h
vermagic.h
veth.h
vfs.h
via.h
video_decoder.h
video_encoder.h
video_output.h
videodev.h
videodev2.h
videotext.h
virtio.h
virtio_9p.h
virtio_balloon.h
virtio_blk.h
virtio_config.h
virtio_console.h
virtio_net.h
virtio_pci.h
virtio_ring.h
virtio_rng.h
vmalloc.h
proc: move /proc/vmallocinfo to mm/vmalloc.c
2008-10-23 15:48:28 +04:00
vmstat.h
proc: move /proc/zoneinfo boilerplate to mm/vmstat.c
2008-10-23 17:35:04 +04:00
vt.h
vt_buffer.h
vt_kern.h
w1-gpio.h
wait.h
wanrouter.h
watchdog.h
wireless.h
wlp.h
wm97xx.h
wm97xx_batt.h
workqueue.h
cpumask: introduce new API, without changing anything
2008-11-06 09:05:33 +01:00
writeback.h
x25.h
xattr.h
xfrm.h
xilinxfb.h
yam.h
zconf.h
zlib.h
zorro.h
zorro_ids.h
zutil.h