kernel-fxtec-pro1x/arch/x86/include/asm
Tejun Heo e59a1bb2fd x86: fix pageattr handling for lpage percpu allocator and re-enable it
lpage allocator aliases a PMD page for each cpu and returns whatever
is unused to the page allocator.  When the pageattr of the recycled
pages are changed, this makes the two aliases point to the overlapping
regions with different attributes which isn't allowed and known to
cause subtle data corruption in certain cases.

This can be handled in simliar manner to the x86_64 highmap alias.
pageattr code should detect if the target pages have PMD alias and
split the PMD alias and synchronize the attributes.

pcpur allocator is updated to keep the allocated PMD pages map sorted
in ascending address order and provide pcpu_lpage_remapped() function
which binary searches the array to determine whether the given address
is aliased and if so to which address.  pageattr is updated to use
pcpu_lpage_remapped() to detect the PMD alias and split it up as
necessary from cpa_process_alias().

Jan Beulich spotted the original problem and incorrect usage of vaddr
instead of laddr for lookup.

With this, lpage percpu allocator should work correctly.  Re-enable
it.

[ Impact: fix subtle lpage pageattr bug and re-enable lpage ]

Signed-off-by: Tejun Heo <tj@kernel.org>
Reported-by: Jan Beulich <JBeulich@novell.com>
Cc: Andi Kleen <andi@firstfloor.org>
Cc: Ingo Molnar <mingo@elte.hu>
2009-06-22 11:56:24 +09:00
..
uv x86, UV: Fix macros for multiple coherency domains 2009-06-08 18:57:47 +02:00
visws
xen Xen: Add virt_to_pfn helper function 2009-04-08 11:51:46 -07:00
a.out-core.h
a.out.h
acpi.h
aes.h
agp.h
alternative-asm.h
alternative.h x86: clean up alternative.h 2009-04-28 17:42:08 +02:00
amd_iommu.h amd-iommu: disable IOMMU hardware on shutdown 2009-06-15 15:20:40 +02:00
amd_iommu_types.h Merge branches 'amd-iommu/fixes', 'amd-iommu/debug', 'amd-iommu/suspend-resume' and 'amd-iommu/extended-allocator' into amd-iommu/2.6.31 2009-05-28 18:23:56 +02:00
apic.h Merge branch 'x86-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip 2009-06-10 16:15:14 -07:00
apicdef.h x86: display extended apic registers with print_local_APIC and cpu_debug code 2009-05-11 14:37:36 +02:00
apicnum.h
apm.h
asm.h
atomic.h
atomic_32.h Merge branch 'linus' into x86/urgent 2009-06-17 08:59:10 +02:00
atomic_64.h asm-generic: rename atomic.h to atomic-long.h 2009-06-11 21:02:17 +02:00
auxvec.h
bios_ebda.h
bitops.h
bitsperlong.h asm-generic: introduce asm/bitsperlong.h 2009-06-11 21:02:14 +02:00
boot.h x86, boot: make kernel_alignment adjustable; new bzImage fields 2009-05-11 17:44:39 -07:00
bootparam.h x86: add extension fields for bootloader type and version 2009-05-11 17:45:06 -07:00
bug.h
bugs.h
byteorder.h
cache.h
cacheflush.h Merge branch 'tracing/core-v2' into tracing-for-linus 2009-04-02 00:49:02 +02:00
calgary.h
calling.h
checksum.h
checksum_32.h
checksum_64.h
cmpxchg.h
cmpxchg_32.h
cmpxchg_64.h
compat.h
cpu.h
cpu_debug.h x86: cpu_debug: Remove model information to reduce encoding-decoding 2009-06-07 12:22:56 +02:00
cpufeature.h Merge branch 'kvm-updates/2.6.31' of git://git.kernel.org/pub/scm/virt/kvm/kvm 2009-06-11 10:03:30 -07:00
cpumask.h x86: unify cpu_callin_mask/cpu_callout_mask/cpu_initialized_mask/cpu_sibling_setup_mask 2009-03-13 14:49:54 +10:30
cputime.h
current.h
debugreg.h
delay.h
desc.h x86: de-assembler-ize asm/desc.h 2009-06-17 21:35:10 -07:00
desc_defs.h
device.h
div64.h
dma-mapping.h dma-mapping: x86: use asm-generic/dma-mapping-common.h 2009-06-18 13:03:58 -07:00
dma.h
dmi.h x86/dmi: fix dmi_alloc() section mismatches 2009-03-23 17:20:50 +01:00
do_timer.h
ds.h x86, ds: support Core i7 2009-04-07 13:36:36 +02:00
dwarf2.h
e820.h x86: e820 fix various signedness issues in setup.c and e820.c 2009-03-23 15:02:05 +05:30
edac.h
efi.h x86: EFI: Back efi_ioremap with init_memory_mapping instead of FIX_MAP 2009-03-04 19:20:16 +01:00
elf.h
emergency-restart.h
entry_arch.h Merge branch 'linus' into x86/mce3 2009-06-11 23:31:52 +02:00
errno.h
fb.h
fcntl.h
fixmap.h x86: fix set_fixmap to use phys_addr_t 2009-04-10 20:27:13 +02:00
floppy.h
frame.h
ftrace.h tracing/syscalls: support for syscalls tracing on x86 2009-03-13 16:57:42 +01:00
futex.h
gart.h
genapic.h
geode.h
gpio.h
hardirq.h Merge branch 'linus' into x86/mce3 2009-06-11 23:31:52 +02:00
highmem.h x86: unify kmap_atomic_pfn() and iomap_atomic_prot_pfn() 2009-03-11 15:47:46 +01:00
hpet.h
hugetlb.h
hw_irq.h Merge branch 'linus' into x86/mce3 2009-06-11 23:31:52 +02:00
hypertransport.h
hypervisor.h
i387.h Merge branch 'x86-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip 2009-06-10 16:15:14 -07:00
i8253.h
i8259.h x86: move x86_quirk_pre_intr_init() to irqinit_32.c 2009-04-10 14:35:53 +02:00
ia32.h generic compat_sys_ustat 2009-03-27 14:43:57 -04:00
ia32_unistd.h
idle.h
init.h x86: move function and variable declarations to asm/init.h 2009-03-05 14:17:18 +01:00
io.h x86: fix set_fixmap to use phys_addr_t 2009-04-10 20:27:13 +02:00
io_32.h
io_64.h
io_apic.h x86, apic: introduce io_apic_irq_attr 2009-05-18 08:38:55 +02:00
ioctl.h
ioctls.h
iomap.h x86: added 'ifndef _ASM_X86_IOMAP_H' to iomap.h 2009-04-30 19:26:11 +02:00
iommu.h
ipcbuf.h
ipi.h
irq.h x86: UV, SGI RTC: add generic system vector 2009-03-04 20:25:37 +01:00
irq_regs.h
irq_remapping.h x86: x2apic, IR: Clean up X86_X2APIC and INTR_REMAP config checks 2009-04-21 09:08:25 +02:00
irq_vectors.h Merge branch 'linus' into x86/mce3 2009-06-11 23:31:52 +02:00
irqflags.h
ist.h
k8.h x86: k8 convert node_to_k8_nb_misc() from a macro to an inline function 2009-04-15 12:12:36 +02:00
Kbuild
kdebug.h
kexec.h x86, kexec: x86_64: add kexec jump support for x86_64 2009-03-10 18:13:25 -07:00
kgdb.h
kmap_types.h kmap_types: make most arches use generic header file 2009-06-16 19:47:51 -07:00
kmemcheck.h kmemcheck: add the kmemcheck core 2009-06-13 15:37:30 +02:00
kprobes.h
kvm.h KVM: Enable MSI-X for KVM assigned device 2009-06-10 11:48:23 +03:00
kvm_host.h KVM: VMX: Rename rmode.active to rmode.vm86_active 2009-06-10 11:49:00 +03:00
kvm_para.h
kvm_x86_emulate.h KVM: Deal with interrupt shadow state for emulated instructions 2009-06-10 11:48:54 +03:00
ldt.h
lguest.h lguest: PAE support 2009-06-12 22:27:08 +09:30
lguest_hcall.h lguest: PAE support 2009-06-12 22:27:08 +09:30
linkage.h x86: shrink __ALIGN and __ALIGN_STR definitions 2009-03-11 12:39:28 +01:00
local.h
mach_timer.h
mach_traps.h
math_emu.h
mc146818rtc.h
mca.h
mca_dma.h
mce.h x86, mce: mce.h cleanup 2009-06-16 16:56:10 -07:00
microcode.h x86: microcode: use smp_call_function_single instead of set_cpus_allowed, cleanup of synchronization logic 2009-05-12 10:36:44 +02:00
mman.h asm-generic: rename termios.h, signal.h and mman.h 2009-06-11 21:01:52 +02:00
mmconfig.h
mmu.h
mmu_context.h
mmx.h
mmzone.h
mmzone_32.h bootmem, x86: further fixes for arch-specific bootmem wrapping 2009-03-01 16:06:56 +09:00
mmzone_64.h mm: clean up for early_pfn_to_nid() 2009-02-18 15:37:55 -08:00
module.h
mpspec.h x86: enable_update_mptable should be a macro 2009-05-28 01:59:05 +02:00
mpspec_def.h
msgbuf.h
msidef.h x86, x2apic: enable fault handling for intr-remapping 2009-03-17 15:38:59 -07:00
msr-index.h Merge branch 'linus' into x86/mce3 2009-06-11 23:31:52 +02:00
msr.h x86: msr.h linux/types.h is only required for __KERNEL__ 2009-06-17 18:56:01 +02:00
mtrr.h
mutex.h
mutex_32.h
mutex_64.h
nmi.h x86, nmi: Use predefined numbers instead of hardcoded one 2009-06-07 16:22:02 +02:00
nops.h
numa.h
numa_32.h x86: set_highmem_pages_init() cleanup 2009-03-03 13:13:15 +01:00
numa_64.h x86, mm: Fix node_possible_map logic 2009-05-18 09:21:04 +02:00
numaq.h
olpc.h
page.h asm-generic: rename page.h and uaccess.h 2009-06-11 21:02:17 +02:00
page_32.h
page_32_types.h x86: page_types.h unification of declarations 2009-04-14 11:44:45 +02:00
page_64.h
page_64_types.h x86, 64-bit: Clean up user address masking 2009-06-20 15:40:00 -07:00
page_types.h x86: page_types.h unification of declarations 2009-04-14 11:44:45 +02:00
param.h
paravirt.h Merge branch 'x86-xen-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip 2009-06-10 16:16:27 -07:00
parport.h
pat.h x86, PAT: Remove duplicate memtype reserve in devmem mmap 2009-04-10 13:55:48 +02:00
pci-direct.h
pci-functions.h
pci.h Merge git://git.kernel.org/pub/scm/linux/kernel/git/rusty/linux-2.6-cpumask 2009-04-05 10:33:07 -07:00
pci_64.h x86/dma: unify definition of pci_unmap_addr* and pci_unmap_len macros 2009-04-03 13:13:45 +02:00
pci_x86.h
percpu.h x86: fix pageattr handling for lpage percpu allocator and re-enable it 2009-06-22 11:56:24 +09:00
perf_counter.h perf_counter: Make set_perf_counter_pending() declaration common 2009-06-15 16:12:26 +02:00
pgalloc.h
pgtable-2level.h x86: with the last user gone, remove set_pte_present 2009-03-19 14:04:19 +01:00
pgtable-2level_types.h
pgtable-3level.h x86: with the last user gone, remove set_pte_present 2009-03-19 14:04:19 +01:00
pgtable-3level_types.h
pgtable.h x86: unify pte_hidden 2009-06-15 15:49:20 +02:00
pgtable_32.h x86: Add NMI types for kmap_atomic, fix 2009-06-15 17:20:03 +02:00
pgtable_32_types.h module: merge module_alloc() finally 2009-06-12 21:47:03 +09:30
pgtable_64.h x86, 64-bit: Clean up user address masking 2009-06-20 15:40:00 -07:00
pgtable_64_types.h x86: 46 bit physical address support on 64 bits 2009-05-05 19:10:18 -07:00
pgtable_types.h x86: make _PAGE_HIDDEN conditional 2009-06-15 15:49:19 +02:00
poll.h
posix_types.h
posix_types_32.h
posix_types_64.h
prctl.h
processor-cyrix.h
processor-flags.h
processor.h Merge branch 'tracing-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip 2009-06-10 19:53:40 -07:00
proto.h
ptrace-abi.h x86, ptrace: remove CONFIG guards around declarations 2009-02-24 18:23:35 +01:00
ptrace.h Merge branch 'tracing-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip 2009-06-10 19:53:40 -07:00
pvclock-abi.h
pvclock.h
rdc321x_defs.h
reboot.h
reboot_fixups.h
required-features.h x86-64: remove PGE from must-have feature list 2009-04-08 11:51:46 -07:00
resource.h
resume-trace.h
rio.h
rtc.h
rwlock.h
rwsem.h
scatterlist.h
seccomp.h
seccomp_32.h x86-64: seccomp: fix 32/64 syscall hole 2009-03-02 15:41:30 -08:00
seccomp_64.h x86-64: seccomp: fix 32/64 syscall hole 2009-03-02 15:41:30 -08:00
sections.h x86: add brk allocation for very, very early allocations 2009-03-14 15:37:14 -07:00
segment.h
sembuf.h
serial.h
setup.h x86: move x86_quirk_pre_intr_init() to irqinit_32.c 2009-04-10 14:35:53 +02:00
setup_arch.h
shmbuf.h
shmparam.h
sigcontext.h x86: add linux kernel support for YMM state 2009-04-12 13:08:56 +02:00
sigcontext32.h
sigframe.h
siginfo.h
signal.h asm-generic: rename termios.h, signal.h and mman.h 2009-06-11 21:01:52 +02:00
smp.h x86: read apic ID in the !acpi_lapic case 2009-05-12 12:22:06 +02:00
smpboot_hooks.h
socket.h
sockios.h
sparsemem.h x86: 46 bit physical address support on 64 bits 2009-05-05 19:10:18 -07:00
spinlock.h x86: Fix performance regression caused by paravirt_ops on native kernels 2009-05-15 20:07:42 +02:00
spinlock_types.h
srat.h
stackprotector.h
stacktrace.h
stat.h
statfs.h
string.h
string_32.h x86: add hooks for kmemcheck 2009-06-15 12:40:02 +02:00
string_64.h x86: add hooks for kmemcheck 2009-06-15 12:40:02 +02:00
suspend.h
suspend_32.h pm: cleanup includes 2009-04-01 08:59:16 -07:00
suspend_64.h
svm.h KVM: Fix unneeded instruction skipping during task switching. 2009-06-10 11:48:38 +03:00
swab.h
swiotlb.h
sync_bitops.h
sys_ia32.h generic compat_sys_ustat 2009-03-27 14:43:57 -04:00
syscall.h
syscalls.h x86: clean up declarations and variables 2009-04-12 15:20:16 +02:00
system.h x86: add forward decl for tss_struct 2009-03-02 12:07:49 +01:00
system_64.h
tce.h
termbits.h
termios.h x86: fix ktermios-termio conversion 2009-06-11 08:50:59 -07:00
thread_info.h kmemcheck: add hooks for the page allocator 2009-06-15 15:48:33 +02:00
time.h
timer.h sched, x86: Fix cpufreq + sched_clock() TSC scaling 2009-06-17 16:03:54 +02:00
timex.h time: move PIT_TICK_RATE to linux/timex.h 2009-06-16 19:47:27 -07:00
tlb.h
tlbflush.h x86: make zap_low_mapping could be used early 2009-06-12 13:50:24 +03:00
topology.h sched: Don't export sched_mc_power_savings on multi-socket single core system 2009-05-11 23:57:56 +02:00
trampoline.h
traps.h Merge branch 'x86-xen-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip 2009-06-10 16:16:27 -07:00
tsc.h
types.h asm-generic: introduce asm/bitsperlong.h 2009-06-11 21:02:14 +02:00
uaccess.h x86, 64-bit: Clean up user address masking 2009-06-20 15:40:00 -07:00
uaccess_32.h x86, mm: dont use non-temporal stores in pagecache accesses 2009-03-02 11:06:49 +01:00
uaccess_64.h x86, mm: dont use non-temporal stores in pagecache accesses 2009-03-02 11:06:49 +01:00
ucontext.h
unaligned.h
unistd.h
unistd_32.h Merge branch 'core/signal' into perfcounters/core 2009-04-30 21:16:49 +02:00
unistd_64.h Merge branch 'core/signal' into perfcounters/core 2009-04-30 21:16:49 +02:00
user.h
user32.h
user_32.h
user_64.h
vdso.h
vga.h
vgtod.h
virtext.h KVM: SVM: Move EFER and MSR constants to generic x86 code 2009-03-24 11:02:46 +02:00
vm86.h
vmi.h
vmi_time.h
vmware.h
vmx.h KVM: Add VT-x machine check support 2009-06-10 12:27:08 +03:00
vsyscall.h
xcr.h
xor.h x86: add hooks for kmemcheck 2009-06-15 12:40:02 +02:00
xor_32.h
xor_64.h
xsave.h x86: add linux kernel support for YMM state 2009-04-12 13:08:56 +02:00