linux/arch/x86/include/asm
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
..
bigsmp
es7000 x86: fix APIC_DEBUG with inquire_remote_apic 2008-10-28 16:43:48 +01:00
mach-default x86: fix APIC_DEBUG with inquire_remote_apic 2008-10-28 16:43:48 +01:00
mach-generic
mach-rdc321x
mach-voyager
numaq
summit
uv x86, uv: fix compile error in uv_hub.h 2008-10-30 19:38:46 +01:00
visws
xen
a.out-core.h
a.out.h
acpi.h
agp.h
alternative-asm.h
alternative.h
amd_iommu_types.h
amd_iommu.h
apic.h
apicdef.h
arch_hooks.h
asm.h
atomic_32.h
atomic_64.h
atomic.h
auxvec.h
bios_ebda.h
bitops.h
boot.h
bootparam.h
bug.h
bugs.h
byteorder.h
cache.h
cacheflush.h
calgary.h
calling.h
checksum_32.h
checksum_64.h
checksum.h
cmpxchg_32.h
cmpxchg_64.h
cmpxchg.h
compat.h
cpu.h
cpufeature.h x86: fix AMDC1E and XTOPOLOGY conflict in cpufeature 2008-10-31 11:01:40 +01:00
cputime.h
current.h
debugreg.h
delay.h
desc_defs.h
desc.h
device.h
div64.h
dma-mapping.h
dma.h
dmi.h
ds.h
dwarf2.h
e820.h
edac.h
efi.h
elf.h
emergency-restart.h
errno.h
fb.h
fcntl.h
fixmap_32.h x86: add iomap_atomic*()/iounmap_atomic() on 32-bit using fixmaps 2008-10-31 10:12:38 +01:00
fixmap_64.h
fixmap.h x86: add iomap_atomic*()/iounmap_atomic() on 32-bit using fixmaps 2008-10-31 10:12:38 +01:00
floppy.h
frame.h
ftrace.h ftrace: pass module struct to arch dynamic ftrace functions 2008-11-16 07:36:02 +01:00
futex.h
gart.h
genapic_32.h
genapic_64.h
genapic.h
geode.h
gpio.h
hardirq_32.h
hardirq_64.h
hardirq.h
highmem.h x86: add iomap_atomic*()/iounmap_atomic() on 32-bit using fixmaps 2008-10-31 10:12:38 +01:00
hpet.h
hugetlb.h
hw_irq.h
hypertransport.h
i387.h
i8253.h
i8259.h
ia32_unistd.h
ia32.h
idle.h
intel_arch_perfmon.h
io_32.h
io_64.h
io_apic.h
io.h x86: start annotating early ioremap pointers with __iomem 2008-10-29 08:05:14 +01:00
ioctl.h
ioctls.h
iommu.h
ipcbuf.h
ipi.h
irq_regs_32.h
irq_regs_64.h
irq_regs.h
irq_remapping.h
irq_vectors.h x86: remove VISWS and PARAVIRT around NR_IRQS puzzle 2008-11-06 09:35:34 +01:00
irq.h
irqflags.h
ist.h
k8.h
Kbuild
kdebug.h
kexec.h
kgdb.h
kmap_types.h
kprobes.h
kvm_host.h
kvm_para.h
kvm_x86_emulate.h
kvm.h
ldt.h
lguest_hcall.h
lguest.h
linkage.h
local.h
math_emu.h
mc146818rtc.h
mca_dma.h
mca.h
mce.h
microcode.h
mman.h
mmconfig.h
mmu_context_32.h
mmu_context_64.h
mmu_context.h
mmu.h
mmx.h
mmzone_32.h
mmzone_64.h
mmzone.h
module.h
mpspec_def.h
mpspec.h
msgbuf.h
msidef.h
msr-index.h
msr.h sched: improve sched_clock() performance 2008-11-08 16:48:19 +01:00
mtrr.h
mutex_32.h
mutex_64.h
mutex.h
nmi.h
nops.h
numa_32.h
numa_64.h
numa.h
numaq.h
olpc.h
page_32.h
page_64.h
page.h
param.h
paravirt.h
parport.h
pat.h
pci_32.h
pci_64.h
pci-direct.h
pci.h
pda.h
percpu.h
pgalloc.h
pgtable_32.h
pgtable_64.h
pgtable-2level-defs.h
pgtable-2level.h
pgtable-3level-defs.h
pgtable-3level.h i386/PAE: fix pud_page() 2008-10-30 11:47:50 +01:00
pgtable.h
poll.h
posix_types_32.h
posix_types_64.h
posix_types.h
prctl.h
processor-cyrix.h
processor-flags.h
processor.h
proto.h
ptrace-abi.h
ptrace.h
pvclock-abi.h
pvclock.h
reboot_fixups.h
reboot.h
required-features.h
resource.h
resume-trace.h
rio.h
rtc.h
rwlock.h
rwsem.h
scatterlist.h
seccomp_32.h
seccomp_64.h
seccomp.h
sections.h
segment.h
sembuf.h
serial.h
setup.h
shmbuf.h
shmparam.h
sigcontext32.h
sigcontext.h
siginfo.h
signal.h
smp.h x86/voyager: fix compile breakage caused by dc1e35c6e9 2008-10-31 00:19:33 +01:00
socket.h
sockios.h
sparsemem.h
spinlock_types.h
spinlock.h
srat.h
stacktrace.h
stat.h
statfs.h
string_32.h
string_64.h
string.h
suspend_32.h
suspend_64.h
suspend.h
swiotlb.h
sync_bitops.h
syscall.h
syscalls.h
system_64.h
system.h
tce.h
termbits.h
termios.h
therm_throt.h
thread_info.h tracing, x86: add low level support for ftrace return tracing 2008-11-11 10:29:11 +01:00
time.h
timer.h
timex.h
tlb.h
tlbflush.h
topology.h sched: re-tune balancing 2008-11-05 18:04:38 +01:00
trampoline.h
traps.h
tsc.h sched: improve sched_clock() performance 2008-11-08 16:48:19 +01:00
types.h
uaccess_32.h
uaccess_64.h
uaccess.h
ucontext.h
unaligned.h
unistd_32.h
unistd_64.h
unistd.h
unwind.h
user32.h
user_32.h
user_64.h
user.h
vdso.h
vga.h
vgtod.h
vic.h
vm86.h
vmi_time.h
vmi.h
voyager.h x86, voyager: fix smp_intr_init() compile breakage 2008-11-03 10:52:21 +01:00
vsyscall.h
xcr.h
xor_32.h
xor_64.h
xor.h
xsave.h