aboutsummaryrefslogtreecommitdiffstats
path: root/arch/x86/kernel
diff options
context:
space:
mode:
authorH. Peter Anvin <hpa@zytor.com>2009-06-09 21:20:39 -0400
committerH. Peter Anvin <hpa@zytor.com>2009-06-16 20:47:31 -0400
commit95ee14e4379c5e19c0897c872350570402014742 (patch)
tree64479687a95b07bad97b886f1e97c3a391daf934 /arch/x86/kernel
parent8a4a6182fd43c46ed8c12e26b4669854bcad300a (diff)
x86: cap iomem_resource to addressable physical memory
iomem_resource is by default initialized to -1, which means 64 bits of physical address space if 64-bit resources are enabled. However, x86 CPUs cannot address 64 bits of physical address space. Thus, we want to cap the physical address space to what the union of all CPU can actually address. Without this patch, we may end up assigning inaccessible values to uninitialized 64-bit PCI memory resources. Signed-off-by: H. Peter Anvin <hpa@zytor.com> Cc: Matthew Wilcox <matthew@wil.cx> Cc: Jesse Barnes <jbarnes@virtuousgeek.org> Cc: Martin Mares <mj@ucw.cz> Cc: stable@kernel.org
Diffstat (limited to 'arch/x86/kernel')
-rw-r--r--arch/x86/kernel/cpu/common.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/arch/x86/kernel/cpu/common.c b/arch/x86/kernel/cpu/common.c
index 3ffdcfa9abdf..5b9cb8839cae 100644
--- a/arch/x86/kernel/cpu/common.c
+++ b/arch/x86/kernel/cpu/common.c
@@ -853,6 +853,9 @@ static void __cpuinit identify_cpu(struct cpuinfo_x86 *c)
853#if defined(CONFIG_NUMA) && defined(CONFIG_X86_64) 853#if defined(CONFIG_NUMA) && defined(CONFIG_X86_64)
854 numa_add_cpu(smp_processor_id()); 854 numa_add_cpu(smp_processor_id());
855#endif 855#endif
856
857 /* Cap the iomem address space to what is addressable on all CPUs */
858 iomem_resource.end &= (1ULL << c->x86_phys_bits) - 1;
856} 859}
857 860
858#ifdef CONFIG_X86_64 861#ifdef CONFIG_X86_64