linux/arch/x86
Tejun Heo d5e28005a1 percpu, x86: don't use PMD_SIZE as embedded atom_size on 32bit
With the embed percpu first chunk allocator, x86 uses either PAGE_SIZE
or PMD_SIZE for atom_size.  PMD_SIZE is used when CPU supports PSE so
that percpu areas are aligned to PMD mappings and possibly allow using
PMD mappings in vmalloc areas in the future.  Using larger atom_size
doesn't waste actual memory; however, it does require larger vmalloc
space allocation later on for !first chunks.

With reasonably sized vmalloc area, PMD_SIZE shouldn't be a problem
but x86_32 at this point is anything but reasonable in terms of
address space and using larger atom_size reportedly leads to frequent
percpu allocation failures on certain setups.

As there is no reason to not use PMD_SIZE on x86_64 as vmalloc space
is aplenty and most x86_64 configurations support PSE, fix the issue
by always using PMD_SIZE on x86_64 and PAGE_SIZE on x86_32.

v2: drop cpu_has_pse test and make x86_64 always use PMD_SIZE and
    x86_32 PAGE_SIZE as suggested by hpa.

Signed-off-by: Tejun Heo <tj@kernel.org>
Reported-by: Yanmin Zhang <yanmin.zhang@intel.com>
Reported-by: ShuoX Liu <shuox.liu@intel.com>
Acked-by: H. Peter Anvin <hpa@zytor.com>
LKML-Reference: <4F97BA98.6010001@intel.com>
Cc: stable@vger.kernel.org
2012-05-08 09:42:18 -07:00
..
boot x86, boot: Correct CFLAGS for hostprogs 2012-03-22 12:42:51 -07:00
configs iommu: Rename the DMAR and INTR_REMAP config options 2011-09-21 10:22:03 +02:00
crypto Merge git://git.kernel.org/pub/scm/linux/kernel/git/herbert/crypto-2.6 2012-03-22 20:19:30 -07:00
ia32 Disintegrate asm/system.h for X86 2012-03-28 18:11:12 +01:00
include/asm Disintegrate and delete asm/system.h 2012-03-28 15:58:21 -07:00
kernel percpu, x86: don't use PMD_SIZE as embedded atom_size on 32bit 2012-05-08 09:42:18 -07:00
kvm Merge branch 'kvm-updates/3.4' of git://git.kernel.org/pub/scm/virt/kvm/kvm 2012-03-28 14:35:31 -07:00
lguest lguest: Make sure interrupt is allocated ok by lguest_setup_irq 2012-01-12 15:44:47 +10:30
lib Merge branch 'x86-atomic-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip 2012-03-22 09:23:57 -07:00
math-emu
mm Disintegrate and delete asm/system.h 2012-03-28 15:58:21 -07:00
net net: bpf_jit: fix BPF_S_LDX_B_MSH compilation 2012-03-19 17:41:44 -04:00
oprofile Merge branch 'core' of git://amd64.org/linux/rric into perf/core 2011-11-15 11:05:18 +01:00
pci Merge branch 'linux-next' of git://git.kernel.org/pub/scm/linux/kernel/git/jbarnes/pci 2012-03-23 14:02:12 -07:00
platform Merge branch 'for_linus' of git://cavan.codon.org.uk/platform-drivers-x86 2012-03-28 14:20:23 -07:00
power Disintegrate and delete asm/system.h 2012-03-28 15:58:21 -07:00
syscalls x86-32: Fix typo for mq_getsetattr in syscall table 2012-03-22 12:42:41 -07:00
tools x86/tools: Add decoded instruction dump mode 2011-12-05 14:53:23 +01:00
um Merge branch 'for-linus-3.4-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/rw/uml 2012-03-27 18:29:53 -07:00
vdso coredump: remove VM_ALWAYSDUMP flag 2012-03-23 16:58:42 -07:00
video x86: fix up files really needing to include module.h 2011-10-31 19:30:36 -04:00
xen One tiny feature that accidentally got lost in the initial git pull: 2012-03-24 12:20:25 -07:00
.gitignore x86/kprobes: Add arch/x86/tools/insn_sanity to .gitignore 2012-01-16 08:21:59 +01:00
Kbuild
Kconfig Merge branch 'for_linus' of git://cavan.codon.org.uk/platform-drivers-x86 2012-03-28 14:20:23 -07:00
Kconfig.cpu x86: Tighten dependencies of CPU_SUP_*_32 2012-03-08 10:57:34 +01:00
Kconfig.debug Merge branch 'x86-platform-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip 2012-01-11 19:13:40 -08:00
Makefile x86: Generate system call tables and unistd_*.h from tables 2011-11-17 13:35:37 -08:00
Makefile_32.cpu
Makefile.um um: most of the SUBARCH uses can be killed 2012-03-25 00:29:56 +01:00