[PATCH] x86_64: Increase the maximum number of local APICs to the maximum
This is needed for large multinode IBM systems which have a sparse APIC space in clustered mode, fully covering the available 8 bits. The previous kernels would limit the local APIC number to 127, which caused it to reject some of the CPUs at boot. I increased the maximum and shrunk the apic_version array a bit to make up for that (the version is only 8 bit, so don't need an full int to store) Cc: Chris McDermott <lcm@us.ibm.com> Signed-off-by: Andi Kleen <ak@suse.de> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
This commit is contained in:
parent
9e43e1b7c7
commit
8893166ff8
2 changed files with 9 additions and 6 deletions
|
@ -42,7 +42,7 @@ int acpi_found_madt;
|
|||
* Various Linux-internal data structures created from the
|
||||
* MP-table.
|
||||
*/
|
||||
int apic_version [MAX_APICS];
|
||||
unsigned char apic_version [MAX_APICS];
|
||||
unsigned char mp_bus_id_to_type [MAX_MP_BUSSES] = { [0 ... MAX_MP_BUSSES-1] = -1 };
|
||||
int mp_bus_id_to_pci_bus [MAX_MP_BUSSES] = { [0 ... MAX_MP_BUSSES-1] = -1 };
|
||||
|
||||
|
@ -108,7 +108,8 @@ static int __init mpf_checksum(unsigned char *mp, int len)
|
|||
|
||||
static void __init MP_processor_info (struct mpc_config_processor *m)
|
||||
{
|
||||
int ver, cpu;
|
||||
int cpu;
|
||||
unsigned char ver;
|
||||
static int found_bsp=0;
|
||||
|
||||
if (!(m->mpc_cpuflag & CPU_ENABLED)) {
|
||||
|
@ -133,12 +134,14 @@ static void __init MP_processor_info (struct mpc_config_processor *m)
|
|||
}
|
||||
|
||||
cpu = num_processors++;
|
||||
|
||||
if (m->mpc_apicid > MAX_APICS) {
|
||||
|
||||
#if MAX_APICS < 255
|
||||
if ((int)m->mpc_apicid > MAX_APICS) {
|
||||
printk(KERN_ERR "Processor #%d INVALID. (Max ID: %d).\n",
|
||||
m->mpc_apicid, MAX_APICS);
|
||||
return;
|
||||
}
|
||||
#endif
|
||||
ver = m->mpc_apicver;
|
||||
|
||||
physid_set(m->mpc_apicid, phys_cpu_present_map);
|
||||
|
|
|
@ -16,7 +16,7 @@
|
|||
/*
|
||||
* A maximum of 255 APICs with the current APIC ID architecture.
|
||||
*/
|
||||
#define MAX_APICS 128
|
||||
#define MAX_APICS 255
|
||||
|
||||
struct intel_mp_floating
|
||||
{
|
||||
|
@ -173,7 +173,7 @@ extern int smp_found_config;
|
|||
extern void find_smp_config (void);
|
||||
extern void get_smp_config (void);
|
||||
extern int nr_ioapics;
|
||||
extern int apic_version [MAX_APICS];
|
||||
extern unsigned char apic_version [MAX_APICS];
|
||||
extern int mp_irq_entries;
|
||||
extern struct mpc_config_intsrc mp_irqs [MAX_IRQ_SOURCES];
|
||||
extern int mpc_default_type;
|
||||
|
|
Loading…
Reference in a new issue