android_kernel_motorola_sm6225/arch/x86_64/kernel
Vivek Goyal 0dbf7028c0 [PATCH] x86: __pa and __pa_symbol address space separation
Currently __pa_symbol is for use with symbols in the kernel address
map and __pa is for use with pointers into the physical memory map.
But the code is implemented so you can usually interchange the two.

__pa which is much more common can be implemented much more cheaply
if it is it doesn't have to worry about any other kernel address
spaces.  This is especially true with a relocatable kernel as
__pa_symbol needs to peform an extra variable read to resolve
the address.

There is a third macro that is added for the vsyscall data
__pa_vsymbol for finding the physical addesses of vsyscall pages.

Most of this patch is simply sorting through the references to
__pa or __pa_symbol and using the proper one.  A little of
it is continuing to use a physical address when we have it
instead of recalculating it several times.

swapper_pgd is now NULL.  leave_mm now uses init_mm.pgd
and init_mm.pgd is initialized at boot (instead of compile time)
to the physmem virtual mapping of init_level4_pgd.  The
physical address changed.

Except for the for EMPTY_ZERO page all of the remaining references
to __pa_symbol appear to be during kernel initialization.  So this
should reduce the cost of __pa in the common case, even on a relocated
kernel.

As this is technically a semantic change we need to be on the lookout
for anything I missed.  But it works for me (tm).

Signed-off-by: Eric W. Biederman <ebiederm@xmission.com>
Signed-off-by: Vivek Goyal <vgoyal@in.ibm.com>
Signed-off-by: Andi Kleen <ak@suse.de>
2007-05-02 19:27:07 +02:00
..
acpi [PATCH] x86-64: 64bit ACPI wakeup trampoline 2007-05-02 19:27:07 +02:00
cpufreq [PATCH] X86_P4_CLOCKMOD must select CPU_FREQ_TABLE 2007-03-18 11:35:07 -07:00
aperture.c [PATCH] x86: Allow disabling early pci scans with pci=noearly or disallowing conf1 2006-09-26 10:52:41 +02:00
apic.c [PATCH] x86-64: fix cpu MHz reporting on constant_tsc cpus 2007-05-02 19:27:06 +02:00
asm-offsets.c [CRYPTO] all: Pass tfm instead of ctx to algorithms 2006-06-26 17:34:39 +10:00
audit.c [PATCH] audit: AUDIT_PERM support 2006-09-11 13:32:30 -04:00
crash.c [PATCH] Kexec / Kdump: Unify elf note code 2006-12-07 08:39:46 -08:00
crash_dump.c [PATCH] kdump: read previous kernel's memory 2006-01-10 08:01:28 -08:00
e820.c [PATCH] x86-64: fix section mismatch warnings 2007-03-16 21:07:36 +01:00
early-quirks.c [PATCH] x86: revert x86_64-mm-fix-the-irqbalance-quirk-for-e7320-e7520-e7525 2007-05-02 19:27:04 +02:00
early_printk.c [PATCH] x86-64: Fix early printk to use standard ISA mapping 2007-05-02 19:27:06 +02:00
entry.S [PATCH] x86-64: a few missing entry.S annotations 2007-05-02 19:27:05 +02:00
functionlist [NET]: Get rid of alloc_skb_from_cache 2007-04-17 13:13:16 -07:00
genapic.c [PATCH] x86: adjust inclusion of asm/fixmap.h 2007-05-02 19:27:04 +02:00
genapic_flat.c [PATCH] x86: adjust inclusion of asm/fixmap.h 2007-05-02 19:27:04 +02:00
head.S [PATCH] x86-64: Remove the identity mapping as early as possible 2007-05-02 19:27:07 +02:00
head64.c [PATCH] x86-64: Remove the identity mapping as early as possible 2007-05-02 19:27:07 +02:00
hpet.c failsafe mechanism to HPET clock calibration 2007-04-14 21:44:03 -07:00
i387.c [PATCH] x86-64: use BUILD_BUG_ON in FPU code 2006-12-07 02:14:01 +01:00
i8259.c [PATCH] x86_64 irq: Fix comments after changing IRQ0_VECTOR from 0x20 to 0x30 2007-03-29 08:16:23 -07:00
init_task.c [PATCH] nsproxy: move init_nsproxy into kernel/nsproxy.c 2006-10-02 07:57:20 -07:00
io_apic.c [PATCH] x86_64: remove unusued 'flags' variable 2007-03-05 07:57:53 -08:00
ioport.c [PATCH] x86-64: Use constant instead of raw number in x86_64 ioperm.c 2007-02-13 13:26:22 +01:00
irq.c [PATCH] x86-64: survive having no irq mapping for a vector 2007-02-13 13:26:25 +01:00
k8.c cache_k8_northbridges() overflows beyond allocation 2007-04-16 18:09:18 -07:00
kprobes.c [PATCH] kprobes: enable booster on the preemptible kernel 2006-12-07 08:39:38 -08:00
ldt.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
machine_kexec.c [PATCH] x86: __pa and __pa_symbol address space separation 2007-05-02 19:27:07 +02:00
Makefile [PATCH] x86-64: remove clustered APIC mode 2007-05-02 19:27:04 +02:00
mce.c [PATCH] x86-64: Allow to run a program when a machine check event is detected 2007-02-13 13:26:23 +01:00
mce_amd.c [PATCH] x86-64: Allow to run a program when a machine check event is detected 2007-02-13 13:26:23 +01:00
mce_intel.c [PATCH] x86: Add a cumulative thermal throttle event counter. 2006-09-26 10:52:42 +02:00
module.c [PATCH] Generic BUG for x86-64 2006-12-08 08:28:39 -08:00
mpparse.c [PATCH] x86: default to physical mode on hotplug CPU kernels 2007-05-02 19:27:04 +02:00
nmi.c [PATCH] x86-64: x86_64 make NMI use PERFCTR1 for architectural perfmon (take 2) 2007-05-02 19:27:05 +02:00
pci-calgary.c [PATCH] x86-64: dma_ops as const 2007-05-02 19:27:06 +02:00
pci-dma.c [PATCH] x86-64: improved iommu documentation 2007-02-13 13:26:21 +01:00
pci-gart.c [PATCH] x86-64: dma_ops as const 2007-05-02 19:27:06 +02:00
pci-nommu.c [PATCH] x86-64: dma_ops as const 2007-05-02 19:27:06 +02:00
pci-swiotlb.c [PATCH] x86-64: dma_ops as const 2007-05-02 19:27:06 +02:00
pmtimer.c [PATCH] time: x86_64: convert x86_64 to use GENERIC_TIME 2007-02-16 08:14:00 -08:00
process.c [PATCH] Fix atomicity of TIF update in flush_thread() for x86_64 2007-03-18 11:35:08 -07:00
ptrace.c [PATCH] x86-64: Check return value of putreg in PTRACE_SETREGS 2007-02-13 13:26:24 +01:00
reboot.c [PATCH] x86_64: Move export symbols to their C functions 2006-06-26 10:48:22 -07:00
relocate_kernel.S [PATCH] Avoid overwriting the current pgd (V4, x86_64) 2006-09-26 10:52:38 +02:00
setup.c [PATCH] x86: __pa and __pa_symbol address space separation 2007-05-02 19:27:07 +02:00
setup64.c [PATCH] x86-64: Remove the identity mapping as early as possible 2007-05-02 19:27:07 +02:00
signal.c [PATCH] Remove all traces of signal number conversion 2006-09-26 10:52:41 +02:00
smp.c [PATCH] x86: __pa and __pa_symbol address space separation 2007-05-02 19:27:07 +02:00
smpboot.c [PATCH] x86: revert x86_64-mm-fix-the-irqbalance-quirk-for-e7320-e7520-e7525 2007-05-02 19:27:04 +02:00
stacktrace.c [PATCH] x86-64: do not always end the stack trace with ULONG_MAX 2007-02-13 13:26:21 +01:00
suspend.c [PATCH] x86: Move swsusp __pa() dependent code to arch portion 2007-05-02 19:27:07 +02:00
suspend_asm.S [PATCH] Change the name of pagedir_nosave 2006-09-26 08:49:01 -07:00
sys_x86_64.c [PATCH] namespaces: utsname: switch to using uts namespaces 2006-10-02 07:57:21 -07:00
syscall.c Remove obsolete #include <linux/config.h> 2006-06-30 19:25:36 +02:00
tce.c Remove all inclusions of <linux/config.h> 2006-10-04 03:38:54 -04:00
time.c [PATCH] x86-64: fix cpu MHz reporting on constant_tsc cpus 2007-05-02 19:27:06 +02:00
trampoline.S [PATCH] x86-64: 64bit PIC SMP trampoline 2007-05-02 19:27:07 +02:00
traps.c [PATCH] x86: Fix i386 and x86_64 fault information pollution 2007-05-02 19:27:05 +02:00
tsc.c [PATCH] x86-64: fix cpu MHz reporting on constant_tsc cpus 2007-05-02 19:27:06 +02:00
tsc_sync.c [PATCH] x86-64: fix cpu MHz reporting on constant_tsc cpus 2007-05-02 19:27:06 +02:00
vmlinux.lds.S [PATCH] x86: Fix gcc 4.2 _proxy_pda workaround 2007-04-16 10:30:27 +02:00
vsmp.c [PATCH] Fix build breakage with CONFIG_X86_VSMP 2006-10-12 12:25:27 -07:00
vsyscall.c [PATCH] x86: __pa and __pa_symbol address space separation 2007-05-02 19:27:07 +02:00
x8664_ksyms.c [PATCH] x86: Export _proxy_pda for gcc 4.2 2007-03-16 21:07:36 +01:00