1
linux/include/asm-x86_64
Anil S Keshavamurthy 1bd858a507 [PATCH] Notify page fault call chain for x86_64
Currently in the do_page_fault() code path, we call notify_die(DIE_PAGE_FAULT,
...) to notify the page fault.  Since notify_die() is highly overloaded, this
page fault notification is currently being sent to all the components
registered with register_die_notification() which uses the same die_chain to
loop for all the registered components which is unnecessary.

In order to optimize the do_page_fault() code path, this critical page fault
notification is now moved to different call chain and the test results showed
great improvements.

And the kprobes which is interested in this notifications, now registers onto
this new call chain only when it need to, i.e Kprobes now registers for page
fault notification only when their are an active probes and unregisters from
this page fault notification when no probes are active.

I have incorporated all the feedback given by Ananth and Keith and everyone,
and thanks for all the review feedback.

This patch:

Overloading of page fault notification with the notify_die() has performance
issues(since the only interested components for page fault is kprobes and/or
kdb) and hence this patch introduces the new notifier call chain exclusively
for page fault notifications their by avoiding notifying unnecessary
components in the do_page_fault() code path.

Signed-off-by: Anil S Keshavamurthy <anil.s.keshavamurthy@intel.com>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
2006-06-26 09:58:22 -07:00
..
8253pit.h
a.out.h [PATCH] x86_64: TASK_SIZE fixes for compatibility mode processes 2005-06-21 18:46:12 -07:00
acpi.h Revert "[PATCH] x86_64: Only do the clustered systems have unsynchronized TSC assumption on IBM systems" 2006-02-27 20:41:56 -08:00
agp.h [PATCH] AGP fix for Xen VMM 2005-06-07 12:35:43 -07:00
apic.h Don't include linux/config.h from anywhere else in include/ 2006-04-26 12:56:16 +01:00
apicdef.h x86_64: Remove stale lapic definition from apicdef.h 2006-04-01 22:50:03 -05:00
atomic.h Don't include linux/config.h from anywhere else in include/ 2006-04-26 12:56:16 +01:00
auxvec.h [PATCH] auxiliary vector cleanups 2005-09-07 16:57:21 -07:00
bitops.h Don't include linux/config.h from anywhere else in include/ 2006-04-26 12:56:16 +01:00
boot.h
bootsetup.h [PATCH] Increase number of e820 entries hard limit from 32 to 128 2005-05-01 08:58:51 -07:00
bug.h [PATCH] x86-64: reduce x86-64 bug frame by 4 bytes 2005-09-12 10:50:58 -07:00
bugs.h Don't include linux/config.h from anywhere else in include/ 2006-04-26 12:56:16 +01:00
byteorder.h
cache.h Don't include linux/config.h from anywhere else in include/ 2006-04-26 12:56:16 +01:00
cacheflush.h [PATCH] x86/x86_64: mark rodata section read-only: x86-64 support 2006-01-06 08:33:36 -08:00
calling.h Don't include linux/config.h from anywhere else in include/ 2006-04-26 12:56:16 +01:00
checksum.h [NET]: Fix ipl=>ihl typo in ip_fast_csum 2005-08-29 16:02:48 -07:00
compat.h [PATCH] amd64: task_pt_regs() 2006-01-12 09:08:51 -08:00
cpu.h
cpufeature.h [PATCH] i386/x86-64: Fix x87 information leak between processes 2006-04-20 07:58:11 -07:00
cputime.h
current.h kbuild: alpha,x86_64 use generic asm-offsets.h support 2005-09-09 21:28:48 +02:00
debugreg.h
delay.h
desc.h [PATCH] x86_64: Align and pad x86_64 GDT on page boundary 2006-01-11 19:04:53 -08:00
div64.h
dma-mapping.h Don't include linux/config.h from anywhere else in include/ 2006-04-26 12:56:16 +01:00
dma.h Don't include linux/config.h from anywhere else in include/ 2006-04-26 12:56:16 +01:00
dmi.h [PATCH] x86_64: Implement early DMI scanning 2006-03-25 09:10:55 -08:00
dwarf2.h Don't include linux/config.h from anywhere else in include/ 2006-04-26 12:56:16 +01:00
e820.h [PATCH] x86_64: Avoid EBDA area in early boot allocator 2006-05-08 09:34:56 -07:00
edac.h [PATCH] EDAC: core EDAC support code 2006-01-18 19:20:31 -08:00
elf.h [PATCH] x86_64: Fix stack/mmap randomization for compat tasks 2006-05-30 20:31:05 -07:00
emergency-restart.h [PATCH] x86_64: Implemenent machine_emergency_restart 2005-07-26 14:35:42 -07:00
errno.h
fcntl.h [PATCH] Clean up struct flock definitions 2005-09-07 16:57:38 -07:00
fixmap.h Don't include linux/config.h from anywhere else in include/ 2006-04-26 12:56:16 +01:00
floppy.h [PATCH] random: remove SA_SAMPLE_RANDOM from floppy driver 2006-06-25 10:01:00 -07:00
fpu32.h
futex.h [PATCH] lightweight robust futexes updates 2006-03-27 08:44:49 -08:00
gart-mapping.h [PATCH] x86_64: Use function pointers to call DMA mapping functions 2006-01-11 19:04:55 -08:00
genapic.h
hardirq.h Don't include linux/config.h from anywhere else in include/ 2006-04-26 12:56:16 +01:00
hpet.h [PATCH] x86_64: Fix drift with HPET timer enabled 2006-04-09 11:53:53 -07:00
hw_irq.h Don't include linux/config.h from anywhere else in include/ 2006-04-26 12:56:16 +01:00
i387.h [PATCH] i386/x86-64: Fix x87 information leak between processes 2006-04-20 07:58:11 -07:00
ia32_unistd.h [PATCH] x86_64: Eliminate IA32_NR_syscalls define 2006-04-09 11:53:53 -07:00
ia32.h Don't include linux/config.h from anywhere else in include/ 2006-04-26 12:56:16 +01:00
ide.h
idle.h [PATCH] x86_64: Add idle notifiers 2006-01-11 19:04:55 -08:00
io_apic.h Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6 2006-05-24 09:22:21 +01:00
io.h Don't include linux/config.h from anywhere else in include/ 2006-04-26 12:56:16 +01:00
ioctl.h [PATCH] Generic ioctl.h 2006-01-10 08:01:34 -08:00
ioctls.h
ipcbuf.h
ipi.h [PATCH] x86_64: Remove useless KDB vector 2006-01-11 19:05:00 -08:00
irq.h [PATCH] x86_64: Increase NR_IRQ_VECTORS to 32 * NR_CPUS 2006-01-16 11:27:59 -08:00
kdebug.h [PATCH] Notify page fault call chain for x86_64 2006-06-26 09:58:22 -07:00
kexec.h [PATCH] Compilation of kexec/kdump broken 2006-02-03 08:32:09 -08:00
kmap_types.h
kprobes.h [PATCH] kprobes: fix build breakage 2006-01-10 08:01:40 -08:00
ldt.h
linkage.h
local.h [PATCH] make local_t signed 2006-03-31 12:18:55 -08:00
mach_apic.h
mc146818rtc.h
mce.h [PATCH] x86_64: Don't run NMI watchdog during machine checks 2006-04-09 11:53:52 -07:00
mman.h [PATCH] add asm-generic/mman.h 2006-02-15 15:32:22 -08:00
mmsegment.h
mmu_context.h Don't include linux/config.h from anywhere else in include/ 2006-04-26 12:56:16 +01:00
mmu.h
mmx.h
mmzone.h [PATCH] Delete unused definitions of kvaddr_to_nid 2006-06-23 07:42:52 -07:00
module.h
mpspec.h Pull pnpacpi into acpica branch 2006-01-07 03:50:18 -05:00
msgbuf.h
msi.h [PATCH] PCI: cleanup unused variable about msi driver 2006-06-21 12:00:00 -07:00
msr.h [PATCH] Fix x86_64/msr.h interface to agree with i386/msr.h 2005-11-20 11:52:59 -08:00
mtrr.h Move inclusion of <linux/compat.h> out of user scope in asm-x86_64/mtrr.h 2006-05-21 22:51:13 +01:00
mutex.h Fix mutex_trylock() copy-and-paste bug (x86, x86-64, generic mutex-dec.h) 2006-01-11 15:50:47 -08:00
namei.h
nmi.h [PATCH] x86_64: Collected NMI watchdog fixes. 2005-05-17 07:59:16 -07:00
node.h
numa.h [PATCH] Unify pxm_to_node() and node_to_pxm() 2006-06-23 07:42:48 -07:00
page.h Exclude asm-generic/{page,memory_model}.h from user bits of i386/x86_64 page.h 2006-04-27 15:48:08 +01:00
param.h Don't include linux/config.h from anywhere else in include/ 2006-04-26 12:56:16 +01:00
parport.h
pci-direct.h
pci.h Don't include linux/config.h from anywhere else in include/ 2006-04-26 12:56:16 +01:00
pda.h [PATCH] x86_64: Reorder one field of the PDA to reduce padding 2006-03-25 09:10:56 -08:00
percpu.h [PATCH] Define __raw_get_cpu_var and use it 2006-06-25 10:01:01 -07:00
pgalloc.h [PATCH] x86_64: actively synchronize vmalloc area when registering certain callbacks 2006-03-25 09:10:53 -08:00
pgtable.h [PATCH] x86_64: actively synchronize vmalloc area when registering certain callbacks 2006-03-25 09:10:53 -08:00
poll.h [PATCH] POLLRDHUP/EPOLLRDHUP handling for half-closed devices notifications 2006-03-25 08:22:56 -08:00
posix_types.h
prctl.h
processor.h Don't include linux/config.h from anywhere else in include/ 2006-04-26 12:56:16 +01:00
proto.h [PATCH] x86_64: Removed duplicated declaration of force_iommu 2006-03-25 09:14:39 -08:00
ptrace.h [PATCH] xen: x86: Rename usermode macro 2005-06-23 09:45:14 -07:00
resource.h
rtc.h
rwlock.h [PATCH] Fix typo in x86_64 __build_write_lock_const assembly 2005-12-24 12:30:22 -08:00
scatterlist.h
seccomp.h
sections.h
segment.h [PATCH] x86_64: Remove unused segments 2006-01-11 19:05:01 -08:00
semaphore.h [PATCH] semaphore: Remove __MUTEX_INITIALIZER() 2005-10-30 17:37:27 -08:00
sembuf.h
serial.h Don't include linux/config.h from anywhere else in include/ 2006-04-26 12:56:16 +01:00
setup.h
shmbuf.h
shmparam.h
sigcontext32.h
sigcontext.h
siginfo.h [PATCH] consolidate SIGEV_PAD_SIZE 2005-05-01 08:59:08 -07:00
signal.h [PATCH] Replace extern inline with static inline in asm-x86_64/* 2005-09-12 10:50:56 -07:00
smp.h Don't include linux/config.h from anywhere else in include/ 2006-04-26 12:56:16 +01:00
socket.h [NET]: Introduce SO_{SND,RCV}BUFFORCE socket options 2005-08-29 15:31:35 -07:00
sockios.h
sparsemem.h [PATCH] add x86-64 specific support for sparsemem 2005-06-23 09:45:07 -07:00
spinlock_types.h [PATCH] spinlock consolidation 2005-09-10 10:06:21 -07:00
spinlock.h Don't include linux/config.h from anywhere else in include/ 2006-04-26 12:56:16 +01:00
stat.h
statfs.h
string.h [PATCH] x86_64: Don't define string functions to builtin 2006-03-25 09:10:53 -08:00
suspend.h [PATCH] x86_64: eliminate set_debug() 2006-03-25 09:10:52 -08:00
swiotlb.h Don't include linux/config.h from anywhere else in include/ 2006-04-26 12:56:16 +01:00
system.h Don't include linux/config.h from anywhere else in include/ 2006-04-26 12:56:16 +01:00
termbits.h
termios.h
thread_info.h [PATCH] death of get_thread_info/put_thread_info 2006-01-12 09:08:59 -08:00
timex.h [PATCH] x86_64: fix sync before RDTSC on Intel cpus 2006-04-11 06:38:57 -07:00
tlb.h
tlbflush.h Don't include linux/config.h from anywhere else in include/ 2006-04-26 12:56:16 +01:00
topology.h Don't include linux/config.h from anywhere else in include/ 2006-04-26 12:56:16 +01:00
types.h [PATCH] sab: consolidate kmem_bufctl_t 2005-09-05 00:05:48 -07:00
uaccess.h Don't include linux/config.h from anywhere else in include/ 2006-04-26 12:56:16 +01:00
ucontext.h
unaligned.h
unistd.h [PATCH] sys_move_pages: x86_64 support 2006-06-23 07:42:53 -07:00
user32.h
user.h
vga.h [PATCH] vgacon: make VGA_MAP_MEM take size, remove extra use 2006-06-22 15:05:58 -07:00
vsyscall32.h
vsyscall.h [PATCH] x86_64: sparse warning cleanups 2006-01-11 19:05:02 -08:00
xor.h