diff options
author | Yinghai Lu <yhlu.kernel@gmail.com> | 2008-07-13 17:30:35 -0400 |
---|---|---|
committer | Ingo Molnar <mingo@elte.hu> | 2008-07-14 03:24:16 -0400 |
commit | 87a1c441e1aeaf00f97e63dfc310ea7684ec9dda (patch) | |
tree | 0fb5840a55d833cb0be7f000e8c85e02ff1f5336 /arch/x86/kernel/cpu/intel_64.c | |
parent | 32b23e9a7331fce57eb0af52e19e8409fdef831b (diff) |
x86: get x86_phys_bits early
when try to make hpet_enable use io_remap instead fixmap got
ioremap: invalid physical address fed00000
------------[ cut here ]------------
WARNING: at arch/x86/mm/ioremap.c:161 __ioremap_caller+0x8c/0x2f3()
Modules linked in:
Pid: 0, comm: swapper Not tainted 2.6.26-rc9-tip-01873-ga9827e7-dirty #358
Call Trace:
[<ffffffff8026615e>] warn_on_slowpath+0x6c/0xa7
[<ffffffff802e2313>] ? __slab_alloc+0x20a/0x3fb
[<ffffffff802d85c5>] ? mpol_new+0x88/0x17d
[<ffffffff8022a4f4>] ? mcount_call+0x5/0x31
[<ffffffff8022a4f4>] ? mcount_call+0x5/0x31
[<ffffffff8024b0d2>] __ioremap_caller+0x8c/0x2f3
[<ffffffff80e86dbd>] ? hpet_enable+0x39/0x241
[<ffffffff8022a4f4>] ? mcount_call+0x5/0x31
[<ffffffff8024b466>] ioremap_nocache+0x2a/0x40
[<ffffffff80e86dbd>] hpet_enable+0x39/0x241
[<ffffffff80e7a1f6>] hpet_time_init+0x21/0x4e
[<ffffffff80e730e9>] start_kernel+0x302/0x395
[<ffffffff80e722aa>] x86_64_start_reservations+0xb9/0xd4
[<ffffffff80e722fe>] ? x86_64_init_pda+0x39/0x4f
[<ffffffff80e72400>] x86_64_start_kernel+0xec/0x107
---[ end trace a7919e7f17c0a725 ]---
it seems for amd system that is set later...
try to move setting early in early_identify_cpu.
and remove same code for intel and centaur.
Signed-off-by: Yinghai Lu <yhlu.kernel@gmail.com>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
Diffstat (limited to 'arch/x86/kernel/cpu/intel_64.c')
-rw-r--r-- | arch/x86/kernel/cpu/intel_64.c | 10 |
1 files changed, 0 insertions, 10 deletions
diff --git a/arch/x86/kernel/cpu/intel_64.c b/arch/x86/kernel/cpu/intel_64.c index 02f773399e39..1019c58d39f0 100644 --- a/arch/x86/kernel/cpu/intel_64.c +++ b/arch/x86/kernel/cpu/intel_64.c | |||
@@ -54,9 +54,6 @@ static void __cpuinit srat_detect_node(void) | |||
54 | 54 | ||
55 | static void __cpuinit init_intel(struct cpuinfo_x86 *c) | 55 | static void __cpuinit init_intel(struct cpuinfo_x86 *c) |
56 | { | 56 | { |
57 | /* Cache sizes */ | ||
58 | unsigned n; | ||
59 | |||
60 | init_intel_cacheinfo(c); | 57 | init_intel_cacheinfo(c); |
61 | if (c->cpuid_level > 9) { | 58 | if (c->cpuid_level > 9) { |
62 | unsigned eax = cpuid_eax(10); | 59 | unsigned eax = cpuid_eax(10); |
@@ -78,13 +75,6 @@ static void __cpuinit init_intel(struct cpuinfo_x86 *c) | |||
78 | if (cpu_has_bts) | 75 | if (cpu_has_bts) |
79 | ds_init_intel(c); | 76 | ds_init_intel(c); |
80 | 77 | ||
81 | n = c->extended_cpuid_level; | ||
82 | if (n >= 0x80000008) { | ||
83 | unsigned eax = cpuid_eax(0x80000008); | ||
84 | c->x86_virt_bits = (eax >> 8) & 0xff; | ||
85 | c->x86_phys_bits = eax & 0xff; | ||
86 | } | ||
87 | |||
88 | if (c->x86 == 15) | 78 | if (c->x86 == 15) |
89 | c->x86_cache_alignment = c->x86_clflush_size * 2; | 79 | c->x86_cache_alignment = c->x86_clflush_size * 2; |
90 | if (c->x86 == 6) | 80 | if (c->x86 == 6) |