kernel-fxtec-pro1x/arch/x86/kernel
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
..
acpi Merge branch 'x86-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip 2008-10-23 12:38:39 -07:00
cpu x86: build fix 2008-10-31 09:31:38 +01:00
.gitignore arch/x86/kernel/.gitignore: Added vmlinux.lds to .gitignore file because it shouldn't be tracked. 2008-07-10 10:13:51 -07:00
alternative.c x86: improve UP kernel when CPU-hotplug and SMP is enabled 2008-10-13 10:33:46 +02:00
amd_iommu.c Merge branch 'iommu-fixes-2.6.28' of git://git.kernel.org/pub/scm/linux/kernel/git/joro/linux-2.6-iommu into x86/urgent 2008-11-06 15:23:35 +01:00
amd_iommu_init.c amd_iommu: fix nasty bug that caused ILLEGAL_DEVICE_TABLE_ENTRY errors 2008-10-18 14:29:30 +01:00
aperture_64.c x86, debug printouts: IOMMU setup failures should not be KERN_ERR 2008-09-30 10:25:28 +02:00
apic.c x86: apic - unify APIC_DIVISOR 2008-10-16 16:53:14 +02:00
apm_32.c Merge branches 'x86/alternatives', 'x86/cleanups', 'x86/commandline', 'x86/crashdump', 'x86/debug', 'x86/defconfig', 'x86/doc', 'x86/exports', 'x86/fpu', 'x86/gart', 'x86/idle', 'x86/mm', 'x86/mtrr', 'x86/nmi-watchdog', 'x86/oprofile', 'x86/paravirt', 'x86/reboot', 'x86/sparse-fixes', 'x86/tsc', 'x86/urgent' and 'x86/vmalloc' into x86-v28-for-linus-phase1 2008-10-06 18:17:07 +02:00
asm-offsets.c
asm-offsets_32.c x86/paravirt: split sysret and sysexit 2008-07-08 13:13:15 +02:00
asm-offsets_64.c x86: Fix ASM_X86__ header guards 2008-10-22 22:55:23 -07:00
audit_64.c
bios_uv.c x86: Add UV partition call v4 2008-10-16 16:53:13 +02:00
bootflag.c
cpuid.c device create: misc: convert device_create_drvdata to device_create 2008-10-16 09:24:43 -07:00
crash.c
crash_dump_32.c kdump: make elfcorehdr_addr independent of CONFIG_PROC_VMCORE 2008-10-20 08:52:39 -07:00
crash_dump_64.c kdump: make elfcorehdr_addr independent of CONFIG_PROC_VMCORE 2008-10-20 08:52:39 -07:00
doublefault_32.c x86: fix virt_addr_valid() with CONFIG_DEBUG_VIRTUAL=y, v2 2008-10-13 10:33:15 +02:00
ds.c x86: ds.c ptrace.c integer as NULL pointer sparse fixes 2008-09-24 09:57:47 +02:00
dumpstack_32.c x86, kexec: fix hang on i386 when panic occurs while console_sem is held 2008-10-22 13:59:44 +02:00
dumpstack_64.c sysfs: crash debugging 2008-10-16 09:24:41 -07:00
e820.c x86: Clean up late e820 resource allocation 2008-11-01 10:17:22 -07:00
early-quirks.c x86: SB600: skip IRQ0 override if it is not routed to INT2 of IOAPIC 2008-10-22 12:00:10 +02:00
early_printk.c warnings: fix arch/x86/kernel/early_printk.c 2008-10-12 15:19:36 +02:00
efi.c x86: Add UV EFI table entry v4 2008-10-16 16:53:13 +02:00
efi_32.c x86: fix i486 suspend to disk CR4 oops 2008-08-18 08:50:19 +02:00
efi_64.c x86: add flags parameter to reserve_bootmem_generic() 2008-07-08 11:49:49 +02:00
efi_stub_32.S
efi_stub_64.S
entry_32.S tracing/function-return-tracer: call prepare_ftrace_return by registers 2008-11-12 23:15:43 +01:00
entry_64.S ftrace: add quick function trace stop 2008-11-06 07:50:51 +01:00
es7000_32.c x86: check dsdt before find oem table for es7000, v2 2008-10-13 10:21:07 +02:00
ftrace.c ftrace: pass module struct to arch dynamic ftrace functions 2008-11-16 07:36:02 +01:00
genapic_64.c GRU Driver: export is_uv_system(), zap_page_range() & follow_page() 2008-07-30 09:41:48 -07:00
genapic_flat_64.c x86: fix section mismatch warning - apic_physflat 2008-10-22 17:36:27 +02:00
genx2apic_cluster.c x86: fix section mismatch warning - apic_x2apic_cluster 2008-10-22 17:36:29 +02:00
genx2apic_phys.c x86: fix section mismatch warning - apic_x2apic_phys 2008-10-22 17:36:30 +02:00
genx2apic_uv_x.c x86/uv: memory allocation at initialization 2008-10-27 14:17:16 +01:00
geode_32.c
head.c x86: print out EBDA/lowmem address 2008-10-13 10:21:10 +02:00
head32.c
head64.c x86_64: be less annoying on boot, v2 2008-09-29 10:04:53 +02:00
head_32.S x86, cpa: rename PTE attribute macros for kernel direct mapping in early boot 2008-10-10 19:29:11 +02:00
head_64.S x86, cpa: rename PTE attribute macros for kernel direct mapping in early boot 2008-10-10 19:29:11 +02:00
hpet.c x86: HPET: enter hpet_interrupt_handler with interrupts disabled 2008-11-10 17:38:07 +01:00
i386_ksyms_32.c ftrace: rename FTRACE to FUNCTION_TRACER 2008-10-20 18:27:03 +02:00
i387.c x86: xsave: set FP, SSE bits in the xsave header in the user sigcontext 2008-10-07 14:36:08 -07:00
i8237.c
i8253.c
i8259.c x64, x2apic/intr-remap: 8259 specific mask/unmask routines 2008-07-12 08:44:55 +02:00
init_task.c
io_apic.c x86: don't allow nr_irqs > NR_IRQS 2008-11-06 07:23:21 +01:00
io_delay.c x86: add io delay quirk for Presario F700 2008-09-03 16:42:51 -07:00
ioport.c x86: Introducing asm/syscalls.h 2008-07-22 14:35:57 +02:00
ipi.c X86_SMP: ipi.c declare functions before they get used 2008-07-25 11:57:46 +05:30
irq.c genirq: fix off by one and coding style 2008-10-21 15:54:40 +02:00
irq_32.c x86: move ack_bad_irq() to irq.c 2008-10-16 16:53:30 +02:00
irq_64.c x86: move ack_bad_irq() to irq.c 2008-10-16 16:53:30 +02:00
irqinit_32.c genirq: remove artifacts from sparseirq removal 2008-10-16 16:53:15 +02:00
irqinit_64.c genirq: remove irq_to_desc_alloc 2008-10-16 16:53:15 +02:00
k8.c x86, gart: fix gart detection for Fam11h CPUs 2008-10-28 17:10:27 +01:00
kdebugfs.c arch/x86/kernel/kdebugfs.c: introduce missing kfree 2008-09-10 14:03:49 +02:00
kgdb.c kgdb, x86: Avoid invoking kgdb_nmicallback twice per NMI 2008-10-06 13:50:59 -05:00
kprobes.c kprobes: improve kretprobe scalability with hashed locking 2008-07-25 10:53:30 -07:00
kvm.c x86, paravirt_ops: use unsigned long instead of u32 for alloc_p*() pfn args 2008-08-22 05:34:44 +02:00
kvmclock.c x86: KVM guest: use paravirt function to calculate cpu khz 2008-10-15 10:15:17 +02:00
ldt.c Merge branch 'linus' into x86/xen 2008-10-12 12:37:32 +02:00
machine_kexec_32.c x86, kdump: fix invalid access on i386 sparsemem 2008-10-28 16:48:24 +01:00
machine_kexec_64.c kexec jump 2008-07-26 12:00:04 -07:00
Makefile tracing, x86: add low level support for ftrace return tracing 2008-11-11 10:29:11 +01:00
mca_32.c
mfgpt_32.c x86, geode-mfgpt: check IRQ before using MFGPT as clocksource 2008-08-15 17:12:32 +02:00
microcode_amd.c x86: AMD microcode patch loader author update 2008-10-28 16:41:28 +01:00
microcode_core.c x86: microcode patch loader author update 2008-10-28 16:41:16 +01:00
microcode_intel.c x86: moved microcode.c to microcode_intel.c 2008-09-23 12:21:42 +02:00
mmconf-fam10h_64.c x86: mmconf: fix section mismatch warning 2008-08-18 07:49:06 +02:00
module_32.c
module_64.c PAGE_ALIGN(): correctly handle 64-bit values on 32-bit architectures 2008-07-24 10:47:21 -07:00
mpparse.c Merge branch 'x86/apic' into x86-v28-for-linus-phase4-B 2008-10-11 20:17:36 +02:00
msr.c device create: misc: convert device_create_drvdata to device_create 2008-10-16 09:24:43 -07:00
nmi.c x86, NMI watchdog: setup before enabling NMI watchdog 2008-09-22 19:48:19 +02:00
numaq_32.c Merge branch 'x86/apic' into x86-v28-for-linus-phase4-B 2008-10-11 20:17:36 +02:00
olpc.c x86, olpc: fix endian bug in openfirmware workaround 2008-09-24 10:29:04 +02:00
paravirt-spinlocks.c x86: export pv_lock_ops non-GPL 2008-08-22 15:43:17 +02:00
paravirt.c Merge branch 'linus' into x86/xen 2008-10-12 12:37:32 +02:00
paravirt_patch_32.c x86: coding style fixes to arch/x86/kernel/paravirt_patch_32.c 2008-08-15 16:53:25 +02:00
paravirt_patch_64.c x86/paravirt: add sysret/sysexit pvops for returning to 32-bit compatibility userspace 2008-07-08 13:15:52 +02:00
pci-calgary_64.c x86: convert Calgary IOMMU driver to generic iommu_num_pages function 2008-10-16 11:21:33 -07:00
pci-dma.c x86/PCI: build failure at x86/kernel/pci-dma.c with !CONFIG_PCI 2008-10-24 11:09:43 -07:00
pci-gart_64.c x86, gart: fix gart detection for Fam11h CPUs 2008-10-28 17:10:27 +01:00
pci-nommu.c x86: export pci-nommu's alloc_coherent 2008-09-25 11:02:25 +02:00
pci-swiotlb_64.c x86: restore the old swiotlb alloc_coherent behavior 2008-10-23 21:54:40 +02:00
pcspeaker.c x86: use platform_device_register_simple() 2008-09-22 12:58:36 +02:00
pmtimer_64.c
probe_roms_32.c x86: seperate probe_roms into another file 2008-07-08 12:50:05 +02:00
process.c Merge branch 'x86/unify-cpu-detect' into x86-v28-for-linus-phase4-D 2008-10-11 20:23:20 +02:00
process_32.c x86: __show_registers() and __show_regs() API unification 2008-10-13 10:33:04 +02:00
process_64.c Merge branch 'linus' into test 2008-10-23 00:11:07 -04:00
ptrace.c Merge branches 'x86/xen', 'x86/build', 'x86/microcode', 'x86/mm-debug-v2', 'x86/memory-corruption-check', 'x86/early-printk', 'x86/xsave', 'x86/ptrace-v2', 'x86/quirks', 'x86/setup', 'x86/spinlocks' and 'x86/signal' into x86/core-v2 2008-10-12 15:50:02 +02:00
pvclock.c x86: pvclock: fix shadowed variable warning 2008-10-15 14:25:14 +02:00
quirks.c x86: remove irqbalance in kernel for 32 bit 2008-10-16 16:52:52 +02:00
reboot.c Revert "x86: default to reboot via ACPI" 2008-11-06 16:05:06 +01:00
reboot_fixups_32.c
relocate_kernel_32.S kexec jump: check code size in control page 2008-08-15 08:35:42 -07:00
relocate_kernel_64.S
rtc.c rtc: use bcd2bin/bin2bcd 2008-10-20 08:52:41 -07:00
scx200_32.c
setup.c Merge branch 'genirq-v28-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip 2008-10-20 13:23:01 -07:00
setup_percpu.c x86: remove redundant KERN_DEBUG on pr_debug 2008-10-22 16:56:22 +02:00
sigframe.h Merge branch 'x86/unify-cpu-detect' into x86-v28-for-linus-phase4-D 2008-10-11 20:23:20 +02:00
signal_32.c Merge branch 'x86/unify-cpu-detect' into x86-v28-for-linus-phase4-D 2008-10-11 20:23:20 +02:00
signal_64.c Merge branch 'x86/unify-cpu-detect' into x86-v28-for-linus-phase4-D 2008-10-11 20:23:20 +02:00
smp.c x86: add cpu hotplug hooks into smp_ops 2008-08-25 10:59:18 +02:00
smpboot.c x86: do_boot_cpu - check if we have ESR register 2008-10-22 16:56:16 +02:00
smpcommon.c x86: change init_gdt to update the gdt via write_gdt, rather than a direct write. 2008-08-15 19:16:05 +02:00
stacktrace.c stacktrace: fix modular build, export print_stack_trace and save_stack_trace 2008-06-30 09:20:55 +02:00
step.c x86 ptrace: user-sets-TF nits 2008-07-16 12:15:17 -07:00
summit_32.c x86: mach_summit to summit 2008-07-26 16:31:35 +02:00
sys_i386_32.c x86: Introducing asm/syscalls.h 2008-07-22 14:35:57 +02:00
sys_x86_64.c Merge branches 'x86/alternatives', 'x86/cleanups', 'x86/commandline', 'x86/crashdump', 'x86/debug', 'x86/defconfig', 'x86/doc', 'x86/exports', 'x86/fpu', 'x86/gart', 'x86/idle', 'x86/mm', 'x86/mtrr', 'x86/nmi-watchdog', 'x86/oprofile', 'x86/paravirt', 'x86/reboot', 'x86/sparse-fixes', 'x86/tsc', 'x86/urgent' and 'x86/vmalloc' into x86-v28-for-linus-phase1 2008-10-06 18:17:07 +02:00
syscall_64.c x86: Fix ASM_X86__ header guards 2008-10-22 22:55:23 -07:00
syscall_table_32.S flag parameters add-on: remove epoll_create size param 2008-07-24 10:47:29 -07:00
tce_64.c
test_nx.c
test_rodata.c
time_32.c x86: wrap MCA_bus test around an ifdef 2008-10-13 10:21:47 +02:00
time_64.c x86: move vgetcpu mode probing to cpu detection 2008-10-13 10:21:49 +02:00
tlb_32.c x86: add smp_mb() before sending INVALIDATE_TLB_VECTOR 2008-11-06 09:41:49 +01:00
tlb_64.c x86: add smp_mb() before sending INVALIDATE_TLB_VECTOR 2008-11-06 09:41:49 +01:00
tlb_uv.c x86/tlb_uv: remove strange mc146818rtc include 2008-10-22 16:56:23 +02:00
tls.c x86: Introducing asm/syscalls.h 2008-07-22 14:35:57 +02:00
tls.h
topology.c
trampoline.c
trampoline_32.S
trampoline_64.S
traps.c MCE: Don't run 32bit machine checks with interrupts on 2008-10-22 13:19:01 +02:00
tsc.c sched: optimize sched_clock() a bit 2008-11-08 17:05:38 +01:00
tsc_sync.c x86: use WARN() in arch/x86/kernel 2008-08-21 10:01:52 +02:00
uv_irq.c x86, UV: add uv_setup_irq() and uv_teardown_irq() functions, v3, fix 2008-10-16 16:53:13 +02:00
uv_sysfs.c x86: Add sysfs entries for UV v4 2008-10-16 16:53:13 +02:00
verify_cpu_64.S
visws_quirks.c genirq: revert dynarray 2008-10-16 16:53:15 +02:00
vm86_32.c x86: Introducing asm/syscalls.h 2008-07-22 14:35:57 +02:00
vmi_32.c Merge branch 'x86/apic' into x86-v28-for-linus-phase4-B 2008-10-11 20:17:36 +02:00
vmiclock_32.c x86: VMI, initialize IRQ vector 2008-10-16 16:52:59 +02:00
vmlinux.lds.S
vmlinux_32.lds.S genirq: revert dynarray 2008-10-16 16:53:15 +02:00
vmlinux_64.lds.S genirq: remove artifacts from sparseirq removal 2008-10-16 16:53:15 +02:00
vsmp_64.c x86: two trivial sparse annotations 2008-10-29 08:02:28 +01:00
vsyscall_64.c trace: rename unlikely profiler to branch profiler 2008-11-12 22:27:58 +01:00
x8664_ksyms_64.c ftrace: rename FTRACE to FUNCTION_TRACER 2008-10-20 18:27:03 +02:00
xsave.c x86: make variables static 2008-10-22 07:31:28 +02:00