kernel-ark/include/asm-i386
Zachary Amsden a600388d28 [PATCH] x86: ptep_clear optimization
Add a new accessor for PTEs, which passes the full hint from the mmu_gather
struct; this allows architectures with hardware pagetables to optimize away
atomic PTE operations when destroying an address space.  Removing the
locked operation should allow better pipelining of memory access in this
loop.  I measured an average savings of 30-35 cycles per zap_pte_range on
the first 500 destructions on Pentium-M, but I believe the optimization
would win more on older processors which still assert the bus lock on xchg
for an exclusive cacheline.

Update: I made some new measurements, and this saves exactly 26 cycles over
ptep_get_and_clear on Pentium M.  On P4, with a PAE kernel, this saves 180
cycles per ptep_get_and_clear, for a whopping 92160 cycles savings for a
full address space destruction.

pte_clear_full is not yet used, but is provided for future optimizations
(in particular, when running inside of a hypervisor that queues page table
updates, the full hint allows us to avoid queueing unnecessary page table
update for an address space in the process of being destroyed.

This is not a huge win, but it does help a bit, and sets the stage for
further hypervisor optimization of the mm layer on all architectures.

Signed-off-by: Zachary Amsden <zach@vmware.com>
Cc: Christoph Lameter <christoph@lameter.com>
Cc: <linux-mm@kvack.org>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
2005-09-05 00:05:48 -07:00
..
mach-bigsmp
mach-default
mach-es7000
mach-generic
mach-numaq
mach-summit
mach-visws [PATCH] Make visws compile again 2005-08-07 10:00:38 -07:00
mach-voyager
8253pit.h
a.out.h
acpi.h
agp.h
apic.h
apicdef.h
arch_hooks.h
atomic.h
bitops.h x86: fix new find_first_bit() 2005-07-29 11:01:22 -04:00
boot.h
bug.h
bugs.h
byteorder.h
cache.h
cacheflush.h
checksum.h [NET]: Fix ipl=>ihl typo in ip_fast_csum 2005-08-29 16:02:48 -07:00
cpu.h
cpufeature.h
cputime.h
current.h
debugreg.h
delay.h
desc.h
div64.h
dma-mapping.h
dma.h
e820.h
elf.h
emergency-restart.h [PATCH] i386: Implement machine_emergency_reboot 2005-07-26 14:35:42 -07:00
errno.h
fcntl.h
fixmap.h
floppy.h
genapic.h
hardirq.h
hdreg.h
highmem.h
hpet.h
hw_irq.h
i387.h
i8253.h
i8259.h
ide.h
io_apic.h
io.h
ioctl.h
ioctls.h
ipc.h
ipcbuf.h
irq.h
ist.h
kdebug.h
kexec.h
kmap_types.h
kprobes.h
ldt.h
linkage.h
local.h
math_emu.h
mc146818rtc.h
mca_dma.h
mca.h
mman.h
mmu_context.h
mmu.h
mmx.h
mmzone.h
module.h
mpspec_def.h
mpspec.h
msgbuf.h
msi.h
msr.h
mtrr.h
namei.h
nmi.h
node.h
numaq.h
numnodes.h
page.h [PATCH] remove hugetlb_clean_stale_pgtable() and fix huge_pte_alloc() 2005-09-05 00:05:46 -07:00
param.h
parport.h
pci-direct.h
pci.h Revert PCIBIOS_MIN_IO changes for 2.6.13 2005-08-14 18:21:30 -07:00
percpu.h
pgalloc.h
pgtable-2level-defs.h
pgtable-2level.h
pgtable-3level-defs.h
pgtable-3level.h
pgtable.h [PATCH] x86: ptep_clear optimization 2005-09-05 00:05:48 -07:00
poll.h
posix_types.h
processor.h [PATCH] i386 / desc_empty macro is incorrect 2005-08-16 12:18:01 -07:00
ptrace.h [PATCH] user_mode_vm() build fix 2005-07-27 16:25:47 -07:00
resource.h
rtc.h
rwlock.h
rwsem.h
scatterlist.h
seccomp.h
sections.h
segment.h
semaphore.h
sembuf.h
serial.h
setup.h
shmbuf.h
shmparam.h
sigcontext.h
siginfo.h
signal.h
smp.h [PATCH] x86_64: i386/x86_64: remove prototypes for not existing functions in smp.h 2005-07-28 21:45:58 -07:00
socket.h [NET]: Introduce SO_{SND,RCV}BUFFORCE socket options 2005-08-29 15:31:35 -07:00
sockios.h
sparsemem.h
spinlock.h
srat.h
stat.h
statfs.h
string.h
suspend.h
system.h
termbits.h
termios.h
thread_info.h
timer.h
timex.h
tlb.h
tlbflush.h
topology.h
types.h [PATCH] sab: consolidate kmem_bufctl_t 2005-09-05 00:05:48 -07:00
uaccess.h
ucontext.h
unaligned.h
unistd.h
user.h
vga.h
vic.h
vm86.h
voyager.h
xor.h