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
[PATCH] Do not enforce unique IO_APIC_ID check for xAPIC systems (i386)
2005-06-23 09:45:09 -07:00
mach-default
[PATCH] x86: i8253/i8259A lock cleanup
2005-06-30 08:45:10 -07:00
mach-es7000
[PATCH] Do not enforce unique IO_APIC_ID check for xAPIC systems (i386)
2005-06-23 09:45:09 -07:00
mach-generic
[PATCH] Do not enforce unique IO_APIC_ID check for xAPIC systems (i386)
2005-06-23 09:45:09 -07:00
mach-numaq
[PATCH] Do not enforce unique IO_APIC_ID check for xAPIC systems (i386)
2005-06-23 09:45:09 -07:00
mach-summit
[PATCH] Do not enforce unique IO_APIC_ID check for xAPIC systems (i386)
2005-06-23 09:45:09 -07:00
mach-visws
[PATCH] Make visws compile again
2005-08-07 10:00:38 -07:00
mach-voyager
Linux-2.6.12-rc2
2005-04-16 15:20:36 -07:00
8253pit.h
Linux-2.6.12-rc2
2005-04-16 15:20:36 -07:00
a.out.h
Linux-2.6.12-rc2
2005-04-16 15:20:36 -07:00
acpi.h
[ACPI] enable C2 and C3 idle power states on SMP
2005-07-12 00:14:36 -04:00
agp.h
[PATCH] AGP fix for Xen VMM
2005-06-07 12:35:43 -07:00
apic.h
[PATCH] kexec: x86: resture apic virtual wire mode on shutdown
2005-06-25 16:24:47 -07:00
apicdef.h
[ACPI] merge acpi-2.6.12 branch into latest Linux 2.6.13-rc...
2005-07-12 17:21:56 -04:00
arch_hooks.h
Linux-2.6.12-rc2
2005-04-16 15:20:36 -07:00
atomic.h
Linux-2.6.12-rc2
2005-04-16 15:20:36 -07:00
bitops.h
x86: fix new find_first_bit()
2005-07-29 11:01:22 -04:00
boot.h
Linux-2.6.12-rc2
2005-04-16 15:20:36 -07:00
bug.h
[PATCH] remove all kernel BUGs
2005-05-01 08:59:01 -07:00
bugs.h
Linux-2.6.12-rc2
2005-04-16 15:20:36 -07:00
byteorder.h
Linux-2.6.12-rc2
2005-04-16 15:20:36 -07:00
cache.h
Linux-2.6.12-rc2
2005-04-16 15:20:36 -07:00
cacheflush.h
Linux-2.6.12-rc2
2005-04-16 15:20:36 -07:00
checksum.h
[NET]: Fix ipl=>ihl typo in ip_fast_csum
2005-08-29 16:02:48 -07:00
cpu.h
[PATCH] i386 CPU hotplug
2005-06-25 16:24:29 -07:00
cpufeature.h
[PATCH] CPUID bug and inconsistency fix
2005-05-01 08:58:49 -07:00
cputime.h
Linux-2.6.12-rc2
2005-04-16 15:20:36 -07:00
current.h
Linux-2.6.12-rc2
2005-04-16 15:20:36 -07:00
debugreg.h
Linux-2.6.12-rc2
2005-04-16 15:20:36 -07:00
delay.h
Linux-2.6.12-rc2
2005-04-16 15:20:36 -07:00
desc.h
Linux-2.6.12-rc2
2005-04-16 15:20:36 -07:00
div64.h
Linux-2.6.12-rc2
2005-04-16 15:20:36 -07:00
dma-mapping.h
Linux-2.6.12-rc2
2005-04-16 15:20:36 -07:00
dma.h
Linux-2.6.12-rc2
2005-04-16 15:20:36 -07:00
e820.h
[PATCH] Increase number of e820 entries hard limit from 32 to 128
2005-05-01 08:58:51 -07:00
elf.h
Linux-2.6.12-rc2
2005-04-16 15:20:36 -07:00
emergency-restart.h
[PATCH] i386: Implement machine_emergency_reboot
2005-07-26 14:35:42 -07:00
errno.h
Linux-2.6.12-rc2
2005-04-16 15:20:36 -07:00
fcntl.h
Linux-2.6.12-rc2
2005-04-16 15:20:36 -07:00
fixmap.h
Linux-2.6.12-rc2
2005-04-16 15:20:36 -07:00
floppy.h
[PATCH] make some things static
2005-05-05 16:36:47 -07:00
genapic.h
[PATCH] Do not enforce unique IO_APIC_ID check for xAPIC systems (i386)
2005-06-23 09:45:09 -07:00
hardirq.h
Linux-2.6.12-rc2
2005-04-16 15:20:36 -07:00
hdreg.h
Linux-2.6.12-rc2
2005-04-16 15:20:36 -07:00
highmem.h
[PATCH] kdump: Routines for copying dump pages
2005-06-25 16:24:53 -07:00
hpet.h
[PATCH] i386: fix hpet for systems that don't support legacy replacement
2005-05-01 08:58:50 -07:00
hw_irq.h
Linux-2.6.12-rc2
2005-04-16 15:20:36 -07:00
i387.h
x86: use alternative instructions for fnsave/fxsave too
2005-07-22 18:19:20 -04:00
i8253.h
[PATCH] x86: i8253/i8259A lock cleanup
2005-06-30 08:45:10 -07:00
i8259.h
Linux-2.6.12-rc2
2005-04-16 15:20:36 -07:00
ide.h
[PATCH] ide: sensible probing for PCI systems
2005-06-27 17:36:41 -07:00
io.h
Linux-2.6.12-rc2
2005-04-16 15:20:36 -07:00
io_apic.h
Linux-2.6.12-rc2
2005-04-16 15:20:36 -07:00
ioctl.h
Linux-2.6.12-rc2
2005-04-16 15:20:36 -07:00
ioctls.h
Linux-2.6.12-rc2
2005-04-16 15:20:36 -07:00
ipc.h
Linux-2.6.12-rc2
2005-04-16 15:20:36 -07:00
ipcbuf.h
Linux-2.6.12-rc2
2005-04-16 15:20:36 -07:00
irq.h
[PATCH] cpu state clean after hot remove
2005-06-25 16:24:30 -07:00
ist.h
Linux-2.6.12-rc2
2005-04-16 15:20:36 -07:00
kdebug.h
[PATCH] RCU: clean up a few remaining synchronize_kernel() calls
2005-06-25 16:24:38 -07:00
kexec.h
[PATCH] Kdump: Export crash notes section address through sysfs
2005-06-25 16:24:51 -07:00
kmap_types.h
Linux-2.6.12-rc2
2005-04-16 15:20:36 -07:00
kprobes.h
[PATCH] kprobes: function-return probes
2005-06-23 09:45:21 -07:00
ldt.h
Linux-2.6.12-rc2
2005-04-16 15:20:36 -07:00
linkage.h
[PATCH] i386: fix prevent_tail_call
2005-05-26 16:16:16 -07:00
local.h
Linux-2.6.12-rc2
2005-04-16 15:20:36 -07:00
math_emu.h
Linux-2.6.12-rc2
2005-04-16 15:20:36 -07:00
mc146818rtc.h
Linux-2.6.12-rc2
2005-04-16 15:20:36 -07:00
mca.h
Linux-2.6.12-rc2
2005-04-16 15:20:36 -07:00
mca_dma.h
Linux-2.6.12-rc2
2005-04-16 15:20:36 -07:00
mman.h
Linux-2.6.12-rc2
2005-04-16 15:20:36 -07:00
mmu.h
Linux-2.6.12-rc2
2005-04-16 15:20:36 -07:00
mmu_context.h
Linux-2.6.12-rc2
2005-04-16 15:20:36 -07:00
mmx.h
Linux-2.6.12-rc2
2005-04-16 15:20:36 -07:00
mmzone.h
[PATCH] Fix up non-NUMA breakage in mmzone.h
2005-07-07 18:23:42 -07:00
module.h
[PATCH] x86: geode support fixes
2005-05-05 16:36:49 -07:00
mpspec.h
Linux-2.6.12-rc2
2005-04-16 15:20:36 -07:00
mpspec_def.h
Linux-2.6.12-rc2
2005-04-16 15:20:36 -07:00
msgbuf.h
Linux-2.6.12-rc2
2005-04-16 15:20:36 -07:00
msi.h
Linux-2.6.12-rc2
2005-04-16 15:20:36 -07:00
msr.h
Linux-2.6.12-rc2
2005-04-16 15:20:36 -07:00
mtrr.h
Linux-2.6.12-rc2
2005-04-16 15:20:36 -07:00
namei.h
Linux-2.6.12-rc2
2005-04-16 15:20:36 -07:00
nmi.h
Linux-2.6.12-rc2
2005-04-16 15:20:36 -07:00
node.h
Linux-2.6.12-rc2
2005-04-16 15:20:36 -07:00
numaq.h
Linux-2.6.12-rc2
2005-04-16 15:20:36 -07:00
numnodes.h
Linux-2.6.12-rc2
2005-04-16 15:20:36 -07:00
page.h
[PATCH] remove hugetlb_clean_stale_pgtable() and fix huge_pte_alloc()
2005-09-05 00:05:46 -07:00
param.h
[PATCH] i386: Selectable Frequency of the Timer Interrupt
2005-06-23 09:45:10 -07:00
parport.h
Linux-2.6.12-rc2
2005-04-16 15:20:36 -07:00
pci-direct.h
Linux-2.6.12-rc2
2005-04-16 15:20:36 -07:00
pci.h
Revert PCIBIOS_MIN_IO changes for 2.6.13
2005-08-14 18:21:30 -07:00
percpu.h
Linux-2.6.12-rc2
2005-04-16 15:20:36 -07:00
pgalloc.h
Linux-2.6.12-rc2
2005-04-16 15:20:36 -07:00
pgtable-2level-defs.h
Linux-2.6.12-rc2
2005-04-16 15:20:36 -07:00
pgtable-2level.h
Linux-2.6.12-rc2
2005-04-16 15:20:36 -07:00
pgtable-3level-defs.h
Linux-2.6.12-rc2
2005-04-16 15:20:36 -07:00
pgtable-3level.h
Linux-2.6.12-rc2
2005-04-16 15:20:36 -07:00
pgtable.h
[PATCH] x86: ptep_clear optimization
2005-09-05 00:05:48 -07:00
poll.h
Linux-2.6.12-rc2
2005-04-16 15:20:36 -07:00
posix_types.h
Linux-2.6.12-rc2
2005-04-16 15:20:36 -07:00
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
Linux-2.6.12-rc2
2005-04-16 15:20:36 -07:00
rtc.h
Linux-2.6.12-rc2
2005-04-16 15:20:36 -07:00
rwlock.h
Linux-2.6.12-rc2
2005-04-16 15:20:36 -07:00
rwsem.h
Linux-2.6.12-rc2
2005-04-16 15:20:36 -07:00
scatterlist.h
Linux-2.6.12-rc2
2005-04-16 15:20:36 -07:00
seccomp.h
Linux-2.6.12-rc2
2005-04-16 15:20:36 -07:00
sections.h
Linux-2.6.12-rc2
2005-04-16 15:20:36 -07:00
segment.h
Linux-2.6.12-rc2
2005-04-16 15:20:36 -07:00
semaphore.h
Linux-2.6.12-rc2
2005-04-16 15:20:36 -07:00
sembuf.h
Linux-2.6.12-rc2
2005-04-16 15:20:36 -07:00
serial.h
[PATCH] Serial: Split 8250 port table (part 2)
2005-06-29 18:45:19 +01:00
setup.h
[PATCH] Increase number of e820 entries hard limit from 32 to 128
2005-05-01 08:58:51 -07:00
shmbuf.h
Linux-2.6.12-rc2
2005-04-16 15:20:36 -07:00
shmparam.h
Linux-2.6.12-rc2
2005-04-16 15:20:36 -07:00
sigcontext.h
Linux-2.6.12-rc2
2005-04-16 15:20:36 -07:00
siginfo.h
Linux-2.6.12-rc2
2005-04-16 15:20:36 -07:00
signal.h
[PATCH] asm/signal.h unification
2005-05-04 07:33:15 -07:00
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
Linux-2.6.12-rc2
2005-04-16 15:20:36 -07:00
sparsemem.h
[PATCH] sparsemem memory model for i386
2005-06-23 09:45:05 -07:00
spinlock.h
Linux-2.6.12-rc2
2005-04-16 15:20:36 -07:00
srat.h
Linux-2.6.12-rc2
2005-04-16 15:20:36 -07:00
stat.h
Linux-2.6.12-rc2
2005-04-16 15:20:36 -07:00
statfs.h
Linux-2.6.12-rc2
2005-04-16 15:20:36 -07:00
string.h
Add "memory" clobbers to the x86 inline asm of strncmp and friends
2005-06-24 10:39:17 -07:00
suspend.h
[PATCH] i386: Use loaddebug macro consistently
2005-04-16 15:24:46 -07:00
system.h
[PATCH] i386/x86_64 segment register access update
2005-05-01 08:58:48 -07:00
termbits.h
Linux-2.6.12-rc2
2005-04-16 15:20:36 -07:00
termios.h
Linux-2.6.12-rc2
2005-04-16 15:20:36 -07:00
thread_info.h
[PATCH] streamline preempt_count type across archs
2005-06-23 09:45:19 -07:00
timer.h
[PATCH] Platform SMIs and their interferance with tsc based delay calibration
2005-06-23 09:45:08 -07:00
timex.h
[PATCH] x86: cpu_khz type fix
2005-06-23 09:45:11 -07:00
tlb.h
Linux-2.6.12-rc2
2005-04-16 15:20:36 -07:00
tlbflush.h
[PATCH] seccomp: tsc disable
2005-06-27 15:11:44 -07:00
topology.h
[PATCH] sched: sched tuning
2005-06-25 16:24:42 -07:00
types.h
[PATCH] sab: consolidate kmem_bufctl_t
2005-09-05 00:05:48 -07:00
uaccess.h
Linux-2.6.12-rc2
2005-04-16 15:20:36 -07:00
ucontext.h
Linux-2.6.12-rc2
2005-04-16 15:20:36 -07:00
unaligned.h
Linux-2.6.12-rc2
2005-04-16 15:20:36 -07:00
unistd.h
[PATCH] inotify
2005-07-12 20:38:38 -07:00
user.h
Linux-2.6.12-rc2
2005-04-16 15:20:36 -07:00
vga.h
Linux-2.6.12-rc2
2005-04-16 15:20:36 -07:00
vic.h
Linux-2.6.12-rc2
2005-04-16 15:20:36 -07:00
vm86.h
Linux-2.6.12-rc2
2005-04-16 15:20:36 -07:00
voyager.h
Linux-2.6.12-rc2
2005-04-16 15:20:36 -07:00
xor.h
Linux-2.6.12-rc2
2005-04-16 15:20:36 -07:00