diff options
author | Andi Kleen <ak@suse.de> | 2006-09-26 04:52:37 -0400 |
---|---|---|
committer | Andi Kleen <andi@basil.nowhere.org> | 2006-09-26 04:52:37 -0400 |
commit | f2c2cca3acef8b253a36381d9b469ad4fb08563a (patch) | |
tree | 564dc8e108324a8409bc49b133a0ba0d7895ec38 | |
parent | 5e6b0bfe5b452957b7be4b6ef181cd41880f8359 (diff) |
[PATCH] Remove APIC version/cpu capability mpparse checking/printing
ACPI went to great trouble to get the APIC version and CPU capabilities
of different CPUs before passing them to the mpparser. But all
that data was used was to print it out. Actually it even faked some data
based on the boot cpu, not on the actual CPU being booted.
Remove all this code because it's not needed.
Cc: len.brown@intel.com
Signed-off-by: Andi Kleen <ak@suse.de>
-rw-r--r-- | arch/x86_64/kernel/io_apic.c | 13 | ||||
-rw-r--r-- | arch/x86_64/kernel/mpparse.c | 52 |
2 files changed, 17 insertions, 48 deletions
diff --git a/arch/x86_64/kernel/io_apic.c b/arch/x86_64/kernel/io_apic.c index afac3dbb3729..0491019d4c8d 100644 --- a/arch/x86_64/kernel/io_apic.c +++ b/arch/x86_64/kernel/io_apic.c | |||
@@ -1748,19 +1748,6 @@ device_initcall(ioapic_init_sysfs); | |||
1748 | 1748 | ||
1749 | #define IO_APIC_MAX_ID 0xFE | 1749 | #define IO_APIC_MAX_ID 0xFE |
1750 | 1750 | ||
1751 | int __init io_apic_get_version (int ioapic) | ||
1752 | { | ||
1753 | union IO_APIC_reg_01 reg_01; | ||
1754 | unsigned long flags; | ||
1755 | |||
1756 | spin_lock_irqsave(&ioapic_lock, flags); | ||
1757 | reg_01.raw = io_apic_read(ioapic, 1); | ||
1758 | spin_unlock_irqrestore(&ioapic_lock, flags); | ||
1759 | |||
1760 | return reg_01.bits.version; | ||
1761 | } | ||
1762 | |||
1763 | |||
1764 | int __init io_apic_get_redir_entries (int ioapic) | 1751 | int __init io_apic_get_redir_entries (int ioapic) |
1765 | { | 1752 | { |
1766 | union IO_APIC_reg_01 reg_01; | 1753 | union IO_APIC_reg_01 reg_01; |
diff --git a/arch/x86_64/kernel/mpparse.c b/arch/x86_64/kernel/mpparse.c index d63f849aea2c..32b6977f80c0 100644 --- a/arch/x86_64/kernel/mpparse.c +++ b/arch/x86_64/kernel/mpparse.c | |||
@@ -41,7 +41,6 @@ int acpi_found_madt; | |||
41 | * Various Linux-internal data structures created from the | 41 | * Various Linux-internal data structures created from the |
42 | * MP-table. | 42 | * MP-table. |
43 | */ | 43 | */ |
44 | unsigned char apic_version [MAX_APICS]; | ||
45 | DECLARE_BITMAP(mp_bus_not_pci, MAX_MP_BUSSES); | 44 | DECLARE_BITMAP(mp_bus_not_pci, MAX_MP_BUSSES); |
46 | int mp_bus_id_to_pci_bus [MAX_MP_BUSSES] = { [0 ... MAX_MP_BUSSES-1] = -1 }; | 45 | int mp_bus_id_to_pci_bus [MAX_MP_BUSSES] = { [0 ... MAX_MP_BUSSES-1] = -1 }; |
47 | 46 | ||
@@ -94,24 +93,21 @@ static int __init mpf_checksum(unsigned char *mp, int len) | |||
94 | static void __cpuinit MP_processor_info (struct mpc_config_processor *m) | 93 | static void __cpuinit MP_processor_info (struct mpc_config_processor *m) |
95 | { | 94 | { |
96 | int cpu; | 95 | int cpu; |
97 | unsigned char ver; | ||
98 | cpumask_t tmp_map; | 96 | cpumask_t tmp_map; |
97 | char *bootup_cpu = ""; | ||
99 | 98 | ||
100 | if (!(m->mpc_cpuflag & CPU_ENABLED)) { | 99 | if (!(m->mpc_cpuflag & CPU_ENABLED)) { |
101 | disabled_cpus++; | 100 | disabled_cpus++; |
102 | return; | 101 | return; |
103 | } | 102 | } |
104 | 103 | ||
105 | printk(KERN_INFO "Processor #%d %d:%d APIC version %d\n", | ||
106 | m->mpc_apicid, | ||
107 | (m->mpc_cpufeature & CPU_FAMILY_MASK)>>8, | ||
108 | (m->mpc_cpufeature & CPU_MODEL_MASK)>>4, | ||
109 | m->mpc_apicver); | ||
110 | |||
111 | if (m->mpc_cpuflag & CPU_BOOTPROCESSOR) { | 104 | if (m->mpc_cpuflag & CPU_BOOTPROCESSOR) { |
112 | Dprintk(" Bootup CPU\n"); | 105 | bootup_cpu = " (Bootup-CPU)"; |
113 | boot_cpu_id = m->mpc_apicid; | 106 | boot_cpu_id = m->mpc_apicid; |
114 | } | 107 | } |
108 | |||
109 | printk(KERN_INFO "Processor #%d%s\n", m->mpc_apicid, bootup_cpu); | ||
110 | |||
115 | if (num_processors >= NR_CPUS) { | 111 | if (num_processors >= NR_CPUS) { |
116 | printk(KERN_WARNING "WARNING: NR_CPUS limit of %i reached." | 112 | printk(KERN_WARNING "WARNING: NR_CPUS limit of %i reached." |
117 | " Processor ignored.\n", NR_CPUS); | 113 | " Processor ignored.\n", NR_CPUS); |
@@ -129,17 +125,7 @@ static void __cpuinit MP_processor_info (struct mpc_config_processor *m) | |||
129 | return; | 125 | return; |
130 | } | 126 | } |
131 | #endif | 127 | #endif |
132 | ver = m->mpc_apicver; | ||
133 | |||
134 | physid_set(m->mpc_apicid, phys_cpu_present_map); | 128 | physid_set(m->mpc_apicid, phys_cpu_present_map); |
135 | /* | ||
136 | * Validate version | ||
137 | */ | ||
138 | if (ver == 0x0) { | ||
139 | printk(KERN_ERR "BIOS bug, APIC version is 0 for CPU#%d! fixing up to 0x10. (tell your hw vendor)\n", m->mpc_apicid); | ||
140 | ver = 0x10; | ||
141 | } | ||
142 | apic_version[m->mpc_apicid] = ver; | ||
143 | if (m->mpc_cpuflag & CPU_BOOTPROCESSOR) { | 129 | if (m->mpc_cpuflag & CPU_BOOTPROCESSOR) { |
144 | /* | 130 | /* |
145 | * bios_cpu_apicid is required to have processors listed | 131 | * bios_cpu_apicid is required to have processors listed |
@@ -179,8 +165,8 @@ static void __init MP_ioapic_info (struct mpc_config_ioapic *m) | |||
179 | if (!(m->mpc_flags & MPC_APIC_USABLE)) | 165 | if (!(m->mpc_flags & MPC_APIC_USABLE)) |
180 | return; | 166 | return; |
181 | 167 | ||
182 | printk("I/O APIC #%d Version %d at 0x%X.\n", | 168 | printk("I/O APIC #%d at 0x%X.\n", |
183 | m->mpc_apicid, m->mpc_apicver, m->mpc_apicaddr); | 169 | m->mpc_apicid, m->mpc_apicaddr); |
184 | if (nr_ioapics >= MAX_IO_APICS) { | 170 | if (nr_ioapics >= MAX_IO_APICS) { |
185 | printk(KERN_ERR "Max # of I/O APICs (%d) exceeded (found %d).\n", | 171 | printk(KERN_ERR "Max # of I/O APICs (%d) exceeded (found %d).\n", |
186 | MAX_IO_APICS, nr_ioapics); | 172 | MAX_IO_APICS, nr_ioapics); |
@@ -413,13 +399,10 @@ static inline void __init construct_default_ISA_mptable(int mpc_default_type) | |||
413 | * 2 CPUs, numbered 0 & 1. | 399 | * 2 CPUs, numbered 0 & 1. |
414 | */ | 400 | */ |
415 | processor.mpc_type = MP_PROCESSOR; | 401 | processor.mpc_type = MP_PROCESSOR; |
416 | /* Either an integrated APIC or a discrete 82489DX. */ | 402 | processor.mpc_apicver = 0; |
417 | processor.mpc_apicver = mpc_default_type > 4 ? 0x10 : 0x01; | ||
418 | processor.mpc_cpuflag = CPU_ENABLED; | 403 | processor.mpc_cpuflag = CPU_ENABLED; |
419 | processor.mpc_cpufeature = (boot_cpu_data.x86 << 8) | | 404 | processor.mpc_cpufeature = 0; |
420 | (boot_cpu_data.x86_model << 4) | | 405 | processor.mpc_featureflag = 0; |
421 | boot_cpu_data.x86_mask; | ||
422 | processor.mpc_featureflag = boot_cpu_data.x86_capability[0]; | ||
423 | processor.mpc_reserved[0] = 0; | 406 | processor.mpc_reserved[0] = 0; |
424 | processor.mpc_reserved[1] = 0; | 407 | processor.mpc_reserved[1] = 0; |
425 | for (i = 0; i < 2; i++) { | 408 | for (i = 0; i < 2; i++) { |
@@ -448,7 +431,7 @@ static inline void __init construct_default_ISA_mptable(int mpc_default_type) | |||
448 | 431 | ||
449 | ioapic.mpc_type = MP_IOAPIC; | 432 | ioapic.mpc_type = MP_IOAPIC; |
450 | ioapic.mpc_apicid = 2; | 433 | ioapic.mpc_apicid = 2; |
451 | ioapic.mpc_apicver = mpc_default_type > 4 ? 0x10 : 0x01; | 434 | ioapic.mpc_apicver = 0; |
452 | ioapic.mpc_flags = MPC_APIC_USABLE; | 435 | ioapic.mpc_flags = MPC_APIC_USABLE; |
453 | ioapic.mpc_apicaddr = 0xFEC00000; | 436 | ioapic.mpc_apicaddr = 0xFEC00000; |
454 | MP_ioapic_info(&ioapic); | 437 | MP_ioapic_info(&ioapic); |
@@ -640,12 +623,11 @@ void __cpuinit mp_register_lapic (u8 id, u8 enabled) | |||
640 | 623 | ||
641 | processor.mpc_type = MP_PROCESSOR; | 624 | processor.mpc_type = MP_PROCESSOR; |
642 | processor.mpc_apicid = id; | 625 | processor.mpc_apicid = id; |
643 | processor.mpc_apicver = GET_APIC_VERSION(apic_read(APIC_LVR)); | 626 | processor.mpc_apicver = 0; |
644 | processor.mpc_cpuflag = (enabled ? CPU_ENABLED : 0); | 627 | processor.mpc_cpuflag = (enabled ? CPU_ENABLED : 0); |
645 | processor.mpc_cpuflag |= (boot_cpu ? CPU_BOOTPROCESSOR : 0); | 628 | processor.mpc_cpuflag |= (boot_cpu ? CPU_BOOTPROCESSOR : 0); |
646 | processor.mpc_cpufeature = (boot_cpu_data.x86 << 8) | | 629 | processor.mpc_cpufeature = 0; |
647 | (boot_cpu_data.x86_model << 4) | boot_cpu_data.x86_mask; | 630 | processor.mpc_featureflag = 0; |
648 | processor.mpc_featureflag = boot_cpu_data.x86_capability[0]; | ||
649 | processor.mpc_reserved[0] = 0; | 631 | processor.mpc_reserved[0] = 0; |
650 | processor.mpc_reserved[1] = 0; | 632 | processor.mpc_reserved[1] = 0; |
651 | 633 | ||
@@ -700,7 +682,7 @@ void __init mp_register_ioapic(u8 id, u32 address, u32 gsi_base) | |||
700 | 682 | ||
701 | set_fixmap_nocache(FIX_IO_APIC_BASE_0 + idx, address); | 683 | set_fixmap_nocache(FIX_IO_APIC_BASE_0 + idx, address); |
702 | mp_ioapics[idx].mpc_apicid = id; | 684 | mp_ioapics[idx].mpc_apicid = id; |
703 | mp_ioapics[idx].mpc_apicver = io_apic_get_version(idx); | 685 | mp_ioapics[idx].mpc_apicver = 0; |
704 | 686 | ||
705 | /* | 687 | /* |
706 | * Build basic IRQ lookup table to facilitate gsi->io_apic lookups | 688 | * Build basic IRQ lookup table to facilitate gsi->io_apic lookups |
@@ -711,9 +693,9 @@ void __init mp_register_ioapic(u8 id, u32 address, u32 gsi_base) | |||
711 | mp_ioapic_routing[idx].gsi_end = gsi_base + | 693 | mp_ioapic_routing[idx].gsi_end = gsi_base + |
712 | io_apic_get_redir_entries(idx); | 694 | io_apic_get_redir_entries(idx); |
713 | 695 | ||
714 | printk(KERN_INFO "IOAPIC[%d]: apic_id %d, version %d, address 0x%x, " | 696 | printk(KERN_INFO "IOAPIC[%d]: apic_id %d, address 0x%x, " |
715 | "GSI %d-%d\n", idx, mp_ioapics[idx].mpc_apicid, | 697 | "GSI %d-%d\n", idx, mp_ioapics[idx].mpc_apicid, |
716 | mp_ioapics[idx].mpc_apicver, mp_ioapics[idx].mpc_apicaddr, | 698 | mp_ioapics[idx].mpc_apicaddr, |
717 | mp_ioapic_routing[idx].gsi_start, | 699 | mp_ioapic_routing[idx].gsi_start, |
718 | mp_ioapic_routing[idx].gsi_end); | 700 | mp_ioapic_routing[idx].gsi_end); |
719 | } | 701 | } |